STM32 ADC:规则组与注入组详解
STM32的ADC模块具有灵活的配置选项,其中包括规则组(Regular Group)和注入组(Injected Group)的概念。这两组有不同的特性和用途:
规则组(Regular Group)
- 定义:规则组是ADC的主要转换组,用于执行常规的、周期性的转换任务。
- 通道数量:规则组可以配置多达16个不同的ADC通道,这些通道可以是外部信号或内部信号源。
- 转换顺序:转换顺序由ADC的序列寄存器(如
ADC_SQR1
、ADC_SQR2
、ADC_SQR3
)控制。 - 数据存储:所有规则组的转换结果都存储在同一个数据寄存器(
ADC_DR
)中,因此,如果进行多通道转换,新的转换结果会覆盖前一个结果。 - DMA支持:通常与DMA(Direct Memory Access)配合使用,以避免数据覆盖,并将数据实时传输到内存中。
- 触发方式:可以通过软件触发或硬件触发(例如外部信号或定时器事件)来启动规则组的转换。
注入组(Injected Group)
- 定义:注入组是ADC的次要转换组,用于执行高优先级的、事件驱动的转换任务。
- 通道数量:注入组最多可以配置4个通道。
- 独立数据寄存器:每个注入通道的转换结果都有其独立的数据寄存器(如
ADC_JDR1
、ADC_JDR2
、ADC_JDR3
、ADC_JDR4
),不会发生数据覆盖。 - 转换顺序:转换顺序由注入序列寄存器(
ADC_JSQR
)控制。 - 优先级:注入组的转换优先级高于规则组,可以在规则组转换过程中被外部事件触发,打断规则组的转换。
- 触发方式:通常由外部事件触发,如定时器、外部中断或软件触发。
- 中断支持:注入组转换结束时可以生成中断,适用于需要快速响应的应用场景。
使用场景
配置示例
在STM32的ADC模块中,规则组和注入组可以同时工作,也可以根据需要独立工作。开发者可以根据具体的应用需求来配置和使用这两组转换模式。
作者:小肖恩i