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.
您好!
我使用 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