STM32ADC采集规则组和注入组

规则组和注入组简介

在 STM32 的 ADC 模块中,规则组(Regular Group)和 注入组(Injected Group)是两种不同的 ADC 转换模式,分别用于处理不同优先级和触发条件下的 ADC 转换需求。

规则组(Regular Group)

定义

规则组用于 常规的 ADC 转换任务。规则组可以包含多个通道(从通道 0 到 18,具体通道数量取决于 STM32 的型号),并按预先配置的顺序依次完成这些通道的转换。

特点
  • 低优先级
    • 相对于注入组,规则组的优先级较低。当注入组被触发时,规则组的转换会被暂停。
  • 支持多通道转换
    • 规则组可以按照用户配置的序列(ADC_SQRx 寄存器)依次完成多个通道的转换。
  • 触发方式灵活
    • 规则组支持软件触发(手动启动转换)和硬件触发(例如定时器、外部事件等)。
  • 支持连续转换
    • 规则组支持循环模式(Continuous Conversion Mode),可以不断循环采样。
  • 数据读取
    • 每次转换结果存储在 ADC_DR 寄存器中,可以通过 EOC(End of Conversion)标志或 DMA 传输读取数据。

规则组的配置
  1. 选择规则组通道数量
    • 配置规则组序列的通道数量(L[3:0],位于 ADC_SQR1 寄存器中)。
    • L 决定规则组中通道的数量。例如 L = 2 表示规则组包含 3 个通道(通道编号从 0 开始计数)。
  2. 设置规则组序列
    • 配置每个通道的顺序,使用 ADC_SQR1ADC_SQR2ADC_SQR3 寄存器。
    • 每个通道编号占用 5 位(支持 0 到 18 通道)。
  3. 选择触发方式
    • 软件触发:通过设置 ADC_CR 寄存器中的 ADSTART 位启动规则组转换。
    • 硬件触发:配置 ADC_CFGR 寄存器的触发源(例如定时器或外部事件)。
  4. 选择采样时间
    • 每个通道的采样时间可以单独配置,使用 ADC_SMPRx 寄存器。
  5. 启用 DMA(可选)
    • 如果规则组是多通道转换,建议使用 DMA 将转换结果传输到内存。

规则组的数据读取
  • 每次通道转换完成后,转换结果存储在 ADC_DR 寄存器中。
  • 如果是多通道序列,DMA 会自动将每次转换结果存储到内存。
  • 在中断模式下,可以通过 EOC(End of Conversion)或 EOS(End of Sequence)中断读取数据。

规则组的应用场景
  • 处理周期性或低优先级的 ADC 转换任务。
  • 使用定时器或软件触发来采集传感器数据,例如温度传感器、光线传感器等。
  • 多通道采集时,通过规则组进行顺序采样并配合 DMA 自动处理数据。

注入组(Injected Group)

定义

注入组是一种 高优先级的 ADC 转换任务,通常用于实时性要求较高的场景。注入组可以包含多个通道,但优先级高于规则组,在触发时可以立即中断规则组的转换。

特点
  • 高优先级
    • 相对于规则组,注入组具有更高的优先级。当注入组被触发时,会立即中断规则组的转换。
  • 支持多通道转换
    • 注入组同样支持多通道(最多 4 个通道),可以按用户配置的顺序依次采样。
  • 独立的触发源
    • 注入组需要单独配置触发源,支持外部触发和软件触发。
  • 单独的数据存储
    • 注入组的转换结果存储在独立的 ADC_JDRx 寄存器中。
  • 无连续模式
    • 注入组只支持单次转换,不支持循环模式(不能像规则组那样自动重复转换)。

注入组的配置
  1. 选择注入组通道数量
    • 注入组最多支持 4 个通道,配置方式通过 JSQR 寄存器(注入序列寄存器)。
  2. 设置注入组序列
    • 使用 ADC_JSQR 配置注入组的通道顺序和数量。
  3. 选择触发方式
    • 软件触发:通过设置 JADSTART 位启动注入组转换。
    • 硬件触发:通过外部事件(如定时器、GPIO 中断)触发。
  4. 采样时间配置
    • 注入组的采样时间与规则组共享(通过 ADC_SMPRx 配置)。
  5. 启用自动注入(可选):
    • 如果需要规则组和注入组同时工作,可以开启自动注入模式(在规则组转换时插入注入组转换)。

注入组的数据读取
  • 每个通道的转换结果存储在独立的 ADC_JDRx 寄存器中(x 表示通道序号)。
  • 注入组的转换完成后,会触发 JEOC(注入通道转换完成)或 JEOS(注入序列完成)中断。

注入组的应用场景
  • 处理实时性要求较高的 ADC 转换任务,例如电机控制中的电流采样。
  • 在规则组转换过程中,插入紧急或高优先级的采样任务。
  • 需要外部触发的特殊采样任务,例如检测某个信号达到特定阈值时的采样。

规则组和注入组的对比

属性规则组(Regular Group)注入组(Injected Group)
优先级
触发方式软件触发或硬件触发软件触发或外部触发
转换序列支持多通道(最多 16 个)支持多通道(最多 4 个)
连续模式支持连续转换不支持连续转换
转换结果寄存器ADC_DRADC_JDRx
中断EOC(单次完成),EOS(序列完成)JEOC(单次完成),JEOS(序列完成)
采样时间配置独立配置每个通道与规则组共享
主要应用场景常规采样任务,如传感器数据采集实时性强的任务,如电机电流采样

规则组与注入组的结合使用

在某些复杂的场景中,可以将规则组和注入组结合使用:

  • 规则组:处理周期性或低优先级任务,采集传感器数据。
  • 注入组:处理紧急或高优先级任务,例如外部触发的信号采集。
    结合使用时,注入组可以在规则组转换过程中被触发,并插入转换任务。转换完成后,规则组会继续执行未完成的转换。

总结

  • 规则组 是常规任务的首选,适合需要多通道连续转换或定期采样的场景。
  • 注入组 是高优先级任务的首选,适合实时性要求高、需要外部事件触发的采样任务。
  • 它们各自独立又可以协同工作,通过合理配置,可以满足复杂应用中的各种 ADC 转换需求。

如有侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flocx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值