打印

用"DMA循环模式+半中断"提高Usart接收效率

[复制链接]
8999|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bg4ajb|  楼主 | 2010-7-28 13:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
工作方式如下:
   使stm32的usart的rx工作在dma 的 DMA_Mode_Circular 方式下,中断方式:传输过半中断(HTIF)和传输完成中断(TCIF)
   DMA源地址:串口接收数据寄存器。
   DMA目的地址:数据缓冲区。

在传输过半的中断中,先将收到的一半的数据取出来保存,
在传输完成的中断中,将之后收到的数据也保存。

根据:数据手册中的说明:当启动了循环模式,数据传输的数目变为0时,将会自动地被恢复成配置通道时设置的初值,DMA操作将会继续进行。
      
问题1:那么这个时候:DMA的目的地址是否也会恢复到原来设置的地址

问题2:如果不能恢复地址,那么在不关闭DMA的情况下,切换DMA方式的目的地址是否到导致错误

沙发
香水城| | 2010-7-28 14:00 | 只看该作者
在手册中还有这样一段描述可以回答你的问题:

STM32_DMA_Pointer.GIF (34.08 KB )

STM32_DMA_Pointer.GIF

使用特权

评论回复
板凳
xsgy123| | 2010-7-28 23:24 | 只看该作者
香版主是要教我们仔细看手册,呵呵

使用特权

评论回复
地板
zxm19820916| | 2016-7-14 16:00 | 只看该作者
传输过半中断(HTIF)和传输完成中断(TCIF)结合使用,可以提高效率。现在要用在ADC采样上。

使用特权

评论回复
5
252tp| | 2016-8-6 09:22 | 只看该作者
香水城 发表于 2010-7-28 14:00
在手册中还有这样一段描述可以回答你的问题:

假如循环模式下,串口发送10K数据发送完毕,自动加载DMA_CPARX/DMA_CMARX,数据又重新发送,而初衷只是想传输一次,该怎么弄?另外正常模式只是使用一次DMA,只发送一个字节或者2个字节,而不是连续发送10k数据,不知理解是否正确。

使用特权

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

本版积分规则

9

主题

32

帖子

1

粉丝