打印

请教香主,串口DMA方式接收数据

[复制链接]
2059|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangxk|  楼主 | 2009-4-13 12:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用DMA方式接收串口数据,串口不间断的有数据进入的情况下,如果设置为接收完产生中断,那么在中断程序中需要DISABLE接收的DMA通道,然后重新设置内存地址和计数器,再ENABLE接收的DMA通道,在这样操作是会不会有都数据的可能?
沙发
香水城| | 2009-4-13 12:40 | 只看该作者

如果怕来不及再次启动DMA,可以使用DMA的循环模式

但是无论如何,你自己要保证有足够的时间拷贝接收到的数据和处理这些数据。

至于是否会丢失数据,要你自己根据实际情况计算一下,如处理的工作量、是否有其他操作、USART的速度等因素。

使用特权

评论回复
板凳
zhangxk|  楼主 | 2009-4-13 12:47 | 只看该作者

关于循环模式

在循环模式下,是否只能在接收完产生中断后读取全部数据,如果是接收一半产生中断然后读取数据,这样数据是否存储顺序就乱了?

使用特权

评论回复
地板
香水城| | 2009-4-13 13:39 | 只看该作者

你自己的程序和通信协议必须保证存储顺序的正确性

STM32的USART和DMA操作只是为你提供了手段,如何使用这个手段是你所需要考虑的。


关于你的问题:如果是接收一半产生中断然后读取数据,这样数据是否存储顺序就乱了?

我不太理解为什么会产生存储顺序乱了的情况,这应该与你的程序和通信协议有关,因为你没有给出这些信息,我无法判断。

使用特权

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

本版积分规则

20

主题

69

帖子

1

粉丝