2015-08-09 36 views
1

我無法理解以下內容的含義「USART發送數據緩衝寄存器(TXB)和USART接收數據緩衝寄存器(RXB)共享相同的I/O地址」兩個數據寄存器,如何共享相同的地址?UDR(UART數據寄存器)問題

回答

1

寄存器地址對於TXB和RBX都是一樣的,實際尋址寄存器由UART的模式(讀或寫模式)決定。這取決於實際的實施,但通常是設置一個或兩個以上的引腳。

+0

感謝您的回放,但根據您的答案,據我所知,UART將作爲半雙工工作,並且我知道UART工作爲全雙工 – yassin

+1

是的,但UART有兩個接口,一個接CPU,一個接其餘接口世界,與不同的時鐘一起工作。 CPU具有更快的時鐘,並且可以一次訪問寄存器。 – SimoV8

2

現在很清楚 enter image description here 從圖中可以看到發射器和接收器共享UDR(UART數據寄存器)。實際上它們只共享UDR地址:「真實」寄存器分爲發送器和接收器寄存器,因此接收到的數據不能覆蓋寫入發送寄存器的數據。因此,您無法讀回您寫入發送器寄存器的數據。

0

您可以將UDR寄存器視爲TXD和RXD寄存器之間的緩衝區。 如您所知,UART在總線上逐位發送,當接收到的數據位正在進入RXD寄存器時,當所有字節都被接收到時,它將被複制到UDR寄存器並且該標誌被喚醒,現在您應該讀取UDR寄存器並且如果你寫信給它,你將失去接收的字節!

以同樣的方式在傳輸中,您在UDR中寫入一個字節,然後將其移入TXD,然後從寄存器逐位輸出,並且在傳輸過程中UDR爲空。

這就是爲什麼當UDR變空時UDR會出現中斷,並且當傳輸完成時會中斷TXD。