你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F107RCT的USART3的DMA接收问题

[复制链接]
ss1969 提问时间:2017-10-18 10:07 /
以下测试都是在目前最新版CubeMX+F1xx支持包生成代码下进行。。。

问题描述:
使用usart3,rx设置dma收入,circular模式,一次dma收取128Byte,到一个静态uint8_t bufA[128];
然后在RxCplt和RxIdle中断里面进行处理
RxCplt里直接把128B数据拷入一个ringbuffer,rxidle把不足128B的数据考入

发现:如果收入字节超过128Byte,则第一次进入RxCplt中断的时候,正确情况应该是收到128B后立刻进入此中断
实际上是bufA的数据被128B之后的数据从头循环覆盖了一部分。。。

但是,如果bufA设置为比较小的长度,比如32,一次也只从dma收取32byte,则没有这个问题。。

其他usart暂时没试。

晚上搜了下,有个类似帖子:http://bbs.21ic.com/forum.php?mod=viewthread&tid=1278048

请问大家有什么想法吗。。

收藏 评论2 发布时间:2017-10-18 10:07

举报

2个回答
Glenxu 回答时间:2020-11-9 13:35:05
估计128接受时间太长了,导致进入了下一个:circular周期。个人观点。
butterflyspring 回答时间:2020-11-12 17:49:38
降低串口波特率试试。从描述发生覆盖的情形看,软件似乎处理慢了许多,导致后面继续在办数据。当然,在DMA完成中断触发信号看看,和串口发送后是否有很大的延迟
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版