Einführung in CAN

Vorwort

  大家首先补充一下总线的概念:

  Bus (Bus) bezieht sich auf eine physische Leitung und ihr Kommunikationsprotokoll zur Übertragung von Informationen zwischen verschiedenen Komponenten innerhalb eines Computers (z. B. CPU, Speicher, Eingabe- und Ausgabegeräte usw.). Die Funktion des Busses besteht darin, verschiedene Arten von Hardwarekomponenten zu verbinden, die Kommunikation und Datenübertragung zwischen ihnen zu koordinieren, den Kanal und das Timing der Datenübertragung bereitzustellen und die parallele Datenübertragung zu realisieren.

  Busse können in drei Typen unterteilt werden: Datenbus, Adressbus und Steuerbus.

  Ein Datenbus , auch Datenpfad genannt, ist eine Reihe paralleler Übertragungsleitungen, die zur Übertragung von Daten in einem Computersystem verwendet werden. Seine Breite beträgt normalerweise 8 Bit, 16 Bit, 32 Bit oder 64 Bit, was die jeweilige Übertragung bestimmt. Datengröße.

  Der Adressbus gibt den Speicherort der Daten im Speicher an und seine Breite bestimmt die Größe des Speicherplatzes, den das System adressieren kann. Je breiter sein Adressbus ist, desto größer ist die Speicherkapazität, auf die der Computer zugreifen kann. Beispielsweise kann ein 32-Bit-Adressbus auf 4 GB Speicherplatz zugreifen.

  Ein Steuerbus ist eine Reihe von Leitungen, die zur Steuerung der Signalübertragung und des Datenaustauschs zwischen verschiedenen Komponenten in einem Computer verwendet werden. Es umfasst einige Steuersignale wie Lese- und Schreibsteuerung, Interrupt-Steuerung usw., die zur Steuerung der Datenübertragung und des Betriebs von Speicher, Eingabe- und Ausgabegeräten usw. verwendet werden.

  Im Allgemeinen spielt der Bus eine wichtige Rolle im Computer. Er ermöglicht die effiziente Übertragung von Daten, Adressen und Steuersignalen zwischen verschiedenen Komponenten, wodurch der interne Betrieb des Computers koordiniert und die Leistung und Effizienz des Computersystems verbessert wird.

1. CAN-Protokoll

1. Was ist CAN

  Der Controller Area Network Bus (CAN, Controller Area Network) ist ein serieller Kommunikationsprotokollbus für Echtzeitanwendungen, der ursprünglich von Bosch für die Datenkommunikation in den Bereichen Automobil- und Industriesteuerung entwickelt wurde. Das CAN-Protokoll zeichnet sich durch hohe Zuverlässigkeit, hohe Geschwindigkeit und mehrere Knoten aus und wird daher häufig im Steuerungssystem moderner Automobile verwendet.

  Einzelheiten zum Protokoll finden Sie in der Lektüre (ich habe es selbst gelesen und denke, dass es gut ist, also werde ich das Rad nicht wiederholen, um Müll zu machen): Detaillierte
  Erklärung des CAN-Busses
  Detaillierte Erklärung des CAN-Bus-Protokolls

CAN协议的基本特点:

	双线制结构:CAN协议采用双线制结构,即CAN总线由两根线构成,分别为CAN-H和CAN-L。
	
	面向帧的通信:CAN协议是一种面向帧的通信协议,将数据打包成帧进行传输。
	
	帧结构:CAN通信的数据单位是帧,分为标准帧和扩展帧两种,每帧包含ID、数据和控制位等信息。
	
	多主机体系结构:CAN协议支持多主机体系结构,多个节点可以同时进行数据传输。
	
	差分信号:CAN协议使用差分信号的方式进行通信,具有较强的抗干扰能力。
	
	高速通信:CAN协议支持高速通信,标准速率为1Mbps,扩展速率为10Mbps。

  In praktischen Anwendungen besteht der CAN-Bus im Allgemeinen aus einem Master-Controller und mehreren Slave-Knoten. Der Master-Controller sendet Anweisungen oder Daten über den CAN-Bus an die Slave-Knoten, und die Slave-Knoten führen nach Empfang der Anweisungen oder Daten entsprechende Vorgänge aus und geben die Ergebnisse an den Master-Controller zurück.

  Die Kommunikation auf dem CAN-Bus muss bestimmten Kommunikationsregeln folgen, vor allem einschließlich des Formats des Datenrahmens, der Übertragungsrate und der Fehlererkennung. Konkret besteht jeder Datenrahmen aus vier Teilen: Rahmenstartsymbol, Rahmentyp, Datensegment und Prüfsegment. Das CAN-Protokoll verwendet außerdem die CRC-Technologie (Cyclic Redundancy Check), um die Integrität der Daten zu überprüfen und so die Zuverlässigkeit der Daten sicherzustellen.

  Im Allgemeinen ist das CAN-Protokoll ein hochzuverlässiges Hochgeschwindigkeits-Multiknoten-Kommunikationsprotokoll, das in den Bereichen Automobil- und Industriesteuerung weit verbreitet ist. Ein Verständnis des CAN-Protokolls kann Ingenieuren dabei helfen, Kommunikationssysteme besser zu entwickeln und zu warten.

