打印
[STM32G0]

串口DMA收数据总是丢几个字节?

[复制链接]
1101|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
万图|  楼主 | 2025-5-8 07:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是不是FIFO没开?DMA中断优先级也会影响这个吗?

使用特权

评论回复
沙发
Clyde011| | 2025-5-8 07:40 | 只看该作者
我给每帧加了起止位来检测完整性。

使用特权

评论回复
板凳
Uriah| | 2025-5-8 07:41 | 只看该作者
有没有错位接收?检查一下串口参数。

使用特权

评论回复
地板
Pulitzer| | 2025-5-8 07:42 | 只看该作者
CubeMX默认配置可能不是你想要的。

使用特权

评论回复
5
Bblythe| | 2025-5-8 07:43 | 只看该作者
我一般都改成LL库手动收。

使用特权

评论回复
6
Wordsworth| | 2025-5-8 07:43 | 只看该作者
G070串口有FIFO,开一下试试。

使用特权

评论回复
7
万图|  楼主 | 2025-5-8 07:44 | 只看该作者
DMA的内存区域对齐了吗?

使用特权

评论回复
8
童雨竹| | 2025-5-8 07:45 | 只看该作者
有时候波特率太高也出错。

使用特权

评论回复
9
帛灿灿| | 2025-5-8 07:46 | 只看该作者
我加了个空闲中断,收得稳多了。

使用特权

评论回复
10
周半梅| | 2025-5-8 07:47 | 只看该作者
有没有检查HAL_UART_RxCpltCallback?

使用特权

评论回复
11
公羊子丹| | 2025-5-8 07:47 | 只看该作者
DMA是不是用了Circular模式?

使用特权

评论回复
12
捧一束彼岸花| | 2025-6-14 11:31 | 只看该作者
若DMA缓冲区容量小于实际接收的数据量,会导致数据溢出丢失。例如,当接收大量数据时,若缓冲区设置过小,超出部分将无法被存储

使用特权

评论回复
13
白马过平川| | 2025-6-14 12:00 | 只看该作者
DMA模式选择不当,未使用循环模式(Circular Mode)可能导致缓冲区满后停止接收。在循环模式下,DMA会自动回到缓冲区起始位置继续接收数据,避免数据丢失

使用特权

评论回复
14
失物招領| | 2025-6-14 13:00 | 只看该作者
中断与标志位处理问题

使用特权

评论回复
15
风凉| | 2025-6-14 16:00 | 只看该作者
USART与DMA初始化顺序错误,若在USART使能后、DMA使能前有数据到达,可能导致数据丢失。例如,若在USART初始化完成后立即接收数据,而DMA尚未使能,则数据无法被正确存储

使用特权

评论回复
16
风凉| | 2025-6-14 16:00 | 只看该作者
USART与DMA初始化顺序错误,若在USART使能后、DMA使能前有数据到达,可能导致数据丢失。例如,若在USART初始化完成后立即接收数据,而DMA尚未使能,则数据无法被正确存储

使用特权

评论回复
17
故意相遇| | 2025-6-14 18:30 | 只看该作者
启用循环模式,在DMA配置中启用循环模式,避免缓冲区满后停止接收

使用特权

评论回复
18
将爱藏于深海| | 2025-6-14 19:00 | 只看该作者
未及时清除标志位,未清除接收完成或错误标志位可能导致后续数据接收异常。例如,若未清除接收完成标志位,DMA可能无法正确触发下一次接收

使用特权

评论回复
19
春日负喧| | 2025-6-14 19:00 | 只看该作者
在STM32G0中,未启用空闲中断可能导致无法及时处理不完整数据包。空闲中断可在数据接收间隙触发,便于及时处理数据

使用特权

评论回复
20
温室雏菊| | 2025-6-14 19:00 | 只看该作者
中断优先级设置不合理,若DMA或串口中断优先级过低,可能被其他高优先级中断延迟处理,导致数据接收不及时。例如,当高优先级中断频繁触发时,DMA中断可能无法及时响应,造成数据丢失

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

114

主题

5230

帖子

1

粉丝