打印

如何才能保证DMA接收USART数据不错位

[复制链接]
2192|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
飞絮飘飘|  楼主 | 2012-7-16 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DMA接收数据时,发送端如果是连续发送的,接收端区分不了间隔,怎么保证数据不错位呢,一旦一个字节错位,以后接收的将全部错位。大家怎么解决这样的问题的?
沙发
香水城| | 2012-7-16 16:03 | 只看该作者
USART没有STOP位吗

使用特权

评论回复
板凳
figo20042005| | 2012-7-16 21:43 | 只看该作者
隔几个数校验下

使用特权

评论回复
地板
飞絮飘飘|  楼主 | 2012-7-17 20:44 | 只看该作者
有停止位就能保证接收数据不错位?
根据我自己的试验结果,的确会错位的,我的试验是这样的:在同一块板上有两块CPU,其中一块是STM32F105RB,用于接收另一块发来的数据。使用DMA方式,当DMA中断时,立即关闭USART的DMA接收,以便处理发来的数据,处理完成之后,打开DMA接收,假设打开的瞬间正好赶上另一块CPU发送第2个字节,就会接收错位,发送和接收无法同步。另一个CPU每隔0.5秒发送一次数据。

使用特权

评论回复
5
文峰聊书斋| | 2013-4-6 21:39 | 只看该作者
为什么呢?我是USART发过来了,就产生一个USART中断,在中断里只是关中断和发送一个信号量,会有一个进程受到这信号来接收,而另外的进程做别的事。

使用特权

评论回复
6
文峰聊书斋| | 2013-4-6 21:39 | 只看该作者
用uc/os

使用特权

评论回复
7
拿起书本| | 2013-4-6 21:59 | 只看该作者
呵呵,总是习惯用51核思维去用STM32 了

使用特权

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

本版积分规则

0

主题

20

帖子

0

粉丝