Share this

CAN-Bus-Isolationserweiterungsdesign basierend auf der seriellen Peripherieschnittstelle (SPI)

2026-02-21 13:00:27 · · #1
Zusammenfassung: Dieser Artikel stellt ein Kommunikationssteuerungssystem vor, das den SPI-Port zur Implementierung der CAN-Bus-Isolationserweiterung nutzt. Der Hardware-Entwurf und die Steuerung, der Software-Entwurfsprozess und die Implementierungsmethode des Master-Slave-Kommunikationsmoduls dieses Steuerungssystems werden detailliert beschrieben. Schlüsselwörter: CAN-Bus, SPI-Port, XINT1-Interrupt. I. Einleitung: Der CAN-Bus ist ein serielles Datenkommunikationsprotokoll, das verteilte und Echtzeitsteuerung effektiv unterstützt. Es handelt sich um einen Multi-Master-Bus, in dem jeder Knoten im Netzwerk jederzeit aktiv Informationen an andere Knoten senden kann, ohne dass eine Master-Slave-Unterscheidung erforderlich ist. Knoten haben Prioritäten, wodurch flexible Kommunikationsmethoden ermöglicht werden. CAN kann Daten auf verschiedene Arten senden und empfangen, darunter Punkt-zu-Punkt, Punkt-zu-Mehrpunkt (Gruppe) und globaler Broadcast. CAN verwendet eine nicht-destruktive Bit-Arbitrierungstechnologie und priorisiert die Übertragung, was die Zeit für die Buskonflikt-Arbitrierung erheblich reduziert und eine gute Leistung unter hoher Last gewährleistet. Die tatsächliche Anzahl von Knoten an einem CAN-Bus kann bis zu 110 betragen. Als Kommunikationsmedium können verdrillte Adernpaare, Koaxialkabel oder Glasfasern verwendet werden. Die maximale direkte Kommunikationsdistanz beträgt 10 km (Übertragungsrate 5 kbit/s); die maximale Kommunikationsrate beträgt 1 Mbit/s (Übertragungsdistanz 40 m). Eine der wichtigsten Eigenschaften des CAN-Protokolls ist der Verzicht auf die herkömmliche Stationsadressenkodierung und deren Ersetzung durch die Kodierung von Kommunikationsdatenblöcken. Die CAN-Sicherungsschicht verwendet eine kurze Frame-Struktur mit jeweils 8 Bytes, was die Fehlerkorrektur erleichtert. Dies erfüllt die allgemeinen Anforderungen an Steuerbefehle, Betriebszustand und Testdaten in typischen Industrieanwendungen. Gleichzeitig beanspruchen die 8 Bytes keine übermäßige Buszeit und gewährleisten so Echtzeitkommunikation. Der CAN-Bus verfügt über leistungsstarke Fehlerkorrekturfunktionen; jeder Informationsframe enthält eine CRC-Prüfsumme und weitere Fehlererkennungsmaßnahmen, wodurch die Datenfehlerrate effektiv reduziert wird. CAN-Knoten verfügen über eine automatische Abschaltfunktion bei schwerwiegenden Fehlern, um sicherzustellen, dass andere Knoten im Bus nicht beeinträchtigt werden. CAN unterstützt differentielles Senden und Empfangen und eignet sich daher für Umgebungen mit starken Störungen. Unser entwickeltes Master-Slave-Kommunikationssystem für CAN-Busse ist in Abbildung 1 dargestellt. Dieses System arbeitet mit einer zweischichtigen Isolationssteuerung. Die Masterkonsole sendet Befehle und Daten an das Master-CAN-Netzwerk und kommuniziert über das Master-Slave-Kommunikationsmodul mit den Knoten im Slave-CAN-Netzwerk, um Daten zu erfassen und die Subsystem-Steuereinheiten zu steuern. Dadurch erhöht sich die Anzahl der CAN-Bus-Knoten um den Faktor n, die CAN-Bus-Übertragungsrate und -Reichweite werden signifikant verbessert und die Störfestigkeit deutlich erhöht. Dieser Artikel beschreibt den Hardware- und Software-Entwurf sowie die Implementierungsmethoden des Master-Slave-Kommunikationsmoduls in einem solchen CAN-Bus-Master-Slave-Kommunikationssystem. Das Master-Slave-Kommunikationsmodul ermöglicht die isolierte Erweiterung der CAN-Netzwerk-Datenkommunikation zwischen der Master-Steuerkonsole und der Slave-Steuereinheit und dient als Referenz für die Verarbeitung und Übertragung von Kommunikationsdaten sowie die CAN-Netzwerksteuerung. II. Hardware-Design: Das Blockdiagramm des Steuerungsprinzips des Master-Slave-Kommunikationsmoduls ist in Abbildung 2 dargestellt. Der Kernchip ist ein DSP der TI TMS320C2000-Serie, der für die digitale Steuerung geeignet ist. Der Chip enthält einen 10-Bit-ADC-Wandler, einen integrierten Flash-Programmspeicher, einen Ereignismanager und digitale Ein-/Ausgabe-Ports (I/O). Zur Kommunikation mit verschiedenen Peripheriegeräten bietet der DSP mehrere Schnittstellen: CAN-Schnittstelle, Serial Peripheral Interface (SPI) und Serial Communication Interface (SCI). Die SPI-Schnittstelle ist eine branchenübliche, synchrone serielle Vollduplex-Schnittstelle mit drei Leitungen. Sie ermöglicht die serielle Kommunikation des DSP mit verschiedenen Peripheriegeräten (konfigurierbar für das gleichzeitige und synchrone Senden und Empfangen von 1–16 Bit Daten). Für die Datenübertragung über die SPI-Schnittstelle werden ein Taktsignal und zwei Datenleitungen benötigt. SPI kann im Master- oder Slave-Modus betrieben werden. Im Master-Modus benötigt jedes Datenbit einen Taktzyklus für die Übertragung/den Empfang; im Slave-Modus wird jedes Datenbit erst nach Empfang des Taktsignals gesendet/empfangen. III. Funktionsprinzip von SPI 1) Beschreibung der SPI-Signale Wie in Abbildung 2, dem Schaltplan der Kommunikationssteuerung, dargestellt, verwendet die SPI-Schnittstelle zwischen zwei DSP-Chips vier Leitungen: die serielle Taktleitung (SPICLK), die Master-Eingangs-/Slave-Ausgangsdatenleitung (SPISIMO), die Master-Ausgangs-/Slave-Eingangsdatenleitung (SPISIMO) und die Low-Level-Aktiv-Slave-Auswahlleitung (SPISTE). SPICLK ist die Taktleitung des Master-Chips und liefert ein synchrones Taktsignal für die Übertragung und den Empfang von MISO-Daten. Die Übertragung jedes Datenbits benötigt einen Taktzyklus; daher benötigt die Übertragung oder der Empfang eines Datenbytes 1 bis 16 Taktzyklen. Der Takt des Master-Chips wird von dessen Hardware eingestellt und mit SPICLK des Slave-Chips verbunden. MISO ist die Eingangs-/Ausgangsdatenleitung des Master-Chips. Für den Datenaustausch mit den höherwertigen Bits muss die MISO-Leitung des Master-Chips mit der MISO-Leitung des Slave-Chips verbunden werden. MOSI ist der Master-Ausgangs-/Slave-Eingangsdatenpin der SPI-Schnittstelle. Dieser Pin sollte für den Datenaustausch mit den höherwertigen Bits zuerst mit dem Datenausgang des Master-Chips und dem Dateneingang (MOSI) des Slave-Chips verbunden werden. SPISTE wird nur im Slave-Modus verwendet, um den Slave-Chip mit einem niedrigen Pegel auszuwählen; der entsprechende SPISTE-Pin des Master-Chips ist als I/O-Port und SPI-Chip-Select-Eingang des Slave-Chips konfiguriert. 2) Master-Modus: Im Master-Modus können Senden und Empfangen gleichzeitig erfolgen. Ein wesentliches Merkmal des Master-Modus ist, dass sowohl für das Senden als auch für das Empfangen immer ein SPICLK-Signal vorhanden ist. Die Übertragung wird durch Schreiben von Daten in SPIDAT (oder SPITXBUF) ausgelöst. Im Master-Modus entspricht ein Taktzyklus der Übertragung eines Datenbits (MOSI) und dem Empfang eines weiteren Datenbits (MISO). Wie in Abbildung 3 dargestellt, werden im Master-Chip Daten von links nach rechts vom Schieberegister zum Slave-Chip (MOSI) gesendet, während Daten im Slave-Chip von rechts nach links zum Master-Chip (MISO) gesendet werden. Nach 16 Taktzyklen wird ein Byte übertragen. Das Eingangsbyte wird im Schieberegister gespeichert. Das SPIINTFLAG-Bit wird automatisch gesetzt (bei gesetztem Bit wird ein Interrupt ausgelöst). Die Daten im Schieberegister werden in SPIRXBUF zwischengespeichert, und nachfolgende Leseoperationen auf SPIRXBUF lesen die Daten. 3) Slave-Modus: Im Slave-Modus erfolgen Senden und Empfangen gleichzeitig. Ein wesentliches Merkmal des Slave-Modus ist, dass sowohl Senden als auch Empfangen unter dem Einfluss des SPICLK-Signals erfolgen müssen und das SPISTE-Signal gültig sein muss. Ist das SPISTE-Signal ungültig, kann die Datenübertragung nicht fortgesetzt werden, und die Eingangsdaten gelten als ungültig. Dies liegt daran, dass das Eingangstaktsignal eine logische UND-Verknüpfung mit SPICLK ist und SPICLK die Invertierung von SPISTE darstellt. Daher liegt bei hohem SPISTE-Pegel kein Taktsignal an. Der Datenübertragungs- und -empfangsprozess ist in Abbildung 3 dargestellt und ähnelt im Wesentlichen dem Master-Modus, mit der Ausnahme, dass die Richtungen des Schieberegisters für das Aus- und Einschieben der Daten umgekehrt sind. IV. Software-Design: Die SPI-Kommunikation nutzt einen 5-Byte-Frame einer CAN-Nachricht als Übertragungseinheit für den Informationsaustausch. Der Master-Chip steuert das SPICLK-Signal, um die Nachrichtenübertragung jederzeit zu initiieren. Vor dem Senden einer Nachricht sendet der Slave-Chip über eine I/O-Leitung eine externe Interruptanforderung an den Master-Chip. Nach erfolgreicher Anforderung gibt der Master-Chip das SPICLK-Signal aus, um die Nachrichtenübertragung vom Slave-Chip zu starten. Der Slave-Chip empfängt Nachrichten vom Master-Chip während des SPI-Interrupts; der Master-Chip schließt den Empfang der Nachricht des Slave-Chips während des externen Interrupts ab. Wenn sowohl Master- als auch Slave-Chip gleichzeitig Nachrichten zu senden haben, priorisiert das System die Übertragung der Nachricht des Master-Chips und sendet anschließend die Nachricht des Slave-Chips. 1. Master-Chip sendet, Slave-Chip empfängt Nachricht. Das Software-Flussdiagramm für das Senden von Nachrichten durch den Master-Chip und das Empfangen von Nachrichten durch den Slave-Chip ist in Abbildung 4 dargestellt. Der Master-Chip deaktiviert externe Interrupts, bevor er Nachrichten an den Slave-Chip sendet, wodurch dieser am Senden von Nachrichten gehindert wird. Anschließend wird ein Nachrichtenrahmen aus dem CAN-Übertragungspuffer abgerufen und in das SPI-Senderegister geschrieben. Danach wird ein Datenbyte aus dem SPI-Senderegister abgerufen und in das SPITXBUF-Register geschrieben, um die Datenübertragung am SPISIMO-Pin zu initiieren. Gleichzeitig reagiert der Slave-Chip auf einen SPI-Interrupt, um Daten vom Master-Chip zu empfangen. Nach dem Empfang eines Bytes löst der Slave-Chip über eine I/O-Leitung den externen XINT1-Interrupt des Master-Chips aus, um den Empfang der Daten zu bestätigen. Nach der Beantwortung dieses XINT1-Interrupts sendet der Master-Chip das nächste Datenbyte. Sobald ein Nachrichtenrahmen übertragen wurde, aktiviert der Master-Chip den externen Interrupt, um Nachrichten zu empfangen. Nach dem Empfang der Nachricht setzt der Slave-Chip das Empfangsflag, damit die CPU die Nachricht verarbeiten kann. 2. Slave-Chip sendet, Master-Chip empfängt Nachrichten. Das Software-Ablaufdiagramm für den Nachrichtenaustausch zwischen Slave-Chip (Senden) und Master-Chip (Empfangen) ist in Abbildung 5 dargestellt. Vor dem Senden einer Nachricht sendet der Slave-Chip über eine I/O-Leitung einen externen XINT1-Interrupt an den Master-Chip, um die Nachrichtenübertragung anzufordern. Sobald der Master-Chip auf diesen Interrupt reagiert, sendet er Pseudodaten (z. B. #0FFFFh), um dem Slave-Chip mitzuteilen, dass die Nachrichtenübertragung beginnen kann. Nachdem der Slave-Chip erkannt hat, dass das Flag für die Nachrichtenanforderung gesetzt ist, liest er einen Nachrichtenrahmen aus dem CAN-Sendepuffer und speichert ihn im SPI-Senderegister. Anschließend liest er ein Datenbyte aus dem SPI-Senderegister und schreibt es in das SPITXBUF-Register. Der Slave-Chip sendet dann über eine I/O-Leitung einen externen XINT1-Interrupt an den Master-Chip, um die Daten abzurufen. Sobald der Master-Chip erkennt, dass das Interrupt-Flag in der XINT1-Interrupt-Service-Routine gesetzt ist, sendet er die Pseudodaten #0FFFFh (wodurch der SPICLK-Takt für die Datenübertragung des Slave-Chips gestartet wird) und speichert das empfangene Byte im SPI-Empfangspuffer. Nachdem der Slave-Chip einen Nachrichtenrahmen gesendet hat, löscht er das Nachrichtenempfangsflag. Sobald der Master-Chip den Nachrichtenrahmen empfangen hat, setzt er das Empfangsabschlussflag und beendet die externe Interruptroutine, sodass die CPU die Nachricht verarbeiten kann. 3. Wichtige Technologieverarbeitung: Die Datenübertragung über den CAN-Bus ist unvorhersehbar und zufällig. Daher ist es bei der Verwendung des SPI-Ports für den Datenaustausch zwischen Master- und Slave-Systemen entscheidend, eine Datenübertragung von DSP2 zu DSP1 zu verhindern, während gleichzeitig Daten von DSP1 zu DSP2 und umgekehrt übertragen werden. Andernfalls treten Datenfehler oder -verluste während der Übertragung auf, die den normalen Betrieb der CPU beeinträchtigen. Um Konflikte während der Nachrichtenübertragung zu vermeiden, empfängt der Master-Chip einen Nachrichtenrahmen in der XINT1-Interrupt-Serviceroutine und der Slave-Chip die Nachricht in der SPI-Interrupt-Serviceroutine. Während der Nachrichtenübertragung kann weder der Master- noch der Slave-Chip den nächsten Nachrichtenrahmen senden, bevor der vorherige vollständig übertragen wurde. Nach der Übertragung jedes Datenbytes senden sowohl Master- als auch Slave-Chip ein Bestätigungssignal mit einem Flag (siehe Bedeutung des Flags), um den Abschluss der Datenübertragung bzw. des Datenempfangs zu bestätigen. Da der Master-Chip das Taktsignal für die Nachrichtenübertragung steuert, kann er jederzeit Nachrichten senden. Vor dem Senden einer Nachricht muss der Slave-Chip prüfen, ob der Master-Chip gerade im Leerlauf ist. Sendet der Master-Chip eine Nachricht, wartet der Slave-Chip, bis der Master-Chip die Übertragung abgeschlossen hat, bevor er seine eigene Nachricht sendet. Ist der Master-Chip im Leerlauf, kann der Slave-Chip mit dem Senden von Nachrichten beginnen. V. Fazit: Dieses CAN-Bus-Master-Slave-Kommunikationssystem kann, ergänzt durch zusätzliche Steuereinheiten (z. B. Anzeigeeinheiten, Bedientastaturen usw.), als Master-Controller eines Slave-CAN-Netzwerks eingesetzt werden. Bei Störungen des CAN-Netzwerks der Master-Steuerkonsole kann es den Betrieb des Steuerungssystems unterstützen. Dieses Design wurde bereits in Steuerungssystemen angewendet.
Read next

ABCO integrierte SPS für die Montage und Prüfung von Automobilsensoren

Im heutigen Wettbewerbsumfeld ist die Nachfrage nach weiterer Automatisierung im gesamten Fertigungsprozess enorm gestie...

Articles 2026-02-20