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

  1. Erst mal alle Schritte von SuperCAN - Linux - Readme durchführen.
  2. 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.

  3. 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: <NOARP,UP,LOWER_UP,ECHO> 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 65535

      Jetzt könne die Standard-Tools von den CAN-Utils verwendet werden, wie z.B.

      candump can2
      oder 
      cansniffer -c -t 0 can2

      (Tipps zu den can-utils)

    • Das Schließen des CAN Kanals geschieht mit
      sudo ip link set down can2