Serielle Kommunikation vs. Gerätetreiber

471
pnongrata

Mein Verständnis ist, dass die serielle Kommunikation für die direkte Kommunikation von CPU zu CPU (oder von Mikrocontroller zu Mikrocontroller) über einen seriellen Bus vorgesehen ist.

Ich verstehe, dass ein Gerätetreiber für die Kommunikation von Gerät zu CPU oder von Gerät zu Mikrocontroller vorgesehen ist. Im Wesentlichen wird der CPU mitgeteilt, wie Daten an bestimmten Pins gelesen / geschrieben werden müssen, um eine korrekte Kommunikation mit dem Rohgerät zu ermöglichen.

Bin ich hier richtig oder weit weg von der Basis? Wenn etwas, wofür ich es gesagt habe, nicht wahr ist oder falsch verstanden wird, bitte klarstellen / korrigieren! Ich bin im Grunde auf der Suche nach einem Litmus, mit dem ich entscheiden kann, wann ich SPI oder I2C oder UART (serielle Kommunikation) oder nur einen Treiber verwenden muss. Danke im Voraus.

0
Die serielle Kommunikation ist von Gerät zu Gerät, nicht von CPU zu CPU. (Das Gerät wäre auf jeder Seite eine serielle Schnittstelle.) David Schwartz vor 11 Jahren 1
Danke @DavidSchwartz (+1) - können Sie genauer sagen, was Sie meinen, wenn Sie * Gerät * sagen. Würde sich eine MCU (z. B. eine ARM-CPU und einige LEDs auf derselben Leiterplatte) nicht als Gerät qualifizieren? In diesem Fall ist es nicht die ARM-CPU auf der MCU, die mit der CPU in Verbindung steht, mit der sie verbunden ist (seriell). Ich denke, ich sehe nicht den Unterschied zwischen * Gerät * und * CPU *. Danke noch einmal. pnongrata vor 11 Jahren 0
Eine CPU führt Berechnungen durch und trifft Entscheidungen. Ein Gerät ist eine Verbindung zwischen einer CPU und einem Peripheriegerät oder einem anderen Gerät. Ein Mikrocontroller enthält sowohl eine CPU als auch einige Geräte auf demselben Chip. David Schwartz vor 11 Jahren 1
Nochmals vielen Dank @DavidSchwartz (+1), aber immer noch nicht verstanden, wann ein Gerätetreiber benötigt wird und wann die serielle Kommunikation geeigneter ist. pnongrata vor 11 Jahren 0
Ich denke, Ihnen fehlt etwas Wesentliches, denn es ist wie "Wann sollte ich ein Auto benutzen und wann sollte ich einen Hammer verwenden". Ein Gerätetreiber ist eine Software, die auf einer CPU ausgeführt wird und ein Gerät so steuert, dass es nützliche Arbeit leisten kann. Die serielle Kommunikation ist eine Möglichkeit für ein Gerät, mit einem anderen zu kommunizieren, bei dem Bits einzeln gesendet werden. David Schwartz vor 11 Jahren 0
OK, jetzt fangen wir an, an die Wurzel meiner Verwirrung zu gelangen. Für mich ist Ihre Definition eines Gerätetreibers und der seriellen Kommunikation im Grunde dasselbe. Ein Programm, das auf einer Maschine ausgeführt wird, verwendet den `XYZ`-Gerätetreiber zur Steuerung des` XYZ'-Geräts (möglicherweise etwas, das über einen USB-Anschluss angeschlossen ist). Wenn ich Ihre Definition richtig interpretiere, werden diese Befehle vom Gerät (z. B. einem Laptop) über die serielle Kommunikation an das `XYZ`-Gerät gesendet. Bedeutet das, dass Gerätetreiber tatsächlich SPI Serial Comm verwenden? Wenn ja, ist SPI-Kommunikation für Benutzeranwendungen verfügbar. Warum sollten Gerätetreiber verwendet werden? pnongrata vor 11 Jahren 0
Mit anderen Worten, wenn ich eine C-Anwendung schreiben kann, um auf meinem Laptop zu laufen, und SPI Serial Comm zum Senden / Empfangen von Daten und Befehlen an das `XYZ`-Gerät verwenden, warum benötige ich dann Gerätetreiber? pnongrata vor 11 Jahren 0
Der Code, der die serielle SPI-Kommunikation verwendet, ist ein Gerätetreiber. David Schwartz vor 11 Jahren 1
Ahh, kann man also sagen, dass der Gerätetreiber eine API für Benutzeranwendungen verfügbar machen und diese API-Aufrufe dann in Lese- / Schreibvorgänge an den SPI-Port / die SPI-Verbindung übersetzen soll. pnongrata vor 11 Jahren 0
Wenn es ausreichend kompliziert ist, definitiv. Wenn nicht, ist es wahrscheinlich immer noch eine gute Idee. David Schwartz vor 11 Jahren 0
Nochmals vielen Dank, wenn Sie das in eine Antwort umwandeln möchten, gebe ich Ihnen gerne den grünen Haken. pnongrata vor 11 Jahren 0

2 Antworten auf die Frage

1
David Schwartz

Bedeutet das, dass Gerätetreiber tatsächlich SPI Serial Comm verwenden? Wenn ja, ist SPI-Kommunikation für Benutzeranwendungen verfügbar. Warum sollten Gerätetreiber verwendet werden?

Viele Gründe:

Möglicherweise möchten Sie Code schreiben, der verschiedene Arten der seriellen Kommunikation verwenden kann, ohne den übergeordneten Code ändern zu müssen.

Möglicherweise möchten Sie den Zugriff auf die serielle Schnittstelle von verschiedenen Anwendungen aus moderieren.

Die serielle Schnittstelle kann bei Interrupts am effizientesten sein, und Sie müssen Interrupts in Low-Level-Code behandeln.

Und so weiter.

0
Isaac Rabinovitch

The term "serial communication" refers to any digital communication that transfers one bit at a time. This is opposed to parallel communication, where multiple bits are transferred at a time.

Your misunderstanding of serial communication comes from confusing a particular application of serial communication with the idea of serial communication. There are actually a huge number of applications.