[STM32F3] STM32F302串口DMA接收多出部分字节

[复制链接]
1801|11
 楼主| cyc2009 发表于 2020-3-30 17:29 | 显示全部楼层 |阅读模式
请教各位:使用串口DMA+空闲中断,实现数据通信。
其中发现,产生ORE后(故意压力测试),清除ORE标识;
接下来可能会出现以下问题,不一定每次都复现:
1,第1次通信成功;如发送0x12,0x13,0x14;回复:0x12,0x34,0x56,0x78,0x9a;
2,第2次通信失败;断点调试,发现第二次通信接收到的字符不正确,在发送的数据前,多了几个0x00;
3,第3次通信,及以后通信都成功

其中第2次通信中,多的0x00个数,是第一次通信回复的字节数;
如果第1次通信回复了5个字节,那接收就多了5个0x00;如果回复的是10个字节,接收就多10个0x00;

请问产生的原因是什么?如何处理能正确接收?
谢谢~烦请指教!

yklstudent 发表于 2020-3-30 19:01 | 显示全部楼层
你是怎么产生ORE的?
 楼主| cyc2009 发表于 2020-3-30 19:03 | 显示全部楼层
yklstudent 发表于 2020-3-30 19:01
你是怎么产生ORE的?

DMA接收长度256个字节;我一次性发送400个字节;对DMA接收完成,空闲中断,Error回调都有清除ORE flag。
yklstudent 发表于 2020-3-30 20:49 | 显示全部楼层
cyc2009 发表于 2020-3-30 19:03
DMA接收长度256个字节;我一次性发送400个字节;对DMA接收完成,空闲中断,Error回调都有清除ORE flag。 ...

你每次都发送400字节?
 楼主| cyc2009 发表于 2020-3-30 21:11 | 显示全部楼层
yklstudent 发表于 2020-3-30 20:49
你每次都发送400字节?

是的,串口工具,每次400个字节,设置间隔1ms,循环发;停下来后,发正常的设备指令,就出现描述的那种情况。
yklstudent 发表于 2020-3-31 08:32 | 显示全部楼层
1ms间隔发送400字节,你这串口速度是有多快,你的测试条件也够变态的
香水城 发表于 2020-3-31 10:15 | 显示全部楼层
情形描述得还是不太清晰。UART收发都是DMA吗?感觉又不像.

还有,你产生ORE后对它做了清除,对相应DMA通道有重置吗?
 楼主| cyc2009 发表于 2020-3-31 16:19 | 显示全部楼层
香水城 发表于 2020-3-31 10:15
情形描述得还是不太清晰。UART收发都是DMA吗?感觉又不像.

还有,你产生ORE后对它做了清除,对相应DMA通道 ...

您好,UART接收是DMA,发送不是。
产生ORE后有清除flag,代码在Idle中断和接收完成(达到DMA接收长度)中断中,有HAL_UART_DMAStop和HAL_UART_Receive_DMA,DMA通道重置是指?在什么地方添加?谢谢!
香水城 发表于 2020-3-31 17:40 | 显示全部楼层
cyc2009 发表于 2020-3-31 16:19
您好,UART接收是DMA,发送不是。
产生ORE后有清除flag,代码在Idle中断和接收完成(达到DMA接收长度)中断 ...

嗯,有所了解。
我说的重置就是指对相依的DMA通道重新初始化,即你这里说的HAL_UART_Receive_DMA()。

你清除ORE然后重置DMA通道,后续不该有啥问题。 但是,你ORE发生的时机时随机的,上次数据到底传到哪里了你是怎么处理的? 另外,你的数据发送是靠什么触发的?好好理理程序逻辑。
 楼主| cyc2009 发表于 2020-4-1 20:05 | 显示全部楼层
香水城 发表于 2020-3-31 17:40
嗯,有所了解。
我说的重置就是指对相依的DMA通道重新初始化,即你这里说的HAL_UART_Receive_DMA()。

好的,感谢,我再看看。
pattywu 发表于 2020-4-1 20:12 | 显示全部楼层
STM32的DMA+空闲,不是这么玩的。
DMA完成中断,是吃什么的?
你不会DMA接收完256字节,产生DMA完成中断吗?
脑子?
脑子?
脑子是个好东西,不用,可惜了。
 楼主| cyc2009 发表于 2020-4-15 19:15 | 显示全部楼层
pattywu 发表于 2020-4-1 20:12
STM32的DMA+空闲,不是这么玩的。
DMA完成中断,是吃什么的?
你不会DMA接收完256字节,产生DMA完成中断吗 ...

你牛,B!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

63

帖子

0

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