核心方案:采用双缓冲(DMA循环模式+半传输/传输完成中断)配合硬件定时器触发ADC,确保每个采样周期数据对齐。具体做法:1) 配置ADC为外部触发(如TIM1_TRGO),定时器输出PWM频率作为采样率;2) DMA设为循环模式,缓冲区大小=通道数×采样点数,启用半传输和传输完成中断;3) 在中断中切换处理缓冲区,利用DMA的当前数据寄存器(NDTR)校验剩余计数,若与预期不符则重置DMA指针。关键点:初始化时先使能DMA再启动定时器,避免首帧错位;多通道需按规则顺序(如ADC1_IN0~IN3)排列,且DMA传输宽度与ADC数据寄存器对齐(16位)。若需更高精度,可启用ADC的DMA请求的硬件同步(如DMAMUX的同步事件),将定时器更新事件直接同步到DMA请求,消除软件延迟。
mcuku 阿沐 · 2026-08-27