手册上看到DMA循环模式的描述
循环模式
循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中
的CIRC位用于开启这一功能。当启动了循环模式,数据传输的数目变为0时,将会自动地被恢
复成配置通道时设置的初值, DMA操作将会继续进行。
问题一:
假设:
dma设置为循环模式,设置正常,
unsigned char ArryTest[5]缓存长度为5,
DMA多久会读取一次缓存,
比如 缓存5ms更新一次,那么DMA在这5ms内发送几次缓存数据?
如果只发送一次,那么是不是可以理解为ADC数据寄存器更新后DAM才会发送数据,那么DAM怎么知道数据更新了呢?
问题2:
ADC发送,启动DMA后,
DMA多久会读取一次adc的数据寄存器
比如假设ADC5ms采集一次,那么那么DMA在这5ms内发送几次ADC采集结果?
如果只发送一次,那么是不是可以理解为ADC数据寄存器更新后DAM才会发送数据,那么DAM怎么知道数据更新了呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
DMA是一个高效率的数据传送神器.但是并不复杂.DMA初始化完后.ADC转换完成会产生一个完成事件.这个事件会自动触发MDA来读取ADC的DR到指定内存.然后,内存位置自增加到下一个位置.开启循环DMA功能.当时只是下一个内存位置超出指定的最大位置时就回到开始位置罢了.其它的事情.它就不管了.如有开启DMA完成中断事件..会有DMA完成中断事件.
有个问题,使能循环模式后,还可以使能中断么,如果允许每次传输完起一次中断,是不是需要软件清除中断,那是否会影响依然在运行的dma?
一周热门 更多>