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.

[参考译文] TMS320F28386D:如何清除 CM UART RxError?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/979996/tms320f28386d-how-to-clear-cm-uart-rxerror

器件型号:TMS320F28386D

您好!

我使用 CM UART 模块。

如果我有时发送错误的数据包并获取错误位 FE 并且 来自 UART_getRxError()。

在调用以下进程后 、UARTRSR 寄存器仍然具有 FE、并且不起作用(UART_clearRxError())。 建议使用的标准软件复位方法是什么?

UART_clearRxError( UART0_BASE );

UART_setConfig (UART0_BASE、UART_CLK_FREQ、921600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

UART_enableFIFO (UART0_BASE);

UART_setFIFOLevel (UART0_BASE、UART_FIFO_TX1_8、UART_FIFO_RX1_8);

2、UARTRSR 和 UARTECR 的地址是否与 0x4000C004相同?  TRM 中的 UARTRSR 寄存器表示它是只读的。 但 UARTECR 可以写入任何值以清除状态。 这很奇怪。

3.我提到 SCI SciaRegs.SCICTL1.bit.SWRESET。 调用 SYSCTL_resetPeripheral (SYSCTL_Periph_RES_UART0)可以复位所有错误状态(请参阅下面的)。 这种方法是否有风险?

UART_clearRxError( UART0_BASE );

SYSCTL_resetPeripheral (SYSCTL_Periph_RES_UART0);

UART_setConfig (UART0_BASE、UART_CLK_FREQ、921600,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

UART_enableFIFO (UART0_BASE);

UART_setFIFOLevel (UART0_BASE、UART_FIFO_TX1_8、UART_FIFO_RX1_8);

谢谢

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

    您好、Frederick、

    UARTRSR 和 UARTECR 寄存 器都位于同一地址0x4000C004。 当从该位置读取数据时、将读取 UARTRSR 的内容、当对该位置执行写操作时、将对该位置写入 UARTECR。  

    如 TRM 中所述、对 UARTECR 的任何写入都应清除错误状态。  

    因此 UART_clearRxError( UART0_BASE );在您的情况下应该起作用。 请检查是否不断为外设设置错误、这可能是由于您进行了设置。 请重新检查针脚连接。  

    SYSCTL_resetPeripheral (SYSCTL_PERIPH_RES_UART0);仅建议在外设开始时使用、因为在此之后、您必须配置外设的所有参数、并且 FIFO 中的数据也将丢失。 而 UART_clearRxError()不会导致 FIFO 数据丢失。

    此致、

    Yashwant  

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

    您好、 Yashwant、

    谢谢您,我可以清除 UART_clearRxError()。  

    如果我调用 sysctl_resetPeripheral()或 UART_setConfig(),并且 UART 硬件仍在同时通信。

     当我读取下一 个 UARTDR 时、可能会导致获取 UARTRSR FE 或成为位?

    此致、

    弗雷德里克。

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

    您好!

     UART_setConfig()禁用 UART,然后在配置后将其启用。 如果在总线上有一些传输时启用它、则可能会设置一些错误、因为它可能无法检测停止位。  

    此致、

    Yashwant