Ich verwende seit einigen Jahren 8-Bit-AVR-MCUs, um mit Studenten Line-Follower-Roboter zu bauen. Jetzt möchte ich auf einen ARM Cortex-M3 umsteigen, weil ich einige CPU-intensivere Funktionen wie Kilometerzähler und Sensorfusion hinzufügen möchte.
Die Anforderungen sind:
- 8 analoge Eingänge,
- 4 PWM-Ausgänge,
- I 2 C,
- 2 Quadraturgebereingänge,
- serielle E / A,
- Drahtlose Selbstprogrammierung ohne physischen Zugriff auf den Roboter.
- Multiplattform-Toolchain + IDE (OS X, Linux, Windows).
Die Schritte, die ich bisher unternommen habe, sind:
Ich verwende diese STM32F103C8-basierte Karte. Ich glaube, diese MCU hat alles, was ich brauche, einschließlich der 2 x QEI, die ich in Software implementieren wollte, aber diese hat sie zufällig in Hardware, so großartig:
- Board http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programmierer http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
Ich habe dies befolgt, um meine Toolchain + IDE einzurichten:
Ich habe festgestellt, dass die Dokumentation für diesen Chip auf eine Reihe von PDFs verteilt ist, die ich heruntergeladen habe:
- STM32F103x8-Datenblatt http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Referenzhandbuch http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Einige andere Dokumente wie AN2606 (Speicherstartmodi), PM0075 (Flash-Programmierhandbuch) und AN3155 (serielles Bootloader-Protokoll), die ich wahrscheinlich in Zukunft benötigen werde.
Ich habe auch die Standard-Peripheriebibliothek STM32F10x heruntergeladen, aber das hat mir wiederum empfohlen, den neueren STM32CubeF1 zu erwerben, der meiner Meinung nach nur eine Marketing-Umbenennung der oben genannten ist, also habe ich beides erhalten:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
Schließlich habe ich auch "The Definitive Guide to the ARM Cortex-M3" von Joseph Yiu, den ich lese, während ich auf das Eintreffen der Boards warte.
Meine Fragen sind:
Ich bin ein bisschen überwältigt von der Dokumentation, um es gelinde auszudrücken, und ich bin mir nicht einmal sicher, ob ich alles habe. Das Datenblatt und das Referenzhandbuch geben beispielsweise an, dass der Chip über 3 Timer verfügt, die Quadratur-codierte Eingänge können. Ich kann jedoch keine Dokumentation der Register finden, die die Timer irgendwo in den obigen PDFs steuern. Was vermisse ich?
Soll ich die (ältere?) Standard-Peripheriebibliothek oder die (neuere?) Cube-Sache verwenden? Was ist der Unterschied? Ich verstehe, dass beide Bibliotheken mich davor bewahren, Register direkt zu manipulieren, und der empfohlene Weg sind. Habe ich recht?
Wo ist die Dokumentation für die Bibliotheken (neben den eingebetteten Sauerstoffkommentaren, die nett sind und alle, aber ich hätte lieber ein durchsuchbares HTML / PDF)?
Ich habe Eclipse + GCC ARM + OpenOCD als Toolchain ausgewählt, da dies meiner Meinung nach die einzige Option ist, die auf den drei Hauptbetriebssystemen ohne Codegröße oder andere Einschränkungen ausgeführt werden kann. Gibt es noch weitere Möglichkeiten?