STM32F401CDUGQ / STM32F411CEU6GQ Blackpill Arduino Tutorial Can Bus

  • Hallo Gemeinde!



    Ergänzend zu der Nutzung von Arduino's oder auch ESP möchte ich heute mein Tutorial zur Nutzung von STM32 Boards vorstellen.


    Zusätzlich erkläre ich wie man ein Arduino Sketch auf den STM läd.




    Warum das ganze? Ganz einfach, Performance!


    Dazu füge ich einfach mal die Specs eines STMF401CDUGQ , einem Arduino NANO und einem STM32F411CEU6GQ an.


    Ich erspare mir diesbezüglich die lange Rede , lesen könnt Ihr selbst.


    Jedoch ist schnell ersichtlich das ein STM32F411CEU6GQ mit 100 MHz mehr Leistung hat als ein NANO mit 16 MHz.





    Kaufen könnt Ihr so einen STM z.B. hier, ebenso den ST-Link v2 den Ihr benötigen werdet:



    Hier ein Bild des ST-Link:



    Ebenso benötigen wir einen MCP 2515 wie auch bei einem Arduino zur Can-Bus kommunikation, hier ein Beispiellink zum bestellen:


    https://de.aliexpress.com/item/1005005995120126.html



    Grundlagen der Arduino Nutzung sind zwingend notwendig.


    Neben dem STM und dem ST-Link, benötigt Ihre fiolgende kostenlose Softwares:


    Arduino IDE:


    Software
    Open-source electronic prototyping platform enabling users to create interactive electronic objects.
    www.arduino.cc


    STM32CubeIDE 1.14.1:


    https://www.st.com/en/development-tools/stm32cubeide.html


    Virtual Comport Driver (optional):


    https://www.st.com/en/development-tools/stsw-stm32102.html



    Nach der Software Installation können wir loslegen.


    Wir öffnen dazu zuerst die Arduino IDE und klicken auf DATEI -> Voreinstellungen:


    Danach werden wir wie im folgenden Bild rechts neben dem blau markierten Text das Icon anklicken:





    Ein neues Fenster öffnet sich:




    Gibt hier nun folgende Adresse im Textfeld ein und bestätigt mit OK:


    https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json



    Als nächstes laden wir über den Boardverwalter die STM-Boards in Arduino.

    Dies ermöglicht eine spätere Auswahl verschiedener Boards.




    Auch hier öffnet sich ein neues Fenster:



    Gibt in der Suchzeile "STM" ein.

    Installiert nun STM32 MCU based boards.


    Beendet nun die Arduino IDE, wir benötigen es derzeit nicht mehr.


    Startet nun STM32CubeIDE.

    Mit diesem Programm werden wir den Prozessor, seine Ausgänge und Eingänge sowie auch die entsprechenden HAL-Driver installieren und einstellen.


    Öffnet dazu ein neues Projekt:




    Je nachdem wo oder was Ihr bestellt habt, solltet ihr noch mal euren Chip auf dem STM kontrollieren, hier Beispielbilder um den Prozessor zu identifizieren:



    Habt Ihr festgestellt welcher Prozessor verbaut ist, könnt Ihr weitermachen, gibt den Namen eures Prozessors in der Suchmaske ein:



    Wählt euren Prozessor aus und bestätigt mit OK.






    Ein neues Fenster öffnet sich, gibt dem Projekt ein Namen und wählt die selben Einstellungen wie im folgenden Bild, bestätigt mit Finish:




    Folgend sollte das Programm nun aussehen:



    Nun können wir den Prozessor einstellen.

    Klickt als erstes auf den Reiter Syastem Core.

    Klickt RCC an.

    Stellt High und Low Speed clock jeweils auf Crystal Ceramic Resonator.

    Dadurch werden die PC14 und PC15 sowie PH0 und 1 belegt:



    Danach klicken wir rechts am Pozessor mit einem Mausklick auf PIN A0, wir können diesen somit auf GPIO-Output festlegen:



    Um den STM später als USB nutzen zu können, sollten wir es Ihm auch beibringen.

    Nach klick auf den Reiter Connectivity können wir auf USB_OTG_FS anwählen.

    Wir stellen MODE auf DEVICE_Only:





    Um das Turial weiter zu verfolgen, schaut euch Teil 2 des Tutorials an. :)

    5 Mal editiert, zuletzt von L005ER () aus folgendem Grund: Link zu Teil 2 gelöscht da Moderation Teil zwei angehangen hat. Link des Virtual Comport Driver Hinzugefügt.

  • Willkommen bei Teil 2 des Tutorials! :)


    Wir setzen also direkt fort.


    Ebenso müssen wir unter dem Reiter MIDDLEWARE and....USB_DEVICE anwählen.

    Hier stellen wir unter Class for FS IP "Communication Device Class (Virtual Comport) ein:







    Nun werden wir die SPI Ausgänge festlegen.

    Dazu wählen wir den Reiter Connectivity und klicken Spi 1 an.

    Unter MODE wählen wir FULL Duplex Master:




    Um das ganze Übersichtlicher zu gestalten, beschriften wir den PIN A0 auf dem Prozessor.

    Via rechtem Mausklick auf den PIN wähle wir die Option Enter User Label und nennen ihn CS PIN.




    Wir haben somit erfolgreich die Pinbelegung festgelegt und gleichzeitig den Verklemmungsplan erstellt:

    Jetzt müssen wir noch den Prozessor entsprechend einstellen.

    Wählt dazu CLOCK CONFIGURATION mittig oben im Bild.

    Eine Meldung erscheint die Ihr getrost mi NO beantworten könnt:





    Je nach STM Modell das Ihr benutzt, muss der Prozessor entsprechend eingestellt werden um nicht zu wenig Leiszung zu haben oder auch nicht zuviel.




    Hier die Einstellungen die Ihr übernehmen könnt für den STM32F401CDU6 bie 84Mhz:





    Hier die Einstellungen die Ihr übernehmen könnt für den STM32F411CEU6 bei 96 MHz:




    Habt Ihr alles fertig, dann Speichert nun euer Projekt, beendet das Programm aber nicht.


    Wir werden den STM nun mit dem ST-Link verkabeln.

    Leider stimmt bei den meisten STM's die Beschriftung nicht.


    Hier ein Beispiel eines nicht korrekt beschrifteten STM's.

    Die Beschriftungen von 3,3 V und SWDIO wurden gegenüber der Voderseite auf der Rückseite falsch beschriftet.

    Die richtige Beschriftung befindet sich auf der Rückseite:





    Daher zeige ich euch nun verschiedene Pläne die Ihr nutzen müsst, je nachdem ob die Beschriftung korrekt ist oder nicht.


    Anschlussplan bei korrekter Beschriftung:




    Anschlussplan bei inkorrekter Beschriftung:





    Wenn ihr korrekt angeklemmt habt, könnt Ihr den ST-Link in den USB-Ports eures Computers stecken.


    Nun klickt in der STM32 CUBE IDE auf DEBUG, der ST-Link muss eingesteckt werden, dan nach dem kompilieren des Codes

    die Daten direkt auf den STM übertragen werden:




    Sollte Alles korrekt sein, werden folgende Nachrichten angezeigt:




    Entfernt danach den ST-Link vom Computer und klemmt Ihn auch vom STM ab.

    Dieser Schritt ist wichtig, denn Ihr dürft nicht gleichzeitig den ST-Link mit Spannung versorgen und den STM via USB Kabel da dies

    ansonsten zu einem Kurzschluss führt.


    Nun öffnet den Gerätemanager unter Windows, unter Anschlüsse (COM & LPT) solltet ihr nun den STM finden:





    Wir verdrahten den STM nun wie auf folgendem Bild mit dem MCP2515:




    Entfernt das USB Kabel vom STM und klemmt den ST-Link wieder an.


    Öfnet die Arduino IDE.

    Wir weden die Einstellungen für das Board vornehmen.

    Achtet darauf das ihr EUER Board auswählt.

    Ihr benötigt keine Auswahl des Comports da wir den Sketch später via Serial Wire Debug (SWD) hochladen.

    Restliche Einstellungen sind die gleichen:



    Nun benötigen wir einen Sketch den wir aufspielen.


    Ich habe diesbezüglich folgenden sketch dazu genutzt zum testen:


    arduino-psa-diag/arduino-psa-diag/arduino-psa-diag.ino at master · ludwig-v/arduino-psa-diag
    Arduino sketch to send UDS / KWP diagnostic frames over CAN-BUS to PSA/Stellantis cars (Peugeot, Citroen, DS, Opel) - ludwig-v/arduino-psa-diag
    github.com


    Um den Sketch mit dem STM32 zu nutzen passen wir Ihn etwas an.



    WIr ergänzen unter Configuration:


    #define CS_PIN_CAN0 A4

    #define INT_PIN A0

    #define MISO_PIN_CAN0 A6

    #define MOSI_PIN A7

    #define SCK_PIN A5


    und löschen #define CS_PIN_CAN0 10.


    Optional können wir das optische Feedback durch blkinken einer LED an C13 ebenfalls im Sketch realisieren.


    Dazu ersetzen wir die Zeilen 683 bis 689 durch folgendes:


    void loop() {


    if (Serial.available() > 0) {

    recvWithTimeout();

    // Toggle the LED state

    digitalWrite(PC13, !digitalRead(PC13));

    } else {

    timerCallback();

    }

    }


    Nun verbinden wir unseren STM wieder mit dem ST-Link und laden den Sketch via SWD hoch.

    Nach erfolgreichem hochladen sollte folgendes in der Arduino IDE Nagezeigt werden:



    Entfernt den ST-Link und steckt euer USB Kabel an den STM.

    Öffnet den Terminal des Arduino IDE.


    Ihr könnt jetzt auf gewohnte Weise wie auch bei dem Arduino mit dem STM arbeiten.


    Solltet Ihr andere Terminals wie zum Beispiel YAT oder ähnliches nutzen, denkt daran RTS und DTR zu aktivieren, da ihr ansonsten keine Daten erhaltet.

    In Yat kann dies zum Beispiel mit der aktuellen Version wie folgt eingestellt werden :


    Terminal -> Settinsg -> Control Pin -> Haken bei RTS und DTR auf on.



    Ich hoffe euch hat das Turorial gefallen und der ein oder andere kann es nutzen!




    Hinweise:


    - Grundsätzlich kann dieses auch mit anderen Sketches für die Can-Bus Kommunikation durchgeführt werden.

    - Wenn der STM als Virtual Comport erkannt wird nach dem Ihr die Prozessor Einstellungen geflasht habt, müsst Ihr dies zuküntig nicht mehr tun.

  • Mittns

    Hat den Titel des Themas von „STM32F401CDUGQ / STM32F411CEU6GQ Blackpill Arduino Tutorial Can Bus Teil 1“ zu „STM32F401CDUGQ / STM32F411CEU6GQ Blackpill Arduino Tutorial Can Bus“ geändert.

Jetzt mitmachen!

Hey! Es scheint, als ob Dir dieser Austausch gefällt, aber Du hast bisher noch kein Benutzerkonto erstellt. Mit einem Konto kannst Du über neue Antworten informiert werden, Foto's in unsere Galerie hochladen, unsere Tools nutzen, anderen mit einem „Gefällt mir“ danken oder selbst dabei unterstützen, anderen zu helfen. Gemeinsam können wir dazu beitragen, diese Community zu etwas größerem zu machen.