Como começar com a placa STM32F103C8T6?

10

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:

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:

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:

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:

  1. 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?

  2. 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?

  3. 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)?

  4. 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?

jamarju
fonte
2
A página 324 do Manual de referência contém detalhes da interface do codificador usando TIM1 e TIM8.
Leon Heller
1
Posso sugerir sistemas embarcados - moldar o mundo ARM-Cortex-M3, mas é da TI. Também fui capaz de configurar o Eclipse + GCC ARM + OpenOCD para o ubuntu.
Mahendra Gunawardena
1
As soluções ARM-gcc são geralmente bastante estáveis ​​e são a opção mais portátil disponível no mercado. A ênfase tende a ser mais voltada para as compilações conduzidas por um Makefile ou automação de compilação, portanto, a integração com as práticas de desenvolvimento de software organizacional existentes é excelente. O IDE (se houver) para editar e direcionar compilações experimentais tende a ser uma decisão muito mais pessoal, e uma que não vê necessariamente tanto esforço de desenvolvimento de ferramentas para isso. Pessoalmente, a última coisa com a qual quero lidar é com um alvo / conjunto de ferramentas que pressupõe que eu mudarei os IDEs apenas para trabalhar com ele.
Chris Stratton

Respostas:

6
  1. 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.

  2. 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.

  3. Qual biblioteca? De qualquer forma, não deve ser um problema para pesquisá-los no Google, eu acho.

  4. 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.

zupazt3
fonte
3
Na verdade, você pode usar praticamente qualquer IDE que possa ser criado para conduzir um compilador externo.
Chris Stratton