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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.