Wie liest Daten von einem seriellen (SPI) - Verbindung in C?

Ich versuche, ein Programm zu schreiben, das installiert wird, auf einem Linux-MCU (Raspberry Pi), das Lesen von seriellen Daten kommen, um es aus noch einem anderen MCU (etwas homegrown, dass ich mir selbst zu bauen).

Habe ich recherchiert, wie dies zu tun, und denke, dass ich das "große Bild", aber noch fehlen ein paar Dinge. Zum einen, brauche ich zum aktivieren des kernel-Moduls und geben mir Zugang zu dem Gerät:

sudo modprobe spi_bcm2708
sudo chown `id -u`.`id -g` /dev/spidev0.*

Von dort können das berühmte C-Datei zum testen des SPI-Verbindung.

So, jetzt ist die Verbindung da, aber ich muss es noch Lesen von seriellen Daten aus. Nach der Antwort auf diese Frage ALSO, ich muss einfach:

...öffnen Sie den entsprechenden port für das Lesen und verwenden read() um die Daten zu erhalten.

Jedoch das code-snippet in dieser Antwort scheint sich zu öffnen einen port durch einen Gerätetreiber, der nicht per SPI.

Meine Verständnis war, dass ich verwenden könnte, SPI zum Lesen von Daten aus dem angeschlossenen MCU-Gerät, und das würde ich nicht schreiben müssen, mein eigenes Gerät Treiber für das entsprechende Gerät. Ist das wahr? Wenn ja, wie würde ich Lesen aus einer SPI-Verbindung, und wie würde das code anders als der code in der Antwort auf die Frage oben verlinkten?

Und wenn mein Verständnis falsch ist, und ich lese "durch" ein device-Treiber, wozu brauche ich den Treiber überhaupt? Nicht, dass das, was SPI Hoffnungen zu umgehen? Vielen Dank im Voraus.

nur int fd = open("/dev/spidevname", O_RDONLY); dann verwenden tcsetattr().
Danke @H2CO3 (+1) - aber ist das nicht /dev/spidevname ein Treiber? Oder ist es der Treiber für den SPI-port (in dem Fall, dass macht Sinn, und ich denke, dass ich "get it"). Nochmals vielen Dank.
wenn Sie schließen Sie ein unterstütztes Gerät, dann die Treiber/der kernel einen speziellen device-Datei, um Sie in der Lage sein, darauf zuzugreifen, und dieses spezielle Gerät aufgelistet ist unter /dev. Das ist nicht "der Fahrer" - der Treiber ist eine software-Komponente, die die eigentliche low-level - (hadrware -) Kommunikation.
Ok, jetzt sind wir an die Wurzel meiner Frage: der MCU, dass ich den Anschluss ist ein Brett ich selbst (es enthält eine Kamera, einige LEDs und einem ARM-Prozessor alle auf der gleichen platine). So Frage ich mich, wenn ich schreiben müssen, ein Gerätetreiber für diese homegrown-MCU, und installieren/laden Sie den Treiber auf meiner Mainboard (wo der gesamte code für das Lesen von seriellen verbindungen wird ausgeführt). Wenn ich schreiben müssen, meine eigenen Treiber, dann warum? Ich dachte, das ist der service, SPI zur Verfügung gestellt. Und wenn ich nicht schreiben müssen, meine eigenen Treiber, dann wie wird /dev/spidevname für mich verfügbar sein?

InformationsquelleAutor IAmYourFaja | 2012-12-10

Schreibe einen Kommentar