SocketCAN Tutorial 2 - PEAK Adapter

Diese Anleitung wurde am 27.02.2012 aktualisiert und bezieht sich nun auf Treiber-Version 7.4 und Ubuntu 11.10.

Dieses Tutorial ist eine Fortsetzung des ersten SocketCAN Tutorials, das die Verwendung von virtuellen CAN-Devices beschreibt. In diesem Tutorial soll es jetzt um reale Busse und deren Verwendung mit SocketCAN gehen. Im Speziellen geht es um die PCAN-USB Adapter der Firma PEAK.

Kompilieren des PEAK Treibers

Die Treiber für die Adapter werden zur Zeit für Linux nur im Sourcecode bereitgestellt. Auf der Downloadseite finden sich einige Informationen über die unterstützte Hardware und die Einstellungsmöglichkeiten. Im Folgenden installieren wir die aktuelle Version 7.4 des Treibers. Es wird von einer aktuellen Ubuntu-Installation (11.10) ausgegangen.

Zunächst einmal müssen die benötigten Pakete zum Kompilieren installiert werden:

sudo apt-get install build-essential linux-headers-generic libpopt-dev

Anschließend kann der Treiber heruntergeladen und entpackt werden:

<code class="language-bash">wget http://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-7.4.tar.gz
tar xvf peak-linux-driver-7.4.tar.gz
cd peak-linux-driver-7.4/driver/</code>

Nun kann der Treiber kompiliert und installiert werden:

<code class="language-bash">make
sudo make install</code>

Wenn alles fehlerfrei geklappt hat sind nun die Kernel-Module im System eingerichtet.

Laden der erforderlichen Module

Jetzt müssen die erforderlichen SocketCAN-Module und der PEAK-Treiber geladen werden.

<code class="language-bash">sudo modprobe can
sudo modprobe can_bcm
sudo modprobe can_raw
sudo modprobe pcan</code>

Aktivieren des Devices

Falls noch nicht geschehen kann jetzt der PCAN-Adapter mit dem Computer verbunden werden. Es sollte nun unter /dev/ ein neues Device des typs pcan* auftauchen. Dies ist noch kein neues SocketCAN-Interface sondern vielmehr ein “Hilfs-Device”, das der Konfiguration des Adapters dient. Über den folgenden Befehl lässt sich eine Liste der verbundenen PEAK-Adapter mit deren SocketCAN Interface-Namen anzeigen:

cat /proc/pcan

Falls dies das einzige und erste CAN-Device ist heißt es wahrscheinlich ‘can0’. Davon wird im Folgenden ausgegangen. Das zugehörige SocketCAN-Interface kann nun mit

ip link set up can0

hochgefahren werden.

Einstellen der Baudrate

Wahrscheinlich sind jetzt noch keine Daten auf dem Bus zu sehen. Zunächst muss der Adapter noch auf die korrekte Baudrate eingestellt werden. Dafür wird das PEAK-Character-Device unter /dev/ benötigt. Das folgende Beispiel setzt die Baudrate des ‘pcan32’ auf 500kBit/s:

echo "i 0x001C e" > /dev/pcan32

Für andere Baudraten muss der Befehl entsprechend der nachfolgenden Auflistung angepasst werden:

0x0014 1Mbit/s 0x001C 500 kBit/s 0x011C  250 kBit/s 0x031C 125 kBit/s 0x432F 100 kBit/s 0x472F 50 kBit/s 0x532F 20 kBit/s 0x672F 10 kBit/s 0x7F7F 5 kBit/s

Wenn auf dem Computer bereits die SocketCAN-Utilities installiert sind können nun die Frames auf dem Bus mit ‘cansniffer’ betrachtet, oder neue Frames mit ‘cansend’ verschickt werden.

Comments