核心方案:用PWM的更新事件(Update Event)或比较匹配事件(OCx)触发ADC注入组采样,并让DMA以双缓冲模式搬运数据。具体做法:1) 配置TIMx的TRGO(如更新事件)为ADC外部触发源,ADC选择注入通道(或规则组+外部触发),确保每次PWM周期起始点采样;2) DMA双缓冲(Memory-to-Memory或外设到内存)时,在ADC中断或DMA传输完成中断中切换缓冲区,同时记录当前PWM计数值(通过读取TIMx->CNT)作为时间戳,用于事后对齐;3) 若需更高精度,可启用ADC的硬件过采样或使用TIM的重复计数(Repetition Counter)控制触发频率,避免每个周期都采样。注意:双缓冲切换时需在DMA中断中先停止DMA,修改M0AR/M1AR,再启动,防止数据错位;同时确保ADC采样时间(采样周期+转换时间)小于PWM周期,否则会丢失触发。建议用逻辑分析仪验证PWM上升沿与ADC转换完成标志的时序偏差。
mcuku 阿沐 · 2026-08-27