CAN

Bittiming : http://www.bittiming.can-wiki.info/

SDO Protokoll: http://atlas.web.cern.ch/Atlas/GROUPS/DAQTRIG/DCS/LMB/PROFILE/cano-sdo.htm

USB2CAN

Protokoll

Jeder Befehl endet mit einem '\r' / 0x13. USB2CAN antwortet mit

Beispiel:

OUT IN Kommentar
S8\r \r Baudrate auf 1Mbps setzen, ACK
O\r \r CAN Kanal öffnen, ACK
X\r \a Unbekannter Befehl, NACK
V\r V0115\r Hardwareversion abfragen, Version 01.15, ACK
t700255aa\r \r Nachricht mit 2 Bytes (0x55, 0xAA) an ID 0x700 senden, ACK
t7002aa55\r Nachricht mit 2 Bytes (0xAA, 0x55) von ID 0x700 empfangen
C\r \r CAN Kanal schließen, ACK

Eingehende Nachrichten

Normale CAN Nachricht empfangen

ccc 		= CAN ID (HEX)
l		= Anzahl Datenbytes (1 <= l <= 8)
dd..		= Datenbytes (HEX) (Anzahl = l)

Extended ID CAN Nachricht empfangen

cccccccc	= CAN ID (HEX)
l		= Anzahl Datenbytes (1 <= l <= 8)
dd..		= Datenbytes (HEX) (Anzahl = l)

RTR CAN Nachricht empfangen

ccc 		= CAN ID (HEX)
l		= Anzahl angeforderter Datenbytes (1 <= l <= 8)

Extended ID RTR CAN Nachricht empfangen

cccccccc	= CAN ID (HEX)
l		= Anzahl angeforderter Datenbytes (1 <= l <= 8)

Befehle

Baudrate wählen (Muss vor dem Öffnen einer Verbindung geschehen)

x 			= 0 :   10kbps	(momentan nicht unterstüzt, wie x = 3)
x 			= 1 :   20kbps	(momentan nicht unterstüzt, wie x = 3)
x 			= 2 :	50kpbs	(momentan nicht unterstüzt, wie x = 3)
x 			= 3 :  100kbps
x 			= 4 :  125kbps
x 			= 5 :  250kbps
x 			= 6 :  500kbps
x 			= 7 :  800kbps	(momentan nicht unterstüzt, wie x = 6)
x 			= 8 : 1000kbps

Baudrate setzen

xxxxxxx = Baudrate in bps, mit 0 auf 7 Stellen gepadded.
	  z.B. B0125000 =  125kbps
	  z.B. B1000000 = 1000kbps

CAN Kanal öffnen

Passiven CAN Kanal öffnen

Nur Empfang von Nachrichten, keinerlei Busbeeinflussung

CAN Kanal schließen

CAN Nachricht senden

ccc 		= CAN ID (HEX)
l		= Anzahl Datenbytes (1 <= l <= 8)
dd..		= Datenbytes (HEX) (Anzahl = l)

CAN Nachricht senden

cccccccc 	= CAN Extended ID (HEX)
l		= Anzahl Datenbytes (1 <= l <= 8)
dd..		= Datenbytes (HEX) (Anzahl = l)

CAN RTR Nachricht senden

ccc 		= CAN ID (HEX)
l		= Anzahl der angeforderten Datenbytes (1 <= l <= 8)

CAN RTR Nachricht senden

cccccccc	= CAN Extended ID (HEX)
l		= Anzahl der angeforderten Datenbytes (1 <= l <= 8)

Filter Maske festlegen

xxxxxxxx	= Filter Maske (HEX)

Filterwert festlegen

xxxxxxxx	= Filterwert (HEX)

CAN Fehler abfragen (Fehler werden bis zur Abfrage geodert, Abfrage setzt Fehler zurück)

Antwort:
	"Exx\r"
	xx	= Fehlerregister (HEX)

Hardwareversion abfragen

Antwort:
	"VMMmm\r"
	MM	= Major Version
	mm	= Minor Version

Firmwareversion abfragen

Antwort:
	"vMMmm\r"
	MM	= Major Version
	mm	= Minor Version

Seriennummer abfragen

Antwort:
	"Nssss\r"
	ssss	= Seriennummer