Startseite>SPI-Tester auf der Basis des CH341
Aus Raspberry Pi Geek 08/2019

SPI-Tester auf der Basis des CH341 (Seite 2)

Nach einem späteren Kernel-Update lässt sich das Modul nicht mehr laden. Sie müssen es dann mit den Headern des aktualisierten Kernels neu kompilieren und installieren. Zur Deinstallation des Moduls nutzen Sie das Kommando sudo make uninstall, das Sie im selben Verzeichnis absetzen, aus dem Sie den Treiber übersetzt haben.

Der Treiber erzeugt im Verzeichnis /dev/ die zusätzlichen Geräte spidev0.0, spidev0.1 und spidev0.2, über die das System mit dem CH341 kommunizieren kann. Dabei steht die Zahl vor dem Punkt für unterschiedliche SPI-Geräte (falls Sie mehr als einen Adapter verwenden) und die Zahl nach dem Punkt für die unterschiedlichen CS-Leitungen auf dem Adapter.

Fürs Erste vermag nur der User root auf das SPI-Gerät zuzugreifen. Um auch Benutzern ohne administrative Rechte den Zugriff auf die Schnittstelle zu gewähren, legen Sie im Verzeichnis /etc/udev/rules.d/ die Datei 51-spi.rules mit dem Inhalt aus Listing 3 an.

Listing 3

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5512", GROUP="users", MODE="0666"

Wie Sie sehen, kommt hier die ID zum Einsatz, die Sie mit Lsusb ermittelt haben. Das bedeutet, dass nur genau dieses Gerät die Berechtigung bekommt. Um die Datei zu schreiben, benötigen Sie Root-Rechte. Zum Aktivieren der Änderungen führen Sie das Kommando aus der ersten Zeile von Listing 4 aus. Danach trennen Sie den CH341-Adapter einmal kurz vom USB-Bus und verbinden ihn wieder. Zu guter Letzt prüfen Sie, ob die Gerätedateien jetzt die richtigen Berechtigungen aufweisen (zweite Zeile).

Listing 4

$ sudo service udev restart
$ ls -lisa /dev/spidev0.*
364 0 crw-rw-rw- 1 root users 153, 0 Mär 31 19:42 /dev/spidev0.0
446 0 crw-rw-rw- 1 root users 153, 1 Mär 31 19:42 /dev/spidev0.1
503 0 crw-rw-rw- 1 root users 153, 2 Mär 31 19:42 /dev/spidev0.2

Testprogramm

Um die Datenübertragung via SPI zu prüfen, verwenden wir ein kleines Testprogramm, das Sie mit den Kommandos aus Listing 5 von Github herunterladen und kompilieren. Es bringt zahlreiche Optionen mit (siehe Tabelle “Parameter”), die der Treiber nicht alle vollständig unterstützt. Auf der Homepage des Treibers [6] erfahren Sie bei Bedarf, welche Funktionen aktuell implementiert sind.

Listing 5

$ mkdir spitest
$ cd spitest
$ wget https://raw.githubusercontent.com/torvalds/linux/master/tools/spi/spidev_test.c
$ gcc -o spidev_test spidev_test.c

Parameter

Bedeutung

-D, --device

Gerät auswählen (Standard: /dev/spidev1.1)

-s, --speed

maximale Geschwindigkeit (Hz)

-d, --delay

Verzögerung (ms)

-b, --bpw

Bits pro Wort

-l, --loop

Loopback

-H, --cpha

Clock Phase

-O, --cpol

Clock Polarity

-L, --lsb

Least Significant Bit First

-C, --cs-high

Chip Select Active High

-3, --3wire

SI/SO Signals Shared

-v, --verbose

TX-Puffer anzeigen

-p

Daten senden

-N, --no-cs

No Chip Select

-R, --ready

Slave Pulls Low to Pause

-2, --dual

Dual Transfer

-4, --quad

Quad Transfer

Mit dem Kommando aus Listing 6 schreiben und lesen Sie die SPI-Schnittstelle gleichzeitig. Die hexadezimalen Zahlen, die der Befehl mit der Option -p übergibt, zeigt der Baustein über die LEDs an. Die Stellung der Schalter finden Sie in der RX-Zeile.

Listing 6

$ ./spidev_test -D /dev/spidev0.0 -p"\x55\x55" -v
spi mode: 0x8
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | 55 55 __ __ __ __ __ __ ... __ __ __ __ __ __  |UU|
RX | 81 81 __ __ __ __ __ __ ... __ __ __ __ __ __  |..|

Fazit

Arbeiten Sie hin und wieder mit Halbleitern, die über die SPI-Schnittstelle kommunizieren, leistet der CH341-Adapter gute Dienste: Er macht es leicht, zu überprüfen, ob die Datenübertragung zu den Geräten fehlerfrei arbeitet. Die Platinen mit den Schieberegistern helfen außerdem bei der Ausgabe im Rahmen von Tests. Damit steht Ihnen eine komplette kleine Testumgebung für SPI-Anwendungen zur Verfügung. Daneben zeigt sich wieder einmal, dass der gute alte SN7400 selbst heute seine Existenzberechtigung hat: Brauchen Sie nur eine einfache logische Schaltung, lässt die sich fast immer mit einem SN7400 realisieren. 

Der Autor

Martin Mohr entwickelte schon früh eine Vorliebe für alles, was blinkt. Eine Ausbildung zum Elektroniker verstärkte das noch. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte die alte Liebe zur Elektronik wieder.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland