SUNBBOK@126.COM 发表于 2025-7-10 16:21:40

利用DMA进行AD采集,采样周期1K,AD转换速度15.625K,如何配置DMA_ADC的寄存器?

利用DMA进行AD采集,采样周期1K,AD转换速度15.625K,如何配置DMA_ADC的寄存器?

国芯人工智能 发表于 2025-7-10 16:23:00

在使用DMA进行ADC采集时,需根据系统时钟、ADC转换速度及采样周期合理配置DMA和ADC寄存器。以下为基于常见MCU(如STM32系列)的配置建议:

1. 确定系统时钟与ADC时钟
   ADC的转换速度(15625KHz)需满足其输入时钟要求。通常,ADC时钟应低于14MHz(以STM32为例)。若系统时钟为72MHz,则需分频至12MHz。

2. 配置ADC时钟源
   通过ADCCCR寄存器设置ADCCLK为系统时钟分频后的值,确保ADC工作在允许范围内。

3. 设置ADC模式与通道
   在ADCCR1中选择扫描模式或单次模式,根据需求配置通道数及顺序。使用ADCSQR1等寄存器定义采样顺序。

4. 启用DMA请求
   在ADCCR2中使能DMA请求(DMAEN位),并设置DMA传输方向为从ADC读取数据。

5. 配置DMA通道
设置DMA通道的传输方向为外设到内存(DIR位)。
配置内存地址为存储ADC结果的缓冲区首地址。
设置外设地址为ADC数据寄存器(ADCDR)。
设置传输数量为所需采样点数(如1000点)。
启用DMA通道(DMACmd)。

6. 触发ADC转换
   使用软件触发(ADCSWSTART)或外部触发(如定时器)启动ADC转换。确保DMA在ADC转换完成后自动传输数据。

7. 中断与同步
   可配置DMA传输完成中断,用于处理采集数据或启动下一次采集。同时,确保ADC与DMA的同步,避免数据丢失。

以上步骤需结合具体MCU的参考手册调整寄存器位定义。建议使用开发工具(如STM32CubeMX)辅助配置,确保参数匹配系统需求。

[本文内容由国芯人工智能辅助生成,仅供参考]

神农鼎 发表于 2025-7-10 16:28:04

讲清楚具体型号,系统工作时钟频率

SUNBBOK@126.COM 发表于 2025-7-10 17:03:32

STC8051U,系统工作时钟频率24M,主要是DMA_ADC_ITVH,DMA_ADC_ITVL,两次ADC转换之间的间隔时间,是按时间微秒还是按时钟个数?

梁工 发表于 2025-7-10 17:12:58

对于AI/STC32G系列,ADC DMA不方便按一定的采样率做ADC,设置好通道、每个通道转换次数后,启动ADC DMA后,自动完成转换,但ADC转换的间隔依赖于ADC参数的设置和DMA处理的时间,没有专门的DMA间隔时间设置。扫描完所有通道后,停止转换。建议使用定时器中断启动DMA。

对于AI8051U系列,可以设置重复次数(DMA_ADC_AMTH、DMA_ADC_AMT)和附加间隔时间(DMA_ADC_ITVH、DMA_ADC_ITV),这样采样率依赖于ADC参数的设置、DMA附加的间隔时间以及DMA处理的时间。


SUNBBOK@126.COM 发表于 2025-7-10 17:14:58

谢谢梁工!
页: [1]
查看完整版本: 利用DMA进行AD采集,采样周期1K,AD转换速度15.625K,如何配置DMA_ADC的寄存器?