Zitat Zitat von Kampi Beitrag anzeigen
Und dann habe ich noch eine Frage….
Ein einfacher CAN-Baustein (z.B. http://docs-europe.electrocomponents...6b80a78cdb.pdf) stellt (in diesem Fall) nur eine „Wandlung“ des UART Pegels auf CAN-H und CAN-L dar oder? Das komplette CAN-Protokoll, also mit Dataframe, CRC und RTR usw. muss ich dann im Mikrocontroller realisieren und quasi per UART auf diesen CAN-Baustein geben. Sehe ich das so richtig?
Theoretisch kann man das machen, da das CAN-Protokoll aber höchst komplex ist, nimmt man einen CAN-Controller wie MCP2515, der das CAN-Protokoll in Hardware beherrscht oder einen uC mit integriertem CAN-Controller (AT90CAN128 böte sich für AVR-erfahrene an).

Und dann noch eine letzte, abschließende Frage
Der CAN-Bus ist ja ein Multi-Master Bus. Wenn ich das dann richtig verstanden habe gibt es dort keine „Baustein Hirachie“ (wie beim I²C mit Master und Slave) sondern jeder Baustein im CAN-Bus kann senden wann er will, wobei nur das Datenpaket auf dem Bus liegt was die höchste Priorität (also den niedrigsten Identifier hat) und dieses Datenpaket wird dann auch von allen CAN-Bausteinen empfangen und die Entscheidung ob das nun benötigt wird oder nicht wird dann von dem dazu gehörigen Mikrocontroller entschieden. Ist das so korrekt?
Ergänzung: Die Nachrichten mit niedrigerer Priorität gehen nicht verloren, sondern der CAN-Controller versucht, sie solange nochmal zu versenden, bis die Übertragung erfolgreich war.
Beim Empfang bieten die üblichen Can-Controller eine Filterfunktion an, d.h. man kann vorgeben, welche IDs interessant sind, alle anderen werden schon in Hardware ignoriert und belasten den uC nicht