在很多MCU微控制器的ADC(模数转换器)外设模块中,在配置初始化代码时会经常遇到规则通道(Regular Channel)和注入通道(Injected Channel,也可能是Inserted Channel)两个概念,或者是规则组(Regular Group)和注入组(Injected Group,也可能是Inserted Group),比如STM32的库代码如下图所示: GD32的库代码如下图所示: 其实,规则通道和注入通道是ADC模块里面两种不同的转换模式,下面就详细阐述一下规则通道和注入通道的主要区别,以便大家在应用时能够清楚地进行选择。 1. 触发方式与优先级 规则通道: 用于常规的ADC转换,按顺序扫描一组预先配置的通道; 转换由软件或硬件触发(如定时器、外部事件),但无抢占机制; 规则通道组的所有转换结果通常存储在一个共同的数据寄存器中,即需要及时读取,否则会被覆盖。 注入通道: 类似于“中断”机制,可抢占规则通道的转换; 当注入通道因紧急信号或者高优先级事件等被触发,ADC会立即暂停当前规则通道的转换,优先处理注入通道,完成后恢复规则通道; 每个注入通道有独立的专用数据寄存器(如JDR1、JDR2等),避免数据覆盖,比如STM32就是通过下面的JDR偏置值进行操作: 2. 通道数量 规则通道: 支持多通道,具体数量取决于MCU型号,通过寄存器配置转换顺序。 注入通道: 通常仅支持少量通道,比如STM32中多为4个,通过注入序列寄存器配置: 再比如GD32的也多为4个: 3. 应用场景 规则通道: 适用于周期性或连续采样,如温度监测、电池电压检测等常规任务。 注入通道: 用于需要快速响应的突发事件,如过压保护、紧急按键检测等,确保关键信号优先处理。 4. 数据管理 规则通道: 转换结果存储在数据寄存器中,需要在下次转换前读取,否则数据丢失,如GD32: 注入通道: 结果存储在独立的数据寄存器中,数据更安全,无需频繁读取,如GD32: 以上从触发方式和优先级、通道数量、应用场景和数据管理四个方面讲解了规则通道和注入通道的主要区别,希望可以给正在迷惑如何使用的你提供一些参考价值~~。 |