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
- '\r' / 0x13 (ACK) falls der Befehl erfolgreich verarbeitet wurde,
- '\a' / 0x07 (NACK) falls der Befehl nicht verarbeitet wurde
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
tcccldd…
Normale CAN Nachricht empfangen
ccc = CAN ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l)
Tccccccccldd…
Extended ID CAN Nachricht empfangen
cccccccc = CAN ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l)
rcccl
RTR CAN Nachricht empfangen
ccc = CAN ID (HEX) l = Anzahl angeforderter Datenbytes (1 <= l <= 8)
Rccccccccl
Extended ID RTR CAN Nachricht empfangen
cccccccc = CAN ID (HEX) l = Anzahl angeforderter Datenbytes (1 <= l <= 8)
Befehle
Sx
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
Bxxxxxxx
Baudrate setzen
xxxxxxx = Baudrate in bps, mit 0 auf 7 Stellen gepadded. z.B. B0125000 = 125kbps z.B. B1000000 = 1000kbps
O
CAN Kanal öffnen
L
Passiven CAN Kanal öffnen
Nur Empfang von Nachrichten, keinerlei Busbeeinflussung
C
CAN Kanal schließen
tcccldd…
CAN Nachricht senden
ccc = CAN ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l)
tccccccccldd…
CAN Nachricht senden
cccccccc = CAN Extended ID (HEX) l = Anzahl Datenbytes (1 <= l <= 8) dd.. = Datenbytes (HEX) (Anzahl = l)
rcccl
CAN RTR Nachricht senden
ccc = CAN ID (HEX) l = Anzahl der angeforderten Datenbytes (1 <= l <= 8)
Rccccccccl
CAN RTR Nachricht senden
cccccccc = CAN Extended ID (HEX) l = Anzahl der angeforderten Datenbytes (1 <= l <= 8)
Mxxxxxxxx
Filter Maske festlegen
xxxxxxxx = Filter Maske (HEX)
mxxxxxxxx
Filterwert festlegen
xxxxxxxx = Filterwert (HEX)
E
CAN Fehler abfragen (Fehler werden bis zur Abfrage geodert, Abfrage setzt Fehler zurück)
Antwort: "Exx\r" xx = Fehlerregister (HEX)
V
Hardwareversion abfragen
Antwort: "VMMmm\r" MM = Major Version mm = Minor Version
v
Firmwareversion abfragen
Antwort: "vMMmm\r" MM = Major Version mm = Minor Version
N
Seriennummer abfragen
Antwort: "Nssss\r" ssss = Seriennummer