2. Die Version des CAN-Protokolls

  Es gibt zwei Versionen des CAN-Protokolls: CAN 1.0 und CAN 2.0. CAN 1.0 ist in zwei Typen unterteilt, nämlich CAN 1.0A und CAN 1.0B; CAN 2.0 ist ebenfalls in zwei Typen unterteilt, nämlich CAN 2.0A und CAN 2.0B.

  CAN 1.0A ist die erste Generation des CAN-Protokolls, die maximale Datenübertragungsrate beträgt nur 1 Mbit/s und die maximale Datenlänge jedes Datenrahmens beträgt 8 Byte. Es verwendet eine Codierungsmethode ohne Rückkehr zur Null (Non-Return-to-Zero, NRZ) und der Datenrahmen ist in eine 11-Bit-Kennung und vier zusätzliche Steuerbits unterteilt. CAN 1.0B ist eine modifizierte Version von CAN 1.0A, die eine andere Kodierungsmethode verwendet, aber die Kommunikationsgeschwindigkeit und Datenlänge unterscheiden sich nicht wesentlich von CAN 1.0A.

  CAN 2.0A und CAN 2.0B sind das CAN-Protokoll der zweiten Generation, die Datenübertragungsrate kann bis zu 1 Mbit/s erreichen und die maximale Datenlänge jedes Datenrahmens beträgt 8 Byte. Ihr Hauptunterschied liegt in der Länge und Struktur des Identifiers des Datenrahmens. Dabei verwendet CAN 2.0A einen 11-Bit-Identifier, während CAN 2.0B einen 29-Bit-Identifier verwendet.

  Das CAN-FD-Protokoll (Flexible Data-Rate) ist ein 2012 vorgeschlagenes Hochgeschwindigkeits-CAN-Protokoll, das Datenübertragungsraten von bis zu 5 Mbit/s und eine Datenlänge von 64 Byte unterstützt. Es verwendet eine Identifier-Struktur ähnlich wie CAN 2.0B und führt einige neue Funktionen ein, wie z. B. Bitzeitmodulation, verbesserte Anti-Interferenz-Leistung usw. Das CAN-FD-Protokoll wurde entwickelt, um den Hochgeschwindigkeitsdatenanforderungen moderner Automobilanwendungsszenarien gerecht zu werden.

2. Klassifizierung von CAN-Controllern

  Derzeit gibt es hauptsächlich folgende Arten von CAN-Controllern:

  CPU-basierter CAN-Controller: Der CPU-basierte CAN-Controller integriert die CAN-Funktion mit dem CPU-Controller und verfügt über eine hohe Flexibilität. Beispielsweise integriert der Ein-Chip-Computer der ATMEL AVR8-Serie der Atmel Company den CAN-Controller.

  Unabhängiger CAN-Controller: Der unabhängige CAN-Controller ist ein unabhängiger Chip, der direkt an den Systembus des Hauptsteuerchips angeschlossen werden kann und über eine hohe Datenverarbeitungsfähigkeit und Entstörungsfähigkeit verfügt. Beispielsweise ist der MCP2515 ein gängiger eigenständiger CAN-Controller.

  FPGA-implementierter CAN-Controller: Der auf FPGA (Programmable Logic Gate Array) basierende CAN-Controller zeichnet sich durch hohe Flexibilität und starke Skalierbarkeit aus und kann an die Anforderungen der Anwendung angepasst werden. Beispielsweise kann der FPGA-Chip der XC9500-Serie der Firma Xilinx die Realisierung eines CAN-Controllers unterstützen.

  CAN-Controller integriert in einem anwendungsspezifischen integrierten Schaltkreis (ASIC): Anwendungsspezifische integrierte Schaltkreise sind kundenspezifische integrierte Schaltkreise, die für spezifische Anwendungsanforderungen entwickelt wurden. Sie werden häufig in Bereichen wie Automobilen und Industriesteuerungen eingesetzt und ihre CAN-Controller-Funktionen werden in ASIC-Chips integriert. Beispielsweise integriert der ASIC-Chip der XC8107-Serie der Firma Infineon die CAN-Controller-Funktion.

  Kurz gesagt, verschiedene Arten von CAN-Controllern haben ihre eigenen Vor- und Nachteile in Bezug auf Anwendungsbereiche und Leistung. Entwickler müssen einen geeigneten CAN-Controller entsprechend den spezifischen Anwendungsszenarien auswählen.

