打印
[N32G45x]

ADC+DMA连续转换数据时的开关动作注意事项

[复制链接]
525|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
画个朴昧|  楼主 | 2022-12-21 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, DM, DMA, dc
    ADC工作在连续扫描模式下需要DMA协同搬运数据,软件或外部触发一次ADC便会循环连续转换数据,当数据转换完成时,ADC发出DMA请求信号,DMA收到请求立马开始执行数据搬移任务,以上是连续工作模式时,ADC和DMA协同工作流程。但当连续转换时需要多次切换ADC工作状态或进入休眠前DISABLE ADC时,会出现再一下次使能DMA通道的瞬间就有ADC数据搬移过来,导致整体数据向下偏移一位。

   造成整个现象的原因很简单,连续转换模式下DISABLE ADC/DMA时,如果ADC刚好转换完成,但数据还没搬移,此时adc_dma_request信号会一直存在,当下一次使能DMA通道时,DMA会立马执行这个请求搬移ADC->DAT的数据。


   为了避免这种情况,可以:


   1. 连续工作模式下,需要多次ADC状态切换时,可以在下一次ADC ON之前,先重新初始化ADC,再重新初始化DMA;


   2. DMA的长度增加一个,第一次转换时取前第0~n-1的数据,之后取第1~n的数据。



使用特权

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

本版积分规则

12

主题

47

帖子

4

粉丝