[STM32F4] F4串口丢字,DMA收数据不连续?

[复制链接]
 楼主| Bblythe 发表于 2025-6-18 07:23 | 显示全部楼层 |阅读模式
用DMA接收串口数据,速度不算快但还是偶尔丢几个字节,buffer设得也挺大了。
Clyde011 发表于 2025-6-18 07:26 | 显示全部楼层
上位机发数据有没有加延时缓冲?
公羊子丹 发表于 2025-6-18 07:26 | 显示全部楼层
DMA接收得开空闲中断,不然收不完。
周半梅 发表于 2025-6-18 07:27 | 显示全部楼层
我用双缓冲能解决这个问题。
帛灿灿 发表于 2025-6-18 07:28 | 显示全部楼层
看下是不是缓存太小了,数据太快会丢。
童雨竹 发表于 2025-6-18 07:29 | 显示全部楼层
要不要开Circular模式循环接收?
万图 发表于 2025-6-18 07:30 | 显示全部楼层
HAL库对空闲中断支持不太好,建议手动写。
Wordsworth 发表于 2025-6-18 07:30 | 显示全部楼层
接收完得手动刷新缓冲,尤其是多包的。
 楼主| Bblythe 发表于 2025-6-18 07:31 | 显示全部楼层
中断优先级配置不当也可能导致丢数据。
Pulitzer 发表于 2025-6-18 07:32 | 显示全部楼层
波特率太高了?试试调低。
Uriah 发表于 2025-6-18 07:33 | 显示全部楼层
收数据那段有没有其他阻塞任务?
flycamelaaa 发表于 2025-6-18 15:28 | 显示全部楼层
DMA的接收和发送通道可能配置不正确,或者存在冲突。
flycamelaaa 发表于 2025-6-18 15:28 | 显示全部楼层
DMA的接收和发送通道可能配置不正确,或者存在冲突。
elephant00 发表于 2025-6-18 15:33 | 显示全部楼层
对于分帧发送的数据,可以在接收端使用定时器来检测数据接收的间隔时间。如果间隔时间超过预设阈值,则认为一帧数据接收完成。
在定时器中断服务程序中处理接收到的数据,并重新启动DMA接收以准备接收下一帧数据。
powerantone 发表于 2025-6-18 16:36 | 显示全部楼层
DMA的缓冲区大小可能设置不当,导致数据溢出或覆盖。
powerantone 发表于 2025-6-18 17:00 | 显示全部楼层
可能有中断冲突吧。。
stormwind123 发表于 2025-6-18 18:00 | 显示全部楼层
硬件设计可能不支持全双工通信,或者上拉电阻的使用不当。
probedog 发表于 2025-6-18 19:36 | 显示全部楼层
串口RX/TX引脚的上下拉电阻设置可能不合理,导致在无数据传输时电平不稳定。
classroom 发表于 2025-6-18 20:00 | 显示全部楼层
缓冲区溢出?
jcky001 发表于 2025-6-18 20:45 | 显示全部楼层
波特率设置不当或时钟误差?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

145

主题

5717

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部