2015-08-09 32 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。