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?
quelle
Antworten:
Datenblätter sind in der Tat geteilt. "Referenzhandbuch" enthält komplexe Beschreibungen der Vorgehensweise, Konfiguration und detaillierte Überlegungen zur gesamten MCU. "Datenblatt" ist andererseits nur eine kurze Beschreibung der MCU-Funktionen, Pinbelegungen, Pakete usw. Es gibt auch ein sehr hilfreiches Dokument für jede STM32-Zeile (F1,2 ... 7) "Erste Schritte mit der STM32F7xxxx MCU-Hardwareentwicklung", die bietet Ihnen viele Informationen, wenn Sie ein benutzerdefiniertes Board entwerfen möchten. Im Vergleich zu AVRs werden Registerbeschreibungen manchmal etwas von der Hauptbeschreibung eines bestimmten Kapitels entfernt.
STM32CubeMX ist keine Bibliothek, sondern nur ein nützliches Programm von ST, mit dem Sie Pinbelegungen, deren Konfigurationen, Systemuhren usw. einstellen und am Ende einen Code und das gesamte Projekt generieren können. Das Projekt kann speziell für Eclipse (System Workbench für STM32) generiert werden, in das Sie dieses Projekt einfach importieren und loslegen können. Die neue Bibliothek ist HAL ("Hardware-Abstraktionsschicht") und versuchen Sie, sie zu verwenden. Das ist das Neue und manchmal ist es schwierig, Beispiele im Internet zu finden, aber bringen Sie Ihren Schülern keine veralteten Technologien bei. HAL ist bequem zu bedienen und verfügt über Dokumentation. Ich denke, es ist die bessere Wahl.
Welche Bibliothek? Auf jeden Fall sollte es kein Problem sein, sie zu googeln, denke ich.
Auch wenn Sie nur ein Betriebssystem (wie Windows) verwenden möchten, ist Eclipse (AC6 = System Workbench für STM32) - glaube ich - die beste Option. Es gibt zum Beispiel Keils uVision 5 - aber das ist wirklich eine schreckliche IDE - es fehlen die meisten Funktionen, die die IDE bieten sollte (Refraktorisierung, Klicken und Suchen, ordnungsgemäße Fehlerprüfung, Auffinden von Referenzen und vieles mehr). Alles in allem ist die Eclipse also die einzig vernünftige Wahl für IDE für STM32.
quelle