1. 功能概述通过DMA实现STM32F4的3个ADC通道(PA0/PA1/PA2)自动采集,避免CPU干预,适合高速采样场景。 2. 硬件准备
STM32F407开发板 3个电位器(连接PA0/PA1/PA2) 示波器(验证时序,可选)
3. 软件配置3.1 CubeMX设置[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
/* ADC1 配置 */- Mode: Independent mode- Scan Conversion Mode: Enabled- Continuous Conversion Mode: Enabled- DMA Continuous Requests: Enabled- Number Of Conversion: 3- Rank1: Channel0, Sampling Time 84 Cycles- Rank2: Channel1, Sampling Time 84 Cycles- Rank3: Channel2, Sampling Time 84 Cycles/* DMA配置 */- Mode: Circular- Data Width: Half Word (ADC结果为12位)
3.2 关键代码[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]c
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
// 定义变量uint16_t adcResults[3; // 存储3通道结果// 启动ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adcResults, 3);// DMA传输完成回调函数void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { // 此处添加数据处理代码(例如打印到串口) printf("CH0:%d, CH1:%d, CH2:%d\n", adcResults[0, adcResults[1, adcResults[2);}
4. 原理解析4.1 时序图[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]text
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
[ADC启动] → [DMA请求] → [传输数据] → [循环触发] ↑____________↓
(此处插入配图:ADC_DMA_Flow.png) 4.2 性能对比采样方式 最大采样率 (F407@168MHz)
轮询100kS/s
中断500kS/s
DMA2MS/s
5. 常见问题Q1: 数据错位怎么办?
→ 检查CubeMX中的Conversion Rank顺序是否与数组索引匹配。 Q2: DMA不触发?
→ 确认HAL_ADC_Start_DMA()在初始化后被调用。 6. 源码下载[color=rgb(var(--ds-rgb-link))][url=]GitHub仓库链接[/url] (提供完整工程文件,包含CubeMX配置)
|