在RTT下,AT32F437串口丢数据
如下图所示,串口助手循环发送,间隔时间100ms,会不定时的丢1字节数据。串口配置为115200,串口RB设置为4096,中断接收,轮询发送。您好,在我的环境下没能复现出您的问题现象。
前不久对串口驱动中的中断接收处理部分有提交过一点更新,您可更新仓库或自行修改试试看。改动点如下图,屏蔽掉如图鼠标所示语句即可: 这种问题不好找,可以先裸机跑一跑。 裸机跑的没问题,那大概率就是RTT的问题了。如果是RTT的问题,更新一下RTT版本试试。 串口是挺常用的通信了,不应该有这种问题,是不是线虚的问题? 我也遇到这个问题,我使用的是RT-THREAD studio系统使用的是4.1版本的,芯片使用的是AT32F437VMT7,实际测试时钟频率再108Mhz以上时,基本没有丢字节的情况,在时钟在108MHz,或者低于108Mhz时,丢的越频繁。目前没有找到问题,暂且将时钟频率调高使用。 rlyabc 发表于 2022-11-2 17:13
我也遇到这个问题,我使用的是RT-THREAD studio系统使用的是4.1版本的,芯片使用的是AT32F437VMT7,实际测 ...
这种情况有可能时钟频率不稳定导致的? 降低115200搭配9600试试看还会不会丢数据呢 首选排除串口调试助手本身的问题 因为有可能是数据源头出现了问题 丢掉的数据的位置是固定的吗 还是一个随机数据呢 100ms的时间间隔足够了 只不顾每包发送的数据是不是过大呢 楼主是使用的轮询接收模式还是中断接收模式呀 实际使用的主频配置为多少了会不会因为主频过高导致丢失数据呢 中断优先级设置高一点 如果你的中断优先级不是最高的话可能会丢数据,这个时候会发生过载错误,你可以debug看是否进入错误中断,串口通信最好采用DMA方式,DMA设置为循环方式,在定时器中断里面判断DMA传输数量是否变化,如果有变化说明有数据接收,然后启动超时判断,超时结束时那么就接收完成了
页:
[1]