Interface UDR(UART数据寄存器)问题

Interface UDR(UART数据寄存器)问题,interface,microcontroller,avr,uart,Interface,Microcontroller,Avr,Uart,我无法理解以下“USART传输数据缓冲寄存器(TXB)和USART接收数据缓冲寄存器(RXB)共享相同的I/O地址”的含义有两个数据寄存器。它们如何共享相同的地址 TXB和RBX的寄存器地址相同,实际寻址寄存器由UART所在的模式(读取或写入模式)确定。这取决于实际实现,但通常包括设置一个或两个以上管脚。TXB和RBX的寄存器地址相同,实际寻址寄存器由UART所在的模式(读取或写入模式)确定。这取决于实际实现,但通常包括设置一个或两个以上的管脚。现在很清楚了 从图中可以看到发射机和接收机共享UD

我无法理解以下“USART传输数据缓冲寄存器(TXB)和USART接收数据缓冲寄存器(RXB)共享相同的I/O地址”的含义有两个数据寄存器。它们如何共享相同的地址

TXB和RBX的寄存器地址相同,实际寻址寄存器由UART所在的模式(读取或写入模式)确定。这取决于实际实现,但通常包括设置一个或两个以上管脚。

TXB和RBX的寄存器地址相同,实际寻址寄存器由UART所在的模式(读取或写入模式)确定。这取决于实际实现,但通常包括设置一个或两个以上的管脚。

现在很清楚了 从图中可以看到发射机和接收机共享UDR(UART数据寄存器)。实际上,它们只共享UDR地址:“实”寄存器分为发送器和接收器寄存器,因此接收到的数据不能覆盖写入发送寄存器的数据。因此,您无法读回写入变送器寄存器的数据。

现在已经清楚了
从图中可以看到发射机和接收机共享UDR(UART数据寄存器)。实际上,它们只共享UDR地址:“实”寄存器分为发送器和接收器寄存器,因此接收到的数据不能覆盖写入发送寄存器的数据。因此,你不能读取你写在发送器登记器中的数据。

你可以考虑UDR登记器作为TXD和RXD寄存器之间的缓冲区。 正如您所知,UART是在总线中逐位发送的,当接收位进入RXD寄存器时,当接收到所有字节时,它会复制到UDR寄存器,并且标志会被提升,现在您应该读取UDR寄存器,如果您向其写入,您将丢失接收到的字节

在传输过程中,使用相同的方法,在UDR中写入a字节,然后将其移动到TXD,然后从寄存器位逐位输出,并且在传输过程中UDR为空


这就是为什么当UDR变空时,UDR会中断,而当传输完成时,TXD会中断

> P>可以考虑UDR登记器作为TXD和RXD寄存器之间的缓冲区。 正如您所知,UART是在总线中逐位发送的,当接收位进入RXD寄存器时,当接收到所有字节时,它会复制到UDR寄存器,并且标志会被提升,现在您应该读取UDR寄存器,如果您向其写入,您将丢失接收到的字节

在传输过程中,使用相同的方法,在UDR中写入a字节,然后将其移动到TXD,然后从寄存器位逐位输出,并且在传输过程中UDR为空


这就是为什么当UDR变空时,UDR会中断,而当传输完成时,TXD会中断

感谢您的重播,但根据您的回答,据我所知,UART将作为半双工工作,我知道UART作为全双工工作。是的,但UART有两个接口,一个与CPU,一个与世界其他地方,使用不同的时钟工作。CPU的时钟快得多,一次可以访问一个寄存器。感谢您的重播,但根据您的回答,据我所知,UART将作为半双工工作,我知道UART作为全双工工作。是的,但UART有两个接口,一个与CPU,一个与世界其他地方,使用不同的时钟。CPU的时钟快得多,一次可以访问一个寄存器。