This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] UCD3138A:有关 UART 初始化的问题

Guru**** 2343770 points
Other Parts Discussed in Thread: UCD3138
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/613844/ucd3138a-questions-about-uart-initialization

器件型号:UCD3138A
主题中讨论的其他器件:UCD3138

尊敬的 TI 员工:

 

我对 UART 有一些问题。 以下代码是 UART 的 Init 演示代码。

我的问题是:

  1. 为什么它在通过设置 Uart0Regs.UARTCTRL3.bit.SW_RESET = 1来配置其他控制寄存器后实现软件复位?

  2. 为什么初始化结束时总是会有一个“Uart0Regs.UARTTXBUF.ALL =';”?

  3. 是否通过 UART 软件复位来清除 RXRDY 标志?

  4. 为什么在将0xff 写入 UARTINTST 后它会向 UARTINTST 写入0? 根据数据表声明(如下所示)、只需向位写入1即可清除标志。

R/C-表示该位可以被读取或清除;除了 RXERR 和总线忙外的每个位都可以通过写1清零。 (第430页、《UCD3138数字电源控制器技术参考手册》)

 

   Uart0Regs.UARTCTRL3.bit.SW_RESET = 0;//初始化 UART 时软件复位

 

   Uart0Regs.UARTCTRL0.bit.data_size = 7;//8位

   Uart0Regs.UARTCTRL0.bit.STOP = 1;/2停止位

   Uart0Regs.UARTCTRL0.bit.SYNC_MODE = 1;//异步模式

 

   Uart0Regs.UARTHBAUD.bit_BAUD_DIV_H = 0;

   Uart0Regs.UARTMBAUD.bit.BAUD_DIV_M = 0;

   Uart0Regs.UARTLBAUD.bit.BAUD_DIV_L = 49;//对于38400 //对于控制板为47,对于开环为44

 

   Uart0Regs.UARTRRXST.bit.RX_ENA=1;//启用 RX

 

   Uart0Regs.UARTTXST.bit.TX_ENA=1;//启用 TX

 

   UART0Regs.UARTINTST.ALL = 0xff;//这两条语句应清除状态位

   Uart0Regs.UARTINTST.ALL = 0;

 

   RX_BYTE = Uart1Regs.UARTRXBUF.bit.RXDAT;//清除 RXRDY 标志

   

   Uart0Regs.UARTIOCTRLTX.bit.IO_FUNC = 1;//启用发送引脚

   Uart0Regs.UARTIOCTRLRX.bit.IO_FUNC = 1;//启用接收引脚

 

   Uart0Regs.UARTCTRL3.bit.clock = 1;//内部时钟选择;

   Uart0Regs.UARTCTRL3.bit.SW_RESET = 1;//软件复位已释放 UART 初始化完成?

 

   Uart0Regs.UARTIOCTRLSCLK/bit.IO_FUNC = 0;//禁用 UART 的外部时钟。

 

   Uart0Regs.UARTTXBUF.ALL =';//输出一个字节来启动操作。

期待您的回复

此致

黄达纳

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dana、


    为什么它在通过设置 Uart0Regs.UARTCTRL3.bit.SW_RESET = 1来配置其他控制寄存器后实现软件复位?

    ---软件复位是为了停止运行带有初始波特率值的 UART,然后开始使用新值。

    为什么初始化结束时总是会出现“Uart0Regs.UARTTXBUF.ALL =”;”?
    这不是必需的。 但如果使用 UART TX 中断、则需要执行此操作。

    是否通过 UART 软件复位来清除 RXRDY 标志?
    是的。

    向 UARTINTST 写入0xff 后、为什么向 UARTINTST 写入0? 根据数据表声明(如下所示)、只需向位写入1即可清除标志。

    --是的,但我们需要停止清除这些位,因此之后会写入0。

    谢谢、
    Sanatan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sanatan、

    非常感谢!!! 这有助于我了解 UART 初始化。