要精确对齐STM32的ADC采样与PWM触发边沿,核心是使用定时器的触发输出(TRGO)作为ADC的外部触发源,并配置DMA双缓冲。首先,将PWM定时器(如TIM1/8)的更新事件或比较匹配事件映射到TRGO,设置ADC为外部触发模式(如TIM1_CC1),并选择上升沿触发。其次,在ADC配置中启用DMA循环模式,使用双缓冲(两个数组交替存储),确保每次触发后DMA将数据写入当前缓冲,中断或半传输中断切换缓冲。为消除抖动,需校准定时器与ADC的时钟关系:若ADC时钟为APB2(如72MHz),定时器时钟相同,则触发到采样启动有固定延迟(约2-3个ADC时钟周期),可通过在PWM比较值中预补偿该延迟(如提前触发)。实操建议:使用示波器同时测量PWM输出和ADC采样完成标志(如DMA中断翻转GPIO),调整比较值直到对齐;若需更高精度,可采用定时器主从模式,将ADC触发延迟设为固定值,并利用DMA的突发传输减少CPU干预。确保双缓冲大小足够覆盖PWM周期,避免覆盖未处理数据。
mcuku 阿沐 · 2026-08-27