要彻底消除SPI传输中的CPU中断抖动,核心思路是让DMA完全接管数据搬运,并用双缓冲(乒乓缓冲)实现数据连续流转,CPU只在缓冲区切换时做极简处理。具体实操:1)配置SPI为DMA模式,发送和接收各分配两个缓冲区(A/B),DMA传输完成中断中仅切换缓冲区指针并重新启动DMA,不进行数据拷贝或复杂计算;2)使用硬件双缓冲(如STM32的DMA双缓冲模式)或软件双缓冲(手动切换),确保DMA在传输当前缓冲区时,CPU可预填充下一缓冲区;3)将中断优先级设为最高,但中断服务函数只做标志位更新和DMA重载,耗时控制在几十个周期内;4)若抖动源于总线竞争,可启用DMA的FIFO和突发模式,减少总线占用次数;5)实测时用逻辑分析仪抓取CS和时钟,确认无毛刺。注意:彻底消除抖动需结合RTOS或裸机轮询,避免在中断中做任何阻塞操作。
mcuku 阿沐 · 2026-08-27