Wie fange ich mit der STM32F103C8T6-Karte an?

10

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:

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:

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:

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:

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

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

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

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

Jamarju
quelle
2
Auf Seite 324 des Referenzhandbuchs finden Sie Details zur Encoder-Schnittstelle mit TIM1 und TIM8.
Leon Heller
1
Darf ich Embedded Systems vorschlagen - Shape The World ARM-Cortex-M3, aber es ist von TI. Außerdem konnte ich Eclipse + GCC ARM + OpenOCD für Ubuntu konfigurieren. Es war ziemlich langweilig und zumindest für mich nicht besonders zuverlässig.
Mahendra Gunawardena
1
ARM-gcc-Lösungen sind im Allgemeinen recht stabil und die tragbarste Option auf dem Markt. Der Schwerpunkt liegt in der Regel eher auf Builds, die von einem Makefile oder einer Build-Automatisierung gesteuert werden. Daher ist die Integration in vorhandene Softwareentwicklungspraktiken für Unternehmen hervorragend. Welche IDE (falls vorhanden) zum Bearbeiten und Ausführen von experimentellen Builds verwendet wird, ist in der Regel eine viel persönlichere Entscheidung, bei der nicht unbedingt so viel Aufwand für die Entwicklung von Tools erforderlich ist. Persönlich ist das Letzte, mit dem ich mich befassen möchte, eine Ziel- / Toolchain, die davon ausgeht, dass ich IDEs ändern werde, nur um damit zu arbeiten.
Chris Stratton

Antworten:

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

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

  3. Welche Bibliothek? Auf jeden Fall sollte es kein Problem sein, sie zu googeln, denke ich.

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

zupazt3
quelle
3
Tatsächlich können Sie nahezu jede IDE verwenden, mit der ein externer Compiler gesteuert werden kann.
Chris Stratton