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:
- Conseil http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programmeur http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
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:
- Fiche technique STM32F103x8 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Manuel de référence http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Quelques autres documents comme AN2606 (modes de démarrage de mémoire), PM0075 (manuel de programmation flash) et AN3155 (protocole de chargeur de démarrage série), dont j'aurai probablement besoin à l'avenir.
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:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
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:
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?
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?
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)?
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?