基本概念
Scan Group(扫描组)是芯片厂商(主要是英飞凌 AURIX 系列)在 MCAL 实现中引入的硬件特定概念。它是 ADC 转换请求源(Group Request Source)的一种类型,与 "队列组(Queued Group / 普通组)" 相对应。
在英飞凌 AURIX TC27x/TC3xx 系列芯片中,ADC 支持三种转换请求源:
REQSRC0_8STG_QUE:Group Queued source(队列组 / 普通组)
REQSRC1_NCH_SCAN:Group Scan source(扫描组)
REQSRC2_BGND_SCAN:Background Scan source(后台扫描组)
工作原理
扫描组是按照组内预先定义的固定通道顺序进行自动转换的序列:
- 配置阶段:在 MCAL 工具中预先定义扫描组包含的通道及其转换顺序
- 触发阶段:通过软件 API 或硬件信号触发一次扫描
- 转换阶段:ADC 硬件自动按照配置好的顺序依次转换所有通道,无需软件干预
- 完成阶段:所有通道转换完成后,生成一个组转换完成中断(如果配置了的话)
- 结果存储:转换结果自动存入预先分配的结果缓冲区中
对比
|-----------|-----------------------|-----------------------------|
| 对比维度 | Scan Group(扫描组) | Queued Group(队列组 / 普通组) |
| 通道顺序 | 固定不变,只能按照组内预先定义的顺序转换 | 灵活可变,支持 8 级序列的任意顺序转换 |
| 硬件资源 | 不使用硬件队列资源,直接使用预定义通道列表 | 使用硬件队列资源,每个队列有 8 个阶段 |
| 调度开销 | 极低,几乎没有硬件调度开销 | 有一定的队列调度开销 |
| 动态调整 | 运行时无法修改通道顺序和数量 | 运行时可以动态修改队列中的通道 |
| 最大通道数 | 受 ADC 硬件单元支持的最大通道数限制 | 每个队列最多 8 个通道 |
| 优先级机制 | 与其他请求源通过仲裁槽优先级竞争 | 队列内的每个请求可以有独立的优先级 |
扫描组是汽车电子中最常用的 ADC 转换方式
扫描组适用于以下场景
1.固定顺序、周期性采集多个通道:例如电机控制中的三相电流、电压采样,需要在每个 PWM 周期的固定时刻按照相同顺序采集
2.对转换效率要求高:扫描组的转换延迟更低,CPU 占用几乎为零,适合高速采样场景
3.需要数据一致性:一次触发完成所有通道转换,保证同一时刻的采样数据一致性
4.简单的多通道采集:不需要复杂的优先级调度和动态通道调整的场景
普通组(队列组)适用于以下场景
1.需要动态调整通道顺序和数量:根据系统状态动态选择需要采集的通道
2.不同优先级的采集任务:队列内的每个请求可以设置不同的优先级
3.复杂的多任务采集:多个应用层组件共享同一个 ADC 硬件单元
4.需要中断单个通道转换:可以单独取消队列中的某个通道转换请求