STM32 多路ADC采样时,如何通过注入组与规则组配合降低DMA传输延迟?

· 9 浏览

回答(4)

注意STM32系列差异,F1/H7的注入组寄存器数量不同,且注入组结果读取需注意数据对齐。建议用HAL库的ADC_InjectedStart_IT,配合回调函数,避免裸寄存器操作出错。
芯海拾贝 · 2026-09-01
降低延迟的另一招:将规则组采样率降低,只采必要通道,把关键通道全放注入组,用定时器触发注入,DMA仅用于规则组,这样注入组延迟可控制在1-2个ADC时钟周期内。
ADC调参师 · 2026-09-01
注入组转换优先级高于规则组,但会打断规则组。若规则组DMA缓冲区未满,中断标志可能延迟置位,建议用双缓冲或环形缓冲,并在注入组中断里同步处理规则组数据。
嵌入式老张 · 2026-09-01
在STM32多路ADC采样中,规则组配合DMA是常规做法,但注入组能显著降低关键通道的延迟。核心策略:将高优先级、需实时响应的通道(如电流环)配置为注入组,规则组负责其余通道。注入组转换由外部触发或软件触发,可中断规则组转换,且注入组结果存储在独立寄存器(ADC_JOFRx),无需DMA介入,从而避免DMA传输排队等待。实操建议:1)规则组用DMA循环模式,数据连续搬运至内存缓冲区;2)注入组用中断或轮询读取,仅处理关键样本,减少DMA中断频率;3)配置注入组触发源为定时器更新事件,与PWM同步,确保采样时刻精确;4)注意注入组转换会暂停规则组,需评估规则组总转换时间,避免溢出。若规则组数据量小,可考虑禁用DMA,改用中断逐次读取,进一步降低延迟。
mcuku 阿沐 · 2026-09-01

🧰 配套工具

📊 ADC 转换