Forum: Mikrocontroller und Digitale Elektronik CAN zu CAN Kommunikation


von Helge (Gast)


Lesenswert?

Ich habe eine CAN zu CAN Kommunikation zwischen zwei Teilnehmern 
aufgebaut. Weitere Teilnehmer kommen nicht mehr dazu.

Da die Kommunikation prinzipiell funktioniert, möchte ich nun ein 
Protokoll dazu bauen. Ein Protokoll wie CANopen möchte ich nicht 
implementieren, da ich ja nur zwei Teilnehmer habe.

Bei einem UART Protokoll hat man ja sowas in der Art:
    ID, Länge, Kommando; Daten*n, Checksumme


Aufbauen würde ich es folgendermaßen:

Teilnehmer 1:

Objekt 0, Senderichtung mit 6 Byte:
-  ID [Byte 0/1]
-  Länge [Byte 2]
-  Kommando [Byte 3]
-  Checksumme [Byte 4/5]

Objekt 1-15, Senderichtung mit je 8 Byte:
-  Daten


Objekt 16, Empfangsrichtung mit 6 Byte:
-  ID [Byte 0/1]
-  Länge [Byte 2]
-  Kommando [Byte 3]
-  Checksumme [Byte 4/5]

Objekt 17-31, Empfangsrichtung mit je 8 Byte:
-  Daten


Teilnehmer 2 hätte gespielte Objekte.

Interrupt bei Teilnehmer 1 wäre Objekt 16 und bei Teilnehmer 2 das 
Objekt 0.


Brauche ich bei CAN eine Checksumme? Kann ich hier das CRC vom CAN und 
das Error Register benutzen? Das mir bei fehlerhafter Kommunikation 
einen Interrupt generiert?

Oder sollte ich einen ganz anderen Weg gehen?

Habe mit CAN so gut wie keine Erfahrung. Brauche es aber nun, da 
Teilnehmer 1 weder per UART noch per SPI mit Teilnehmer 2 Kommunizieren 
kann.

von Stefan (Gast)


Lesenswert?

Du kannst die Cheksumme vom CAN benutzen. Wobei du hier nicht mal 
wirklich einen Interrupt brauchst. Der CAN-Controller in deinem Chip 
wird bei fehlerhafter Nachricht sowieso neu gesendet.

Dann kannst du die ID dazu verwenden um den Nachrichtentyp zu bestimmen. 
Also das wäre dann z.b. dein Kommando. Somit kannst du die 8 Byte Daten 
als volle Nutzlast benutzen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.