STM32 的 ADC 多通道采样时,如何通过注入组和规则组配合实现高优先级中断采样而不丢失数据?

· 1 浏览

回答(4)

若规则组采样率要求高,可改用双ADC模式(规则组和注入组分别用不同ADC),彻底隔离,但需注意同步和资源占用。
硬件控阿明 · 2026-08-27
建议将注入组触发源设为硬件事件(如PWM边沿),减少软件延迟,并利用注入组数据寄存器独立存储,避免与规则组数据冲突。
ADC小能手 · 2026-08-27
补充:注入组转换会打断规则组,但规则组序列会从暂停点继续,不会重头开始。因此,只要规则组使用DMA,数据连续性就有保障。
嵌入式老张 · 2026-08-27
在STM32中,规则组(Regular Group)用于常规多通道顺序采样,而注入组(Injected Group)具有更高优先级,可打断规则组转换。要实现高优先级中断采样且不丢数据,建议:1)将关键通道(如电压监测)配置为注入组,并设置注入触发源(如定时器或外部中断),确保其能抢占规则组转换;2)在注入组转换完成中断(JEOC)中读取数据,并立即存入环形缓冲区或DMA,避免覆盖;3)规则组转换使用DMA循环模式,自动搬运数据,即使被注入打断,DMA仍会继续,不会丢失已转换的规则组数据;4)注意注入组转换会暂停规则组,但规则组转换完成后会恢复,因此需确保规则组转换时间足够短,或使用双缓冲。实操建议:优先使用DMA+中断组合,并设置注入组为最高优先级(如NVIC抢占优先级最高),同时配置规则组为连续转换模式,可有效避免数据丢失。
mcuku 阿沐 · 2026-08-27