CAN-Sniffer Protokoll
Aus iSysBus Doku
Allgemein / CAN-Sniffer / CAN-Sniffer_Protokoll
Dies ist die Übersichtsseite für das Protokoll des CAN-Sniffers, Details zum Paketaufbau findet sich auf den jeweiligen Seiten zur Protokollversion, Änderungen gegenüber der vorherigen Version sind farbig hervorgehoben.
Inhaltsverzeichnis |
Grundsätzlicher Aufbau
Die einzelnen Datenpakete besitzen folgenden Aufbau:
| Startbyte | Pakettyp | Daten | CRC |
| 1 Byte | 1 Byte | variabel | 2 Byte |
Dabei ist die Länge des jeweiligen Pakets durch den Pakettyp bestimmt.
Adaptertypen
Derzeit kann die Sniffer-Software 3 verschiedene Adaptertypen ansteuern, erkannt werden diese durch ihre ID, die sie bei der Versionsabfrage übermitteln. Diese sind:
| ID | Adapter |
| 0x00 | reserviert |
| 0x01 | CAN-Sniffer |
| 0x02 | Devnode (CAN-RS232-Adapter) |
| 0x03 | CAN-USB-Adapter |
Protokollversionen
Derzeit existieren die folgenden Versionen:
Firmware Funktionsprototypen:
ringpuffer sind aus der sicht vom usart(pc) interface bezeichnet
gemeinsame:
- void can_receive ( Sniffer_t * Message);
- message in tx-ringpuffer schieben
- void can_error ( uint8_t ErrorType);
- message zusammenbauen und in tx-ringpuffer schieben
- void send_msg ( Sniffer_t * Message);
- message per usart verschicken
at90:
- void can_init ( uint8_t Prescaler, uint8_t PropSeg, uint8_t PhSeg1, uint8_t PhSeg2, uint8_t JumpWidth, uint8_t Samples);
- can initialisieren
- void can_send ( Sniffer_Msg_t * Message);
- message per can versenden
- uint8_t can_rx_error_counter ();
- rx error counter ausgeben
- uint8_t can_tx_error_counter ();
- tx error counter ausgeben
- ?
- fehler aufgetreten, can_error aufrufen
- ?
- message empfangen, can_receive aufrufen
- ?
- tx buffer leer, nächste aus tx-rinpuffer message lesen, can_send aufrufen
mcp2515:
- void can_init ( uint8_t Prescaler, uint8_t PropSeg, uint8_t PhSeg1, uint8_t PhSeg2, uint8_t JumpWidth, uint8_t Samples);
- can initialisieren
- void can_send ( Sniffer_Msg_t * Message);
- message per can versenden
- uint8_t can_rx_error_counter ();
- rx error counter ausgeben
- uint8_t can_tx_error_counter ();
- tx error counter ausgeben
- ISR ( INT2_vect)
- fehler aufgetreten, can_error aufrufen
- ISR ( INT2_vect)
- message empfangen, can_receive aufrufen
- ISR ( INT2_vect)
- tx buffer leer, nächste message aus message-rinpuffer lesen, can_send aufrufen