【问题标题】:UDR (UART data register)issuesUDR(UART 数据寄存器)问题
【发布时间】:2015-08-09 13:13:16
【问题描述】:

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

【问题讨论】:

    标签: interface microcontroller avr uart


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的重播,但根据您的回答,据我所知,UART 将作为半双工工作,并且我知道 UART 作为全双工工作
      • 是的,但是 UART 有两个接口,一个与 CPU 连接,一个与世界其他地方连接,它们使用不同的时钟。 CPU 具有更快的时钟,并且可以一次访问一个寄存器。
      【解决方案3】:

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

      传输时同理,将a字节写入UDR,然后移动到TXD,然后逐位从寄存器输出,传输过程中UDR为空。

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

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多