完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在使用 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 设置。 你知道可能是什么问题吗? |
|
相关推荐
1个回答
|
|
有几个可能的原因会导致UART FIFO缓冲区中的数据损坏:
1. 硬件故障:UART控制器可能存在硬件故障或连接问题,导致数据在传输过程中被损坏。您可以尝试使用不同的UART控制器或更换硬件来解决此问题。 2. 中断竞争:如果使用中断来处理UART数据的发送和接收,在处理数据时可能会发生中断竞争。例如,当一个UART通道正在发送数据时,另一个UART通道的中断可能会干扰数据的传输,导致数据损坏。您可以尝试使用互斥锁或其他同步机制来解决中断竞争问题。 3. 缓冲区溢出:如果发送方以较快的速度发送数据,而接收方未能及时处理接收到的数据,缓冲区可能会溢出。这可能导致数据丢失或被覆盖,从而导致数据损坏。您可以增加缓冲区的大小或优化接收数据的处理速度来解决缓冲区溢出问题。 4. 电气干扰:UART通信可能受到电气干扰的影响,例如来自其他设备或电源线的干扰。这可能会导致数据传输中的位翻转或丢失,导致数据损坏。您可以尝试使用屏蔽电缆、隔离器件或增加地线和电源线的滤波器来减少电气干扰。 综上所述,要解决UART FIFO缓冲区中数据损坏的问题,您可以检查硬件连接、优化中断处理、增大缓冲区,以及减少电气干扰等方面。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 10:58 , Processed in 0.475410 second(s), Total 40, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号