CAN-Sniffer Protokoll

Aus iSysBus Doku

Wechseln zu: Navigation, Suche

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:

Version 1


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
Meine Werkzeuge