ADC(模数转换器)规则组(Regular Group) 和注入组(Injected Group)
在STM32的中,规则组(Regular Group) 和注入组(Injected Group) 是两种核心的工作模式。
它们最根本的区别可以这样理解:规则组是“常规任务”,而注入组是能随时“插队”的“紧急任务”。
下面这个表格能帮你更清晰地看到它们的区别:
| 特性 | 规则组 (Regular Group) | 注入组 (Injected Group) |
|---|---|---|
| 核心定位 | 常规、周期性的数据采集 | 高优先级、事件驱动的紧急采样 |
| 优先级 | 低,可被注入组打断 | 高,可以打断正在进行的规则组转换 |
| 通道数量 | 最多 16 个 | 最多 4 个 |
| 数据寄存器 | 共用 一个数据寄存器 ADC_DR,多通道时新数据会覆盖旧数据 |
独立 的数据寄存器 ADC_JDRx,每个通道有自己专用的寄存器,数据不会互相覆盖 |
| DMA支持 | 通常需要配合DMA,以防多通道数据丢失 | 一般不用DMA,因其通道少且有独立寄存器 |
| 工作模式 | 支持单次、连续、扫描等多种模式 | 主要支持单次转换,不支持连续循环模式 |
| 典型应用 | 持续监测温度、电池电压等 | 响应外部触发信号、捕获突发数据等 |
🎯 核心差异详解
-
优先级与“插队”机制:这是两者最本质的区别。注入组拥有更高的优先级。当注入组被触发时,它会立即中断正在进行的规则组转换,优先完成自己的任务。任务完成后,被中断的规则组转换才会恢复。这就像一个“紧急中断”。
-
数据管理与存储:
-
规则组:所有通道共用一个结果寄存器
ADC_DR。这意味着在多通道连续采样时,必须依靠DMA(直接内存访问) 及时将数据搬走,否则新数据会覆盖旧数据,造成丢失。 -
注入组:每个通道都有自己专用的寄存器(
ADC_JDR1~ADC_JDR4)。因此,即使没有DMA,各个通道的数据也能被安全、独立地保存,不会相互影响。
-
💡 一个生动的应用场景
假设你需要监控一个工业设备的运行状态:
-
规则组:负责持续监控设备的温度、电压等常规参数,这些数据需要被周期性地记录。
-
注入组:负责响应紧急事件,比如当某个传感器检测到异常振动时,立即触发注入组进行高精度的快速采样,以便分析故障原因。
在这个场景中,注入组的紧急测量可以“插入”到规则组的常规监控流程中,优先处理,处理完后规则组的监控自动恢复。
⚙️ 配置寄存器速查
在STM32的固件库或HAL库配置中,你通常会操作这些寄存器:
-
规则组:转换序列和顺序由
ADC_SQR1、ADC_SQR2、ADC_SQR3寄存器控制。 -
注入组:转换序列和顺序由
ADC_JSQR寄存器控制。
💎 总结
总的来说,选择哪种模式取决于你的应用需求:
-
如果你的任务是常规、周期性的数据采集,使用规则组并配合DMA是最佳选择。
-
如果你的应用需要快速响应外部事件,并有高优先级的采样需求,那么注入组是必不可少的工具。
更多推荐


所有评论(0)