請您告訴我接收/發送FIFO與UART中的數據寄存器有什麼區別?UART中的接收/發送FIFO與數據寄存器
這是我第一次開發UART的驅動程序代碼,所以我第一次遇到這個問題。我真的無法理解這種差異。請幫幫我!
請您告訴我接收/發送FIFO與UART中的數據寄存器有什麼區別?UART中的接收/發送FIFO與數據寄存器
這是我第一次開發UART的驅動程序代碼,所以我第一次遇到這個問題。我真的無法理解這種差異。請幫幫我!
一旦寫入發送數據寄存器,字節將進入發送FIFO,它將一直待到物理線路準備好發送。
另一種方式是相同的,數據來自物理線路並進入接收FIFO,等待用戶代碼通過讀取接收數據寄存器來收集它。
UART中的FIFO(先進先出)緩衝區是一個硬件實現的接收或傳輸數據隊列。您不直接訪問FIFO,而是讀取或寫入數據寄存器,並自動從隊列頭部讀取或寫入數據。
FIFO可以提高鏈路效率,因爲它允許軟件數據的讀/寫時序發生變化,同時保持物理鏈路上的流數據。
當FIFO禁用或者沒有FIFO的UART時,只有兩個字節的緩衝區 - 移位寄存器和數據寄存器。對於輸入數據,如果軟件在收到新數據之前沒有及時讀取數據寄存器,它將被覆蓋並且數據將丟失。同樣對於傳輸而言,如果數據寫入速度不如傳輸速度那麼快,則可能無法實現鏈路的全部帶寬和效率。
FIFO是可能的,而不確定性的實時外特性系統中可能存在的UART的及時服務(如Desjktop PC上運行通用操作系統,如Windows不能保證最有用例如),但是在使用緩衝中斷驅動串行I/O的嵌入式系統中,在許多情況下,FIFO可能並不完全適用於低到中等數據速率。在微控制器上,缺乏FIFO的UARTS通常支持DMA,這可以更有效地管理大型流式數據突發。
嗨,歡迎來到Stackoverflow。這個地方不是一個代碼工廠。請提供您的問題示例代碼或您認爲將工作,什麼不工作。如果你先做了一些工作,人們就會更容易幫忙。同時添加更多相關標籤,讓您的問題覆蓋更多可能幫助您的用戶。 – Starlord
當詢問外設(如UART)中的特定寄存器時,指定硬件平臺非常有用,因爲不同設備使用的寄存器有很大的差異。 –