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

· 1 浏览

回答(4)

如果中断延迟影响对齐,可考虑在定时器更新中断中同步,而非DMA中断,因为定时器中断更接近触发时刻。
波形控 · 2026-08-27
注意DAC触发源选择:定时器TRGO必须配置为更新事件,且DMA请求要设置为DAC触发,否则定时器与DMA不同步。
芯片调试员 · 2026-08-27
建议使用DMA双缓冲模式,在TC中断中切换缓冲区,这样波形数据更新与传输无缝衔接,避免中断处理期间数据覆盖。
嵌入式老周 · 2026-08-27
核心思路是让定时器触发频率与DMA传输速率严格匹配,并利用DMA半传输/传输完成中断在波形周期边界处同步。具体做法:1) 配置定时器为PWM模式或更新事件触发DAC,频率设为采样率;2) DMA设为循环模式,数据宽度与DAC寄存器一致(如半字),内存地址递增,外设地址固定;3) 在DMA传输完成中断(TC)中,若波形为单周期,则此时恰好完成一个周期,可在此处更新波形数据或标记周期结束;若为多周期连续波形,建议使用DMA半传输中断(HT)在周期中点同步,避免中断延迟导致错位。4) 关键:确保DMA传输长度等于一个波形周期的采样点数,且定时器触发与DMA请求同步(使用定时器TRGO连接DAC触发,DMA请求由DAC产生)。5) 实操中,可在TC中断中读取DMA当前地址(DMA_CNDTR)验证剩余计数,若不为0则存在偏差,需调整定时器预分频或DMA配置。最后,用逻辑分析仪或示波器对比DAC输出与中断标志,微调定时器周期(如±1个时钟)实现精确对齐。
mcuku 阿沐 · 2026-08-27