====== SuperCAN mit Raspberry Pi ====== Das Interface verwendet den **Linux SocketCAN driver**. Dazu wird dann das entsprechende Kernelmodul benötigt welches dann das Interface als SocketCAN device einbindet. Das Interface kann dann direkt mit den "**can-utils** verwendet werden. ===== Installation ===== - Erst mal alle Schritte von [[https://github.com/jgressmann/supercan-linux/blob/main/README.md|SuperCAN - Linux - Readme]] durchführen. - Interface nun an den USB-Port anschließen und mal kontrollieren, ob es erkannt wurde und die USB Kommunikation in Ordnung ist:pi@raspberrypi:~ $ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=supercan_usb, 12M |__ Port 3: Dev 4, If 1, Class=Vendor Specific Class, Driver=supercan_usb, 12M |__ Port 3: Dev 4, If 2, Class=Application Specific Interface, Driver=, 12M sollte nun die 2 CAN-FD Kanäle anzeigen. \\ bzw. sollte in dem Kernel log nun folgendes auftauchen[ 1299.592718] usb 1-1.3: new full-speed USB device number 7 using dwc_otg [ 1299.749691] usb 1-1.3: New USB device found, idVendor=1d50, idProduct=5035, bcdDevice= 3.00 [ 1299.749708] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1299.749718] usb 1-1.3: Product: D5035-01 SuperCAN [ 1299.749727] usb 1-1.3: Manufacturer: 2guys [ 1299.749737] usb 1-1.3: SerialNumber: 487a4a8a5339393338202020ff131426 [ 1299.757322] supercan_usb 1-1.3:1.0: device proto version 1, little endian, cmd buffer of 64 bytes [ 1299.758928] supercan_usb 1-1.3:1.0: device features perm=0010 conf=0743 [ 1299.758952] supercan_usb 1-1.3:1.0: device D5035-01 SuperCAN ch0, serial 487a4a8a5339393338202020ff131426, firmware version 0.3.14 [ 1299.759298] supercan_usb 1-1.3:1.0: device has CAN msg buffer of 512 bytes [ 1299.759308] supercan_usb 1-1.3:1.0: device supports CAN-FD [ 1299.759317] supercan_usb 1-1.3:1.0: device supports monitoring mode [ 1299.759326] supercan_usb 1-1.3:1.0: device supports external loopback mode [ 1299.764817] supercan_usb 1-1.3:1.1: device proto version 1, little endian, cmd buffer of 64 bytes [ 1299.766302] supercan_usb 1-1.3:1.1: device features perm=0010 conf=0743 [ 1299.766326] supercan_usb 1-1.3:1.1: device D5035-01 SuperCAN ch1, serial 487a4a8a5339393338202020ff131426, firmware version 0.3.14 [ 1299.767799] supercan_usb 1-1.3:1.1: device has CAN msg buffer of 512 bytes [ 1299.767810] supercan_usb 1-1.3:1.1: device supports CAN-FD [ 1299.767819] supercan_usb 1-1.3:1.1: device supports monitoring mode [ 1299.767828] supercan_usb 1-1.3:1.1: device supports external loopback mode Wenn das alles in Ordnung ist, kann nun der Socket CAN-Treiber verwendet werden. - SocketCAN Device einrichten (Hinweis: da in meinem Raspi das PiCAN-Duo Modul verbaut ist, wird hier in den Beispielen can2/can3 genommen): * Baudrate einstellen:sudo ip link set can2 type can bitrate 500000 * Interface aktiviere:sudo ip link set up can2 * Nun sollte das Interface fertig eingerichtet sein und mit **ip -det link show can2** sollte folgendes kommen:pi@raspberrypi:~/ $ ip -det link show can2 6: can2: mtu 16 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10 link/can promiscuity 0 can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0 bitrate 500000 sample-point 0.875 tq 12 prop-seg 69 phase-seg1 70 phase-seg2 20 sjw 1 SuperCAN: tseg1 2..256 tseg2 2..128 sjw 1..128 brp 1..512 brp-inc 1 SuperCAN: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..32 dbrp-inc 1 clock 80000000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535Jetzt könne die Standard-Tools von den CAN-Utils verwendet werden, wie z.B. candump can2 oder cansniffer -c -t 0 can2 ([[public:can-utils_tipps|Tipps zu den can-utils]]) * Das Schließen des CAN Kanals geschieht mit sudo ip link set down can2