2016-12-03 2 views
0

Könnten Sie mir bitte sagen, was ist der Unterschied zwischen Empfangen/Senden FIFO und dem Datenregister in UART?Empfangen/Senden FIFO vs Datenregister in UART

Dies ist das erste Mal, dass ich Treibercode für UART entwickle und so das erste Mal, dass ich damit konfrontiert bin. Ich bin wirklich nicht in der Lage, den Unterschied zu verstehen. Bitte hilf mir!

+0

Hallo und willkommen zu Stackoverflow. Dieser Ort ist keine Code-Fabrik. Bitte geben Sie Ihre Frage mit Beispielcode oder was Sie denken, funktioniert, was nicht funktioniert hat. Es ist einfacher für Leute zu helfen, wenn du zuerst etwas Arbeit erledigt hast. Fügen Sie auch weitere verwandte Tags hinzu, damit Ihre Frage mehr Nutzer erreicht, die Ihnen helfen können. – Starlord

+0

Wenn Sie nach bestimmten Registern in einem Peripheriegerät wie einem UART fragen, ist es sehr nützlich, die Hardwareplattform anzugeben, da es sehr große Variationen in den Registern gibt, die von verschiedenen Geräten verwendet werden. –

Antwort

0

Sobald Sie in das Übertragungsdatenregister schreiben, geht das Byte zum Sende-FIFO, es wird dort sitzen, bis physikalische Leitungen bereit sind zu übertragen.

Die andere Möglichkeit ist die gleiche, Daten kommen von physischen Linien und gehen zum Empfangs-FIFO, warten auf den Benutzercode, um es durch Lesen eines Received-Datenregisters zu sammeln.

2

Ein FIFO-Puffer (First-In-First-Out) in einem UART ist eine Hardware-implementierte Warteschlange von empfangenen oder übertragenen Daten. Sie greifen nicht direkt auf das FIFO zu, Sie lesen oder schreiben das Datenregister und diese Daten werden automatisch vom Kopf der Warteschlange gelesen oder geschrieben.

Ein FIFO kann die Verbindungseffizienz verbessern, da das Timing der Software-Daten-Lese-/Schreibvorgänge variieren kann, während die Streaming-Daten auf der physischen Verbindung beibehalten werden.

Wenn der FIFO deaktiviert ist oder für einen UART ohne FIFO, gibt es nur zwei Bytes der Pufferung - das Schieberegister und das Datenregister. Wenn bei Eingabedaten die Software das Datenregister nicht rechtzeitig liest, bevor neue Daten empfangen werden, wird es überschrieben und Daten gehen verloren. Wenn die Daten nicht so schnell übertragen werden, wie sie übertragen werden, kann die volle Bandbreite und Effizienz der Verbindung nicht erreicht werden.

enter image description here

Ein FIFO ist vielleicht am nützlichsten auf Systemen ohne deterministische Echtzeit-performamce, wo es keine Garantien für die rechtzeitige Wartung des UART sein kann (wie ein Desjktop PC ein Universal OS wie Windows läuft B. in einem eingebetteten System, in dem gepufferte interruptgesteuerte serielle E/A verwendet wird, der FIFO in vielen Fällen jedoch nicht unbedingt für niedrige bis mittlere Datenraten notwendig ist. Auf Mikrocontrollern unterstützen UARTS, denen ein FIFO fehlt, oft DMA, was bei der Verwaltung großer Streaming-Datenbursts effektiver sein kann.