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?
fonte
Respostas:
No que diz respeito às folhas de dados, elas são realmente divididas. "Manual de referência" são descrições complexas de como fazer as coisas, configuração e considerações detalhadas sobre todo o MCU. "Folha de dados", por outro lado, é apenas uma breve descrição dos recursos, pinagens, pacotes da MCU, etc. Também existe um documento muito útil para todas as linhas do STM32 (F1,2 ... 7) "Introdução ao desenvolvimento de hardware do STM32F7xxxx MCU", que fornece muitas informações, caso você queira criar um quadro personalizado. Em comparação com os AVRs, as descrições dos registros às vezes são um pouco afastadas da descrição principal de um capítulo específico.
O STM32CubeMX não é uma biblioteca, apenas um programa útil da ST, que permite definir pinagens, suas configurações, definir relógios de sistemas etc. e, no final, gerar um código e todo o projeto. O projeto pode ser gerado especialmente para o Eclipse (System Workbench for STM32), no qual você acabou de importar este projeto e está pronto para prosseguir. A nova biblioteca é HAL ("camada de abstração de hardware") e tenta usá-la. Essa é a novidade e, às vezes, é difícil encontrar exemplos na Internet, mas não ensine aos alunos tecnologias ultrapassadas. O HAL é conveniente de usar e possui documentação, então acho que é a melhor escolha.
Qual biblioteca? De qualquer forma, não deve ser um problema para pesquisá-los no Google, eu acho.
Mesmo que você queira usar apenas um sistema operacional (como Windows), o Eclipse (AC6 = ambiente de trabalho do sistema para STM32) é - eu acho - a melhor opção. Por exemplo, existe o uVision 5 do Keil - mas esse é realmente um IDE terrível - ele carece da maioria dos recursos que o IDE deve oferecer (refratores, cliques e pesquisas, verificação adequada de erros, localização de referências e muito mais). Portanto, apesar de tudo, o Eclipse é praticamente a única opção razoável para o IDE para STM32.
fonte