Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Die Transceiver-Schaltung
- Schritt 2: Lesen und Schreiben auf den CAN-Bus
- Schritt 3: Knoten verbinden
- Schritt 4: Machen Sie die Platine
- Schritt 5: Erweiterung des Boards
- Schritt 6: Bestellen Sie Ihre Leiterplatten bei JLCPCB
- Schritt 7: Holen Sie sich Ihre Boards
Video: STM32 CAN-Schnittstelle - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Der Controller-Area-Network-Bus oder CAN-Bus ist dank seiner Hochgeschwindigkeitsfunktionen, seiner Zuverlässigkeit über große Reichweiten und seiner Störfestigkeit ein sehr effektives Kommunikationsprotokoll. Aus diesen Gründen hat sich die CAN-Kommunikation zum Standard in Automobiltechnologien und Umgebungen mit hohem Rauschen entwickelt. Geräte am CAN-Bus werden als Knoten bezeichnet. Alle Knoten am CAN-Bus sind parallel geschaltet, dh jeder Knoten ist mit allen anderen Knoten im Netzwerk verbunden. Ein einzelner CAN-Bus kann je nach Nachrichtenübertragungsrate bis zu 115 Knoten gleichzeitig haben, für die meisten Anwendungen werden jedoch bis zu 32 Geräte empfohlen. Es wird auch empfohlen, die Länge zwischen dem ersten und letzten Knoten weniger als 40 Meter auseinander zu halten.
Diese Schritt-für-Schritt-Anleitung zeigt Ihnen, wie Sie einen CAN-Knoten mit dem STM32-Mikrocontroller einrichten, einschließlich der Schaltung und einfachem C-Code zum Lesen und Schreiben auf den CAN-Bus
Lieferungen
Für jeden CAN-Knoten:
- 1x STM32 Breakout-Board (Nucleo, Blue Pill, andere)
- 1x MCP2551 CAN-Transceiver-IC
- 1x 0,1µF Kondensator
- 1x 120Ω Widerstand
- 1x 1kΩ Widerstand
- 1+ lesbarer Eingang (Taster, Schalter, Potentiometer, etc.) oder Ausgang (LED, MOSFET, etc.)
- 1x Dsub9-Anschluss
Schritt 1: Die Transceiver-Schaltung
Zur Kommunikation mit dem CAN-Bus verwenden wir den CAN-Transceiver-IC MCP2551. Der IC fungiert als zwischengeschaltetes Sender/Empfänger-Paar, um den STM32 mit dem CAN-Bus zu verbinden. Die Schaltung zum Einrichten dieses ICs ist recht einfach, aber es gibt ein paar Dinge zu beachten:
-
CAN_RX (Pin 4) und CAN_TX (Pin 1) auf dem MCP2551-Chip können nur an bestimmte Pins des STM32 gehen.
- Verbinden Sie beim STM32F1 Nucleo die RX-Leitung mit Pin PB8 und die TX-Leitung mit Pin PB9.
- Verbinden Sie auf der blauen Pille STM32F1 RX mit Pin PA11 und TX mit Pin PA12.
- Beachten Sie, dass diese Pinbelegungen Alternativen haben. Lesen Sie in den Handbüchern des Mikrocontrollers nach, welche Pins CAN_RD und CAN_TD unterstützen
- Wenn Sie ein Arduino oder ein Board ohne eingebauten CAN-Kommunikator verwenden, wird der IC-Chip MCP2515 benötigt, um andere Nachrichtenprotokolle in CAN umzuwandeln.
- Der CANL-Pin sollte mit den anderen CANL-Pins der anderen Busknoten verbunden werden. Das gleiche gilt für die CANH-Pins.
- Der 120Ω-Widerstand über den CANH- und CANL-Pins ist nur erforderlich, wenn der Knoten ein Endknoten ist. Dies bedeutet, dass es sich am Ende der Parallelschaltungsverdrahtung befindet. Mit anderen Worten, der CAN-Bus sollte nur zwei 120Ω-Widerstände enthalten und diese sollten möglichst weit voneinander entfernt sein.
- Schließlich kann der 1kΩ-Widerstand an RS (Pin 8) gegen einen 10kΩ-Widerstand ausgetauscht werden, um die Anstiegs-/Abfallzeit der CAN-Nachrichtenbits zu steuern. Weitere Informationen finden Sie im Datenblatt des MCP2551-Chips.
Schritt 2: Lesen und Schreiben auf den CAN-Bus
Nachdem nun die Transceiver-Schaltung mit dem STM32 verbunden ist, können wir mit dem Schreiben von Nachrichten auf den CAN-Bus beginnen. Diese anweisbare Anleitung wird nicht in den STM32-Code eingehen. Sehen Sie sich jedoch unseren Code für Beispiele hier an. Die Verwendung des STM32 als CAN-Knoten erfordert eine CAN-Header-Datei. Wir haben unseren eigenen geschrieben, den Sie hier auf unserem Github finden können. Hier geben wir einen kurzen Überblick über den Lese-/Schreibvorgang.
Um vom CAN-Bus zu lesen, müssen wir zunächst die ID der CAN-Nachricht kennen. Jede Nachricht sollte eine eindeutige ID haben, wobei niedrigere IDs eine höhere Priorität haben. Der hier gezeigte Code-Schnipsel wartet auf eine CAN-Nachricht mit der ID 0x622. Wenn in unserem System das erste Bit des 6. Bytes hoch ist, möchten wir Pin A10 hoch setzen.
Beim Schreiben einer CAN-Nachricht müssen wir daran denken, dass CAN-Nachrichten Multi-Byte sind. Jede schriftliche Nachricht muss eine ID und Länge haben. Im zweiten gezeigten Code-Snippet schreiben wir Daten in jedes Byte und senden dann die Nachricht (Die ID- und Längenparameter werden weiter oben im Code definiert).
Schritt 3: Knoten verbinden
Beim Anschluss mehrerer CAN-Knoten ist auf die Kabellänge zu achten. Die beiden am weitesten entfernten Knoten können bis zu 40 m voneinander entfernt sein. Mittlere Knoten, die mit dem Bus verbunden sind, sollten sich innerhalb von 50 cm von den Hauptbuslinien befinden.
CAN-Verbindungen folgen einem Industriestandard mit einem Dsub9-Stecker mit der CANL-Leitung an Pin 2 und der CANH-Leitung an Pin7. Die Option CANGND-Leitung kann auf Pin 3 gehen.
Schritt 4: Machen Sie die Platine
Beachten Sie beim Routing von CAN-Signalen auf einer Leiterplatte, dass CAN ein differentielles Signal ist und daher die Routing-Richtlinien für CANH und CANL sorgfältig befolgt werden sollten.
Schritt 5: Erweiterung des Boards
Werfen Sie einige weitere Knoten zusammen, fügen Sie einige Ein-/Ausgänge hinzu und verbinden Sie alle ihre CANH- und CANL-Pins. Beachten Sie, dass jeder STM32 oder jeder andere Mikrocontroller seinen eigenen MCP2551-Chip benötigt; sie können nicht geteilt werden.
Versuchen Sie daher, Ihre Leiterplatten kleiner als die hier gezeigte zu halten
Schritt 6: Bestellen Sie Ihre Leiterplatten bei JLCPCB
JLCPCB bietet schnellen, qualitativ hochwertigen Service zu sehr günstigen Preisen. Holen Sie sich 5 Boards in jeder Farbe mit unzähligen Anpassungsmöglichkeiten für nur 2 US-Dollar! Und wenn es Ihre erste Bestellung ist, erhalten Sie 10 Boards zum gleichen Preis!
Laden Sie einfach Ihre Gerber hoch und erhalten Sie ein sofortiges Angebot! Senden Sie Ihre Bestellung und Ihre Boards werden innerhalb einer Stunde für die Produktion überprüft. Sobald Sie bezahlt haben, können Sie Ihre hochwertigen Boards bereits in drei Tagen erwarten!
Schau es dir hier an
Schritt 7: Holen Sie sich Ihre Boards
Großes Lob an JLCPCB für das Sponsoring dieses Projekts. JLCPCB (ShenzhenJLC Electronics Co., Ltd.) ist das größte Unternehmen für PCB-Prototypen in China und ein High-Tech-Hersteller, der sich auf schnelles PCB-Prototyping und PCB-Kleinserienfertigung spezialisiert hat. Sie waren so freundlich, UBC Solar unsere neuen Leiterplatten für unseren solarbetriebenen Rennwagen zur Verfügung zu stellen. Wir haben am Freitag unsere Bestellung aufgegeben und die Boards am Mittwoch erhalten!
Empfohlen:
Verwenden eines STM32 wie ein Arduino-Tutorial - STM32F103C8: 5 Schritte
Verwenden eines STM32 wie ein Arduino-Tutorial | STM32F103C8: Hey, was ist los, Leute! Akarsh hier von CETech. Im folgenden Tutorial werden wir uns die verschiedenen von STM angebotenen Mikrocontroller wie den STM32F103C8, STM32F030F4 und STM8S103F3 ansehen. Wir werden diese Mikros miteinander vergleichen, zusammen mit