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

[复制链接]
3072|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秒发送一次数据。
文峰聊书斋 发表于 2013-4-6 21:39 | 显示全部楼层
为什么呢?我是USART发过来了,就产生一个USART中断,在中断里只是关中断和发送一个信号量,会有一个进程受到这信号来接收,而另外的进程做别的事。
文峰聊书斋 发表于 2013-4-6 21:39 | 显示全部楼层
用uc/os
拿起书本 发表于 2013-4-6 21:59 | 显示全部楼层
呵呵,总是习惯用51核思维去用STM32 了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

20

帖子

0

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