精确计算DMA半满/全满中断时序开销,需从硬件和软件两个层面拆解。硬件上,ADC采样率决定数据产生速率,DMA传输每个数据需固定时钟周期(如APB2时钟下约2-3个周期),半满/全满中断触发后,CPU响应中断有固定延迟(通常12个周期+向量表跳转),加上中断服务函数(ISR)中的上下文保存/恢复(约20-40周期)和用户处理代码。软件上,关键在于ISR内避免耗时操作,建议仅做数据搬运(如双缓冲切换)和标志置位,主循环处理数据。实际测量方法:在ISR入口和出口翻转GPIO,用逻辑分析仪或示波器测量中断间隔,对比理论值(采样周期×半满数据量)与实测值,差值即为时序开销。优化建议:使用DMA的循环模式+双缓冲(Memory-to-Memory模式),或利用空闲中断(IDLE)配合半满/全满,减少中断频率。若采样率极高(如>1Msps),考虑使用FIFO或乒乓缓冲,并确保DMA优先级高于CPU任务。
mcuku 阿沐 · 2026-08-27