打印

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

[复制链接]
2082|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用中断了吗? 异常重复,具体是怎么样的?不然只能猜了

使用特权

评论回复
5
拿起书本| | 2013-2-22 19:21 | 只看该作者
是否你在上一次最后一个字节还没有送出前,就更换了缓冲

使用特权

评论回复
6
hawksabre| | 2013-2-22 20:15 | 只看该作者
可能是响应速度跟不上   有这种可能吗

使用特权

评论回复
7
pattywu| | 2013-2-22 20:29 | 只看该作者
    用DMA,STM32的串口可以达到8Mbps的速率。不用怀疑ST的手册,好好检查你的代码,查查在哪处理的时间过长,或缓冲区的长度太小。

使用特权

评论回复
8
99784589|  楼主 | 2013-2-23 09:57 | 只看该作者
jlass 发表于 2013-2-20 16:49
1、你的速度这么快,八成是来不及处理
2、一般是DMA中断产生处于临界点,比如你刚收完首字母(上一次的最后 ...

我的DMA是接收完成中断
例如 接收三个字节 AA BB CC
但是有时候收到 AA AA BB(此时触发中断),然后剩下的CC串到下一组数据中

使用特权

评论回复
9
99784589|  楼主 | 2013-2-23 10:04 | 只看该作者
拿起书本 发表于 2013-2-22 19:21
是否你在上一次最后一个字节还没有送出前,就更换了缓冲

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

是这一次的第一个字节

使用特权

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

本版积分规则

5

主题

10

帖子

0

粉丝