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

[复制链接]
10218|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
xsgy123 发表于 2010-7-28 23:24 | 显示全部楼层
香版主是要教我们仔细看手册,呵呵
zxm19820916 发表于 2016-7-14 16:00 | 显示全部楼层
传输过半中断(HTIF)和传输完成中断(TCIF)结合使用,可以提高效率。现在要用在ADC采样上。
252tp 发表于 2016-8-6 09:22 | 显示全部楼层
香水城 发表于 2010-7-28 14:00
在手册中还有这样一段描述可以回答你的问题:

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

本版积分规则

9

主题

34

帖子

1

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