czech english

PeakCAN

USB CAN interface

Peak CAN je USB-CAN převodník, který jsme dosud používali pouze pro ladění a analýzu problémů. S vESC drivery, které používají rozšířené adresovaní CANU se však situace mění. Některé varianty Peak CAN navíc podporují CAN FD, který je plánován na Spider3.

  • http://www.peak-system.com/
  • varianty CAN (zdroj EHL elektronika s.r.o.)
  • PCAN-USB (IPEH-002021) 4680,- Kč + DPH
  • PCAN-USB opto-decoupled (IPEH-002022) 5720,- Kč+ DPH
  • PCAN-USB FD IPEH-004022 6370,- Kč + DPH
  • Python instalace pip install python-can (podporuje více převodníků)
Asi primární problém byl konfigurace. Nejde přímo import can.interface.pcan bez úprav, ale lze to obejít podle https://python-can.readthedocs.io/en/master/configuration.html:
bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000)
A možná může mít i cenu si udělat něco malého vlastního na motivy https://github.com/hardbyte/python-can/blob/develop/can/interfaces/pcan/pcan.py
Více informací případně zde https://www.peak-system.com/Support.55.0.html?&L=1 to basic api by nějak mělo fungovat pod win i lin, ale hlouběji jsem na to nekoukal (tj.nevím, co je preferované api na linuxu).
Problém na APU3 zatím byl (resp. se jeví) s driverem:
dmesg
[ 1277.303282] usb 1-2: new high-speed USB device number 2 using xhci_hcd
[ 1277.427048] usb 1-2: New USB device found, idVendor=0c72, idProduct=0012
[ 1277.433795] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 1277.440991] usb 1-2: Product: PCAN-USB FD
[ 1277.445041] usb 1-2: Manufacturer: PEAK-System Technik GmbH

Příklad užití

import can
bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000)

for msg in bus:
  print(msg)
>>> bus
<can.interfaces.pcan.pcan.PcanBus object at 0x00000000021C5518>
pak dáva
Timestamp: 1560885866.643092        ID: 077f    S                DLC:  1    7f
Timestamp: 1560885867.642977        ID: 077f    S                DLC:  1    7f
Timestamp: 1560885868.642904        ID: 077f    S                DLC:  1    7f
Timestamp: 1560885869.642915        ID: 077f    S                DLC:  1    7f

Linux driver

The configuration item CONFIG_CAN_PEAK_USB:
  • prompt: PEAK PCAN-USB/USB Pro interfaces for CAN 2.0b/CAN-FD
  • type: tristate
  • depends on: (none)
  • defined in drivers/net/can/usb/Kconfig
  • found in Linux kernels: 4.0–4.20, 5.0–5.1, 5.2-rc+HEAD
  • modules built: peak_usb
Takže to chce module peak_usb a verzi kernelu dle výše vyjmenovaného.

Jakub 6/7

Zkouším to na KDE neon (Ubuntu 18.04). Kromě gcc a g++ bylo potřeba doinstalovat ještě libpopt-dev.

Jakub 7/7

Tak ještě update ohledně apu (asi jen pro info):
apt-get install make gcc g++ libpopt-dev linux-headers
wget http://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.8.0.tar.gz
tar xvzf peak-linux-driver-8.8.0.tar.gz
cd peak-linux-driver-8.8.0
make clean
make
make install