Estou usando um MCUs AVR de 8 bits para criar robôs seguidores de linha com os alunos há alguns anos. Agora eu gostaria de avançar para um ARM Cortex-M3 porque gostaria de adicionar mais recursos que exigem muita CPU, como odometria e fusão de sensores.
Os requisitos são:
- 8 entradas analógicas,
- 4 saídas PWM,
- I 2 C,
- 2 entradas de codificador em quadratura,
- E / S serial,
- Auto-programação sem fio, sem acesso físico ao robô.
- Cadeia de ferramentas multiplataforma + IDE (OS X, Linux, Windows).
Os passos que tomei até agora são:
Estou usando esta placa baseada em STM32F103C8. Acredito que este MCU tenha tudo o que preciso, incluindo o 2 x QEI que planejei implementar em software, mas este aqui o possui em hardware, ótimo:
- Placa http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programador http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
Eu segui isso para configurar meu conjunto de ferramentas + IDE:
Descobri que a documentação deste chip está espalhada por vários PDFs, que baixei:
- Folha de dados do STM32F103x8 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Manual de referência http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Alguns outros documentos, como o AN2606 (modos de inicialização da memória), PM0075 (manual de programação do flash) e AN3155 (protocolo do carregador de inicialização serial), que provavelmente serão necessários no futuro.
Também baixei a biblioteca periférica padrão do STM32F10x, mas que, por sua vez, recomendou que eu adquirisse o STM32CubeF1 mais novo, que acredito ser apenas uma renomeação de marketing do que foi mencionado acima, então obtive os dois:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
Por fim, também recebi o "Guia Definitivo do ARM Cortex-M3", de Joseph Yiu, que estou lendo enquanto espero a chegada das pranchas.
Minhas perguntas são:
Estou um pouco impressionado com a documentação, para dizer o mínimo, e nem tenho certeza se entendi tudo. Por exemplo, a folha de dados e o manual de referência afirmam que o chip possui 3 temporizadores capazes de inserir entradas codificadas em quadratura. Mas não consigo encontrar documentação dos registros que controlam os cronômetros em qualquer lugar nos PDFs acima. o que estou perdendo?
Devo usar a Biblioteca Periférica Padrão (mais antiga?) Ou a coisa do cubo (mais recente?)? Qual é a diferença? Entendo que ambas as bibliotecas me impedem de manipular registros diretamente e são o caminho recomendado. Estou certo?
Onde está a documentação para as bibliotecas (além dos comentários incorporados ao doxygen, que são legais e tudo, mas eu prefiro ter um html / pdf pesquisável)?
Escolhi o Eclipse + GCC ARM + OpenOCD como minha cadeia de ferramentas, porque considero que essa é a única opção que será executada nos 3 principais sistemas operacionais sem tamanho de código ou outras limitações. Existem mais opções?