我在使用 UART FIFO 缓冲区时遇到了以下问题。
问题描述:
当通过两个 UART 通道使用完整的 UART FIFO 缓冲区并通过两个通道进行
通信时,缓冲区中的数据有时会损坏,例如,UART 1 TX FIFO 缓冲区中的一个字节从 UART 0 TX FIFO 更改为一个字节(见下图)。
据我所见,问题发生在FIFO硬件的某个地方,因为软件发送的数据是正确的。
UART 设置:
* 波特率 = 115200U,* 数据位 = 8U,* 帧长度 = 8U,
* stop_bits = 1U,* 过采样 = 16U,
* parity_mode = XMC_USIC_CH_PARITY_
MODE_NONE
两个 UART 通道都使用 FIFO 缓冲区,没有任何中断。
缓冲区每 1 毫秒 TLE9243QK_BASE_BOARD 检查一次标志是否有可供读取或写入的内容。
UART_0 和 UART_1 使用的先出区域是分开连续读取和写入的,因此不可能受到干扰。
在以下情况下会出现问题:
-使用整个 64 字 UART FIFO 缓冲区:
* UART_0 TXFIFO = 8 个字 * UART_0 RXFIFO = 8 个字 * UART_1 TXFIFO = 16 个字
* UART_1 TXFIFO = 32 个字
-同时使用 UART_0 和 UART_1
有限的解决方法:如果不使用完整
的 FIFO 缓冲区(只有 48 个字),问题就会消失:
* UART_0 TXFIFO = 8 个字
* UART_0 RXFIFO = 8 个字
* UART_1 TXFIFO = 16 个字
* UART_1 TXFIFO =
16 个字
DAVE™ 允许我将 UART 配置为使用完整的 64 个条目 (8+8+16+32),以及 8 个数据位和 1 个停止位的 UART 设置。
你知道可能是什么问题吗?