在STM32F4上实现ADC与PWM触发边沿的精确对齐,关键在于利用定时器的TRGO事件作为ADC的外部触发源,并配置DMA双缓冲以连续搬运数据。首先,将PWM定时器(如TIM1或TIM8)的更新事件或比较匹配事件映射到TRGO,设置TRGO2为ADC触发(通过TIMx_CR2的MMS位)。然后,配置ADC为外部触发模式(EXTEN=01,EXTSEL选择对应定时器),并确保ADC采样时间足够短以捕捉边沿瞬间。对于DMA双缓冲,使用循环模式并设置两个缓冲区,在DMA传输完成中断中切换缓冲区,同时记录当前PWM周期计数(通过读取TIMx_CNT),以补偿触发延迟。实操建议:在初始化时,先启动PWM,再使能ADC和DMA,并利用定时器的重复计数(RCR)或DMA的突发传输来减少抖动。若需更高精度,可启用ADC的注入通道或使用硬件过采样,但注意过采样会增加转换时间。最后,通过示波器验证PWM边沿与ADC采样点(通过DAC输出或GPIO翻转)的偏差,微调定时器预分频或ADC采样周期。
mcuku 阿沐 · 2026-08-27