三、FlexCAN、C_CAN、D_CAN

  Die oben genannten drei CAN-Controller werden häufig im aktuellen ARM-basierten SOC verwendet. Hier finden Sie eine kurze Einführung, um sie zu unterscheiden.

1、FlexCAN

  FlexCAN ist ein gängiger CAN-Controllertyp, der vom amerikanischen Chiphersteller NXP (ehemals Motorolas Halbleitersparte) auf den Markt gebracht wurde und hauptsächlich in Anwendungen wie Automobilen, Industrie und Luftfahrt eingesetzt wird. Der FlexCAN-Controller unterstützt das CAN2.0B-Protokoll und das CAN-FD-Protokoll und kann in verschiedenen Arbeitsmodi konfiguriert werden, z. B. im Normalmodus (Normalmodus), im Loopback-Modus (Loopback-Modus) und im Selbstdiagnosemodus (Selbstdiagnosemodus). usw., mit hoher Flexibilität und Zuverlässigkeit.

  Der FlexCAN-Controller nutzt den FIFO-Puffermechanismus (First In First Out), um die gleichzeitige Verarbeitung mehrerer CAN-Nachrichten zu unterstützen. Es verfügt außerdem über einen FlexCAN-Nachrichtenpuffer, der mehrere Nachrichten für die anschließende Verarbeitung speichern kann. Bei der Verarbeitung können unterschiedliche Verarbeitungsmethoden entsprechend unterschiedlicher Anforderungs-IDs und Prioritäten angegeben werden, um die Datenübertragung im CAN-Netzwerk effektiv zu verwalten und zu optimieren.

  Der FlexCAN-Controller wird normalerweise über einen SPI- oder I2C-Bus mit dem Host-Computer verbunden und bietet eine Vielzahl von Schnittstellen und Steuersignalen, darunter RST-Pin (Reset), IRQ-Pin (Interrupt Request), TXE-Pin (Transmission Enable) und RXF (Receive). Interrupt-Pins usw., um das Systemdesign und das Debuggen zu erleichtern.

  Kurz gesagt handelt es sich bei FlexCAN um einen leistungsstarken und flexiblen CAN-Controllertyp, der häufig in den Bereichen Fahrzeugelektronik, Industriesteuerung und Luftfahrt eingesetzt wird und effiziente und zuverlässige Datenkommunikations- und Steuerungsfunktionen bereitstellen kann. FlexCAN gehört zur Kategorie der eigenständigen CAN-Controller.

2, c_can und d_can

  Sowohl c_can als auch d_can sind eine Art CAN-Controller, wobei sich c_can normalerweise auf einen CAN-Controller bezieht, der auf einer CPU basiert, und d_can sich auf einen CAN-Controller bezieht, der auf einem unabhängigen Chip basiert. Die spezifische Situation variiert je nach Hersteller und Modell.

  c_can ist ein CPU-basierter CAN-Controller, der einen CAN-Controller und einen Mikrocontroller integriert. Da es sich in der Zentraleinheit befindet, bietet c_can weitere Vorteile bei der Echtzeit-Datenübertragung und der Verarbeitungsleistung.

  Und d_can ist ein unabhängiger CAN-Controller-Chip, der nicht auf die Verarbeitungsfähigkeit des Hauptcontrollers angewiesen ist und daher über eine hohe Datenverarbeitungsfähigkeit und Anti-Interferenz-Fähigkeit verfügt. Gleichzeitig kann d_can auch höhere CAN-Bus-Kommunikationsraten (z. B. 500 Kbit/s und 1 Mbit/s) und mehr CAN-Knoten unterstützen, was für komplexe CAN-Anwendungsszenarien geeignet ist.

  Kurz gesagt, es gibt viele Unterschiede zwischen c_can und d_can im Detail, und der geeignete CAN-Controller-Typ kann entsprechend den spezifischen Anwendungsszenarien und Anforderungen ausgewählt werden.

Dieser Artikel bezieht sich auf Baidu-Enzyklopädie, ChatGpt-Abrufinhalte und CSDN-Blogs anderer Blogger. Bei Verstößen wenden Sie sich bitte an, um sie zu löschen! Begrüßen Sie alle zur Anleitung und Kommunikation im Kommentarbereich! ! !

おすすめ

転載: blog.csdn.net/weixin_45842280/article/details/130667796