Comment commencer avec la carte STM32F103C8T6?

10

J'utilise un MCU AVR 8 bits pour construire des robots suiveurs de ligne avec des étudiants depuis quelques années maintenant. Maintenant, je voudrais passer à un ARM Cortex-M3 parce que j'aimerais ajouter des fonctionnalités plus gourmandes en CPU comme l'odométrie et la fusion de capteurs.

Les exigences sont les suivantes:

  • 8 entrées analogiques,
  • 4 sorties PWM,
  • I 2 C,
  • 2 entrées codeur en quadrature,
  • E / S série,
  • Auto-programmation sans fil sans accès physique au robot.
  • Chaîne d'outils multiplateforme + IDE (OS X, Linux, Windows).

Les mesures que j'ai prises jusqu'à présent sont les suivantes:

J'utilise cette carte basée sur STM32F103C8. Je crois que ce MCU a tout ce dont j'ai besoin, y compris les 2 x QEI que j'avais prévu de mettre en œuvre dans le logiciel, mais celui-ci se trouve dans le matériel, donc génial:

J'ai suivi cela pour configurer ma chaîne d'outils + IDE:

J'ai constaté que la documentation de cette puce est dispersée dans un certain nombre de fichiers PDF que j'ai téléchargés:

J'ai également téléchargé la bibliothèque de périphériques standard STM32F10x, mais cela m'a recommandé d'obtenir le nouveau STM32CubeF1, qui, je crois, n'est qu'un renom marketing de ce qui précède, j'ai donc obtenu les deux:

Enfin, j'ai également "The Definitive Guide to the ARM Cortex-M3" de Joseph Yiu, que je lis en attendant l'arrivée des planches.

Mes questions sont:

  1. Je suis un peu dépassé par la documentation, c'est le moins qu'on puisse dire, et je ne suis même pas sûr d'avoir tout compris. Par exemple, la fiche technique et le manuel de référence indiquent que la puce possède 3 temporisateurs capables d'entrées codées en quadrature. Mais, je ne trouve aucune documentation sur les registres qui contrôlent les temporisateurs dans les PDF ci-dessus. Qu'est-ce que je rate?

  2. Dois-je utiliser la bibliothèque périphérique standard (la plus ancienne?) Ou le cube (le plus récent?)? Quelle est la différence? Je comprends que les deux bibliothèques m'évitent de manipuler directement les registres et sont la voie à suivre recommandée. Ai-je raison?

  3. Où est la documentation pour les bibliothèques (à part les commentaires doxygen intégrés, qui sont agréables et tout, mais je préfère avoir un html / pdf consultable)?

  4. J'ai choisi Eclipse + GCC ARM + OpenOCD comme ma chaîne d'outils car je considère que c'est la seule option qui fonctionnera sur les 3 principaux OS sans taille de code ou autres limitations. Y a-t-il d'autres options?

jamarju
la source
2
La page 324 du Manuel de référence contient des détails sur l'interface du codeur utilisant TIM1 et TIM8.
Leon Heller
1
Puis-je suggérer des systèmes intégrés - façonner le monde ARM-Cortex-M3, mais c'est de TI. J'ai également pu configurer Eclipse + GCC ARM + OpenOCD pour Ubuntu, c'était plutôt fastidieux et pas trop fiable, du moins pour moi.
Mahendra Gunawardena
1
Les solutions ARM-gcc sont en général assez stables et représentent l'option la plus portable du marché. L'accent a tendance à être davantage axé sur les builds pilotés par un Makefile ou l'automatisation de build, donc l'intégration avec les pratiques de développement de logiciels organisationnels existants est excellente. Quel IDE (le cas échéant) pour éditer et piloter des builds expérimentaux a tendance à être une décision beaucoup plus personnelle, et qui ne nécessite pas nécessairement autant d'efforts de développement d'outils. Personnellement, la dernière chose dont je veux m'occuper est une cible / chaîne d'outils qui suppose que je changerai les IDE juste pour travailler avec.
Chris Stratton

Réponses:

6
  1. En ce qui concerne les fiches techniques, elles sont en effet divisées. Le "manuel de référence" est une description complexe de la marche à suivre, de la configuration et des considérations détaillées sur l'ensemble du MCU. "Fiche technique" n'est d'autre part qu'une brève description des fonctionnalités, des brochages, des packages, etc. du MCU. Il existe également un document très utile pour chaque ligne STM32 (F1,2 ... 7) vous fournit de nombreuses informations si vous souhaitez concevoir une planche personnalisée. Par rapport aux AVR, les descriptions des registres sont parfois mises un peu à part de la description principale d'un chapitre particulier.

  2. STM32CubeMX n'est pas une bibliothèque, juste un programme utile de ST, qui vous permet de définir les brochages, ses configurations, de définir les horloges des systèmes, etc. puis, à la fin, de générer un code et l'ensemble du projet. Le projet peut être généré spécialement pour Eclipse (System Workbench pour STM32) dans lequel vous venez d'importer ce projet et vous êtes prêt à partir. La nouvelle bibliothèque est HAL ("couche d'abstraction matérielle") et essayez de l'utiliser. C'est la nouveauté et il est parfois difficile de trouver des exemples sur Internet, mais n'enseignez pas à vos élèves des technologies obsolètes. HAL est pratique à utiliser et a de la documentation, donc je pense que c'est un meilleur choix.

  3. Quelle bibliothèque? Quoi qu'il en soit, je ne pense pas que ce soit un problème de les rechercher sur Google.

  4. Même si vous souhaitez utiliser un seul système d'exploitation (comme Windows), Eclipse (AC6 = System workbench pour STM32) est - je pense - la meilleure option. Il y a par exemple l'uVision 5 de Keil - mais c'est vraiment un IDE terrible - il lui manque la plupart des fonctionnalités que l'IDE devrait offrir (réfraction, clic et recherche, vérification des erreurs appropriée, recherche de références et bien d'autres). Donc, dans l'ensemble, l'Eclipse est à peu près le seul choix raisonnable pour IDE pour STM32.

zupazt3
la source
3
En fait, vous pouvez utiliser à peu près n'importe quel IDE qui peut être créé pour piloter un compilateur externe.
Chris Stratton