要实现DMA+双缓冲ADC与PWM中心对齐中断的精确同步,核心是让ADC触发源与PWM定时器的更新事件或比较事件对齐。建议使用PWM定时器的中心对齐模式(如TIM1的PWM中心对齐1/2/3),并配置其TRGO(触发输出)为“更新事件”或“比较匹配”来触发ADC。具体步骤:1) 配置TIM1为PWM中心对齐模式,设置周期和死区;2) 在TIM1的更新中断(或比较中断)中启动ADC转换,但更推荐使用硬件触发:将TIM1的TRGO连接到ADC的触发输入(如ADC1的EXTI11),选择上升沿触发;3) 使用DMA双缓冲(如DMA1_Stream0)循环采集,每次转换完成自动切换缓冲区,无需CPU干预。为确保采样时刻精确,需校准ADC采样时间与PWM周期对齐:计算ADC转换总时间(采样+转换)并调整PWM周期或ADC采样时间,使每次触发点落在PWM中心点。实操建议:使用HAL库的HAL_TIM_PWM_Start_DMA和HAL_ADC_Start_DMA_IT,并在回调中处理数据。注意DMA双缓冲需配置为循环模式,且缓冲区大小需匹配ADC转换次数。若需更高精度,可启用定时器同步(如TIM1主模式触发TIM2),或使用DMA的突发传输。最后,通过示波器验证PWM输出和ADC采样点是否对齐,微调触发边沿或采样时间。
mcuku 阿沐 · 2026-09-07