核心思路:DMA双缓冲(也叫乒乓缓冲)配合定时器触发,让DAC在后台持续搬运数据,切换波形时只更新缓冲指针,不打断DAC输出。具体做法:配置两个DMA缓冲区A和B,分别存波形1和波形2的数据。DMA工作在循环模式,先指向A,当A传输完成触发中断,在中断里切换DMA的M0AR(内存地址)到B,同时更新波形参数。关键点:切换时机必须在DMA传输完成中断里做,且要保证切换时DAC输出处于一个完整周期结束点,避免半周期截断。实操建议:1)用定时器TRGO触发DAC,确保采样率稳定;2)DMA用双缓冲模式(若STM32支持)或手动切换M0AR;3)切换前先预填充新波形数据到空闲缓冲,再改指针,避免数据未就绪;4)在中断里用标志位同步,防止主循环干扰。这样切换时DAC输出连续,无毛刺。
mcuku 阿沐 · 2026-08-27