hj19910310 发表于 2022-10-21 16:33

在RTT下,AT32F437串口丢数据

如下图所示,串口助手循环发送,间隔时间100ms,会不定时的丢1字节数据。串口配置为115200,串口RB设置为4096,中断接收,轮询发送。


sheltonyu 发表于 2022-10-24 10:58

您好,在我的环境下没能复现出您的问题现象。
前不久对串口驱动中的中断接收处理部分有提交过一点更新,您可更新仓库或自行修改试试看。改动点如下图,屏蔽掉如图鼠标所示语句即可:

Pretext 发表于 2022-11-1 17:24

这种问题不好找,可以先裸机跑一跑。

Pretext 发表于 2022-11-1 17:25

裸机跑的没问题,那大概率就是RTT的问题了。如果是RTT的问题,更新一下RTT版本试试。

朝生 发表于 2022-11-1 17:26

串口是挺常用的通信了,不应该有这种问题,是不是线虚的问题?

rlyabc 发表于 2022-11-2 17:13

我也遇到这个问题,我使用的是RT-THREAD studio系统使用的是4.1版本的,芯片使用的是AT32F437VMT7,实际测试时钟频率再108Mhz以上时,基本没有丢字节的情况,在时钟在108MHz,或者低于108Mhz时,丢的越频繁。目前没有找到问题,暂且将时钟频率调高使用。

V853 发表于 2022-11-5 10:17

rlyabc 发表于 2022-11-2 17:13
我也遇到这个问题,我使用的是RT-THREAD studio系统使用的是4.1版本的,芯片使用的是AT32F437VMT7,实际测 ...

这种情况有可能时钟频率不稳定导致的?

tpgf 发表于 2022-11-7 14:58

降低115200搭配9600试试看还会不会丢数据呢

八层楼 发表于 2022-11-7 15:14

首选排除串口调试助手本身的问题 因为有可能是数据源头出现了问题

观海 发表于 2022-11-7 15:23

丢掉的数据的位置是固定的吗 还是一个随机数据呢

guanjiaer 发表于 2022-11-7 15:52

100ms的时间间隔足够了 只不顾每包发送的数据是不是过大呢

heimaojingzhang 发表于 2022-11-7 16:02

楼主是使用的轮询接收模式还是中断接收模式呀

keaibukelian 发表于 2022-11-7 16:12

实际使用的主频配置为多少了会不会因为主频过高导致丢失数据呢

aple0807 发表于 2022-11-9 18:23

中断优先级设置高一点

linjinming2000 发表于 2022-11-10 23:38

如果你的中断优先级不是最高的话可能会丢数据,这个时候会发生过载错误,你可以debug看是否进入错误中断,串口通信最好采用DMA方式,DMA设置为循环方式,在定时器中断里面判断DMA传输数量是否变化,如果有变化说明有数据接收,然后启动超时判断,超时结束时那么就接收完成了
页: [1]
查看完整版本: 在RTT下,AT32F437串口丢数据