DMA接收串口,偶尔接收首字节异常重复?

[复制链接]
3230|8
 楼主| 99784589 发表于 2013-2-20 11:32 | 显示全部楼层 |阅读模式
芯片是M3
1.用921600速率开发串口,这时候会出现过载错误, 手册上写串口最高支持的速率应该是4.5M,理论上应该不会出现错误,
想问下香主,有什么可能的原因,导致过载
2.  改用DMA方式,  大多数情况下可以正常使用,但是偶尔会出现DMA接收的首字母异常重复,想向大家请教下可能发生的原因
airwill 发表于 2013-2-20 12:06 | 显示全部楼层
中断来不及响应, 数据来不及读取就过载了.
jlass 发表于 2013-2-20 16:49 | 显示全部楼层
1、你的速度这么快,八成是来不及处理
2、一般是DMA中断产生处于临界点,比如你刚收完首字母(上一次的最后一个数),DMA中断产生了,重新收,于是首字母又收一次(这一次的第一个数)。
henryzheng 发表于 2013-2-20 17:29 | 显示全部楼层
问题没描述清楚,  DMA用中断了吗? 异常重复,具体是怎么样的?不然只能猜了
拿起书本 发表于 2013-2-22 19:21 | 显示全部楼层
是否你在上一次最后一个字节还没有送出前,就更换了缓冲
hawksabre 发表于 2013-2-22 20:15 | 显示全部楼层
可能是响应速度跟不上   有这种可能吗
pattywu 发表于 2013-2-22 20:29 | 显示全部楼层
    用DMA,STM32的串口可以达到8Mbps的速率。不用怀疑ST的手册,好好检查你的代码,查查在哪处理的时间过长,或缓冲区的长度太小。
 楼主| 99784589 发表于 2013-2-23 09:57 | 显示全部楼层
jlass 发表于 2013-2-20 16:49
1、你的速度这么快,八成是来不及处理
2、一般是DMA中断产生处于临界点,比如你刚收完首字母(上一次的最后 ...

我的DMA是接收完成中断
例如 接收三个字节 AA BB CC
但是有时候收到 AA AA BB(此时触发中断),然后剩下的CC串到下一组数据中
 楼主| 99784589 发表于 2013-2-23 10:04 | 显示全部楼层
拿起书本 发表于 2013-2-22 19:21
是否你在上一次最后一个字节还没有送出前,就更换了缓冲

确定不是上一次的最后一个字节

是这一次的第一个字节
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

10

帖子

0

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