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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版