STM32 使用 DAC+TIM 触发输出任意波形时,如何精确对齐采样点与 DMA 传输完成中断?

· 1 浏览

回答(4)

如果中断延迟影响对齐,可改用DAC的DMA请求信号直接触发中断,并利用TIM的重复计数(Repetition Counter)减少中断频率,只在波形边界中断。
时序大师 · 2026-08-27
注意DMA的突发模式(Burst)设置,每次触发搬运多个数据,但需确保DAC的FIFO足够,否则会丢点。建议用单次传输,简单可靠。
波形控小王 · 2026-08-27
用双缓冲DMA,在传输完成中断中切换缓冲区,同时用TIM的更新事件做硬件同步,这样中断处理不影响波形连续性,对齐精度可达纳秒级。
嵌入式老张 · 2026-08-27
精确对齐的关键在于利用TIM的更新事件(Update Event)作为DAC转换触发源,并让DMA在TIM触发时同步搬运数据。首先,配置TIM为PWM模式或触发模式,设置好周期和占空比,确保更新事件频率等于波形采样率。DMA配置为循环模式,数据从内存到DAC的DHR寄存器,方向为外设到内存(或内存到外设,视具体型号),并启用DMA传输完成中断。对齐的核心是:在TIM更新事件触发DAC转换的同时,DMA自动将下一个采样点写入DHR,这样DMA完成中断(当传输完一个完整波形缓冲区)会发生在最后一个采样点被DAC锁存之后。为了精确对齐,建议在DMA中断中读取TIM的CNT寄存器,确认中断时刻与TIM周期的相位关系,必要时调整DMA的FIFO或突发传输设置。实操中,可先用逻辑分析仪测量DAC输出和TIM触发信号,微调TIM的ARR和CCR值,确保每个采样点严格对应一个TIM周期。另外,考虑使用DMA的半传输中断(Half Transfer)来预加载下一段数据,避免中断延迟影响连续性。
mcuku 阿沐 · 2026-08-27