如果需要对超过 4 路的模拟量进行采样,则需要结合 DMA 的功能,以实现较少的 CPU 参与。其思路如下:
1. ADC 配置为单通道单次转换,完成转换后硬件触发 DMA;
2. DMA 的 CH1 用于将 ADC 的转换结果传输到 RAM 中,如将采样 6 个 ADC 通道,因此传输次数 CNT为 6,源地址固定为 ADC 的 RESULT0 寄存器,目的地址需要递增;
3. DMA 的 CH2 用于更改 ADC 的采样通道,当 ADC 转换完成后,从 RAM 中取 ADC 的通道配置参数,自动配置 ADC 的寄存器值,因此源地址为 RAM,地址递增,目的地址为 ADC 的通道控制寄存器;
4. DMA 的 CH3 用于再次启动 ADC,因为 ADC 配置为单次转换,当转换完成后,ADC 自动停止转换,所以需要通过 DMA 向 ADC 的转换启动寄存器置位,以再次启动 ADC 转换;
5. DMA 的 CH1 传输完成后,ADC 的 6 路转换也完成了,并且转换结果也被传输到 RAM,可通过 CH1 的传输完成中断,将 DMA 的参数重新配置,就实现了多路 ADC 的循环采样;
6. 通过 ATIM 的比较通道 4,去触发 DMA 的 CH4,向 ADC 的转换启动寄存器置位,启动 ADC。
|