1. Sensor 基础概念
1.1 Sensor 在嵌入式系统中的作用
在嵌入式系统中,Sensor(传感器)是连接物理世界与数字世界的核心接口。它负责将环境中的物理量(如加速度、光照强度、磁场强度)转换为电信号,再通过模数转换(ADC)或数字接口(I2C/SPI)送入处理器,为上层应用提供实时、精确的感知数据。
在瑞芯微 RK 系列平台上,Sensor 的作用可归纳为以下四个关键维度:
| 维度 | 说明 | 典型场景 |
|---|---|---|
| 感知输入 | 采集环境或设备状态,形成原始数据流 | 加速度计检测设备倾斜、光感检测环境亮度 |
| 系统唤醒 | 低功耗模式下通过 Sensor 中断唤醒主控 | 计步器在运动时唤醒 RK 芯片处理数据 |
| 融合计算 | 多 Sensor 数据融合,输出更高层语义 | IMU 融合输出姿态四元数 |
| 驱动控制 | Sensor 数据作为闭环控制的反馈量 | 光感调节屏幕背光 PWM 占空比 |
1.2 常见 Sensor 类型
嵌入式系统中 Sensor 种类繁多,本课程聚焦于 RK 平台最常对接的三类 Sensor:IMU(惯性测量单元)、光感(环境光传感器)、磁力计(地磁传感器)。以下从物理原理、输出数据、典型寄存器三个维度进行对比。
| 类型 | 物理量 | 输出数据 | 典型寄存器 | 接口协议 |
|---|---|---|---|---|
| IMU | 加速度、角速度 | ACC_X/Y/Z, GYRO_X/Y/Z | CTRL_REG, OUT_X_L, OUT_X_H | I2C / SPI |
| 光感 | 可见光强度 | ALS_CH0, ALS_CH1 (lux) | ALS_CONF, ALS_DATA | I2C |
| 磁力计 | 地磁场强度 | MAG_X/Y/Z (uT) | CNTL_REG, DATAX_L, DATAX_H | I2C |
1.2.1 IMU(惯性测量单元)
IMU 通常集成加速度计(Accelerometer)和陀螺仪(Gyroscope),部分型号还包含温度传感器。加速度计测量设备在 X/Y/Z 三轴上的线性加速度(单位:g 或 m/s²),陀螺仪测量三轴角速度(单位:°/s)。在 RK 平台上,IMU 常用于运动检测、屏幕旋转、计步、AR/VR 等场景。
1.2.2 光感(环境光传感器)
环境光传感器(Ambient Light Sensor, ALS)检测周围可见光强度,输出单位为 lux。RK 平台利用光感数据实现屏幕亮度自动调节、接近检测(配合红外 LED)等功能。光感芯片通常具有可编程的增益和积分时间寄存器,以适应不同光照环境。
1.2.3 磁力计(地磁传感器)
磁力计测量地球磁场在三个轴向上的分量,输出单位为微特斯拉(μT)。磁力计数据与加速度计、陀螺仪融合后可提供绝对航向角(电子罗盘)。在 RK 平台上,磁力计驱动需要特别注意硬磁/软磁校准数据的存储与加载。
1.3 Sensor 数据流概述
Sensor 数据从物理世界到应用层的完整流动路径,是驱动开发者必须掌握的全局视图。以下数据流图展示了在 RK Linux 内核中,Sensor 数据从硬件到用户空间的标准路径。
数据流中的关键环节包括:
- 物理量采集:Sensor 芯片内部敏感单元将物理量转换为电信号,经 ADC 量化后存入数据寄存器。
- 寄存器读取:RK 平台通过 I2C/SPI 总线,按照 Sensor 数据手册规定的时序,读取数据寄存器(如 OUT_X_L、OUT_X_H)。
- 内核驱动处理:驱动将原始寄存器值转换为标准单位(如 m/s²、lux、μT),并通过 IIO 框架或 input 子系统上报。
- 用户空间消费:HAL 层或应用层通过 sysfs、devfs 或 IIO 字符设备获取数据,用于算法融合或控制决策。
1.4 Sensor 寄存器配置基础
寄存器配置是 Sensor 初始化的核心。以下表格列出了 RK 平台 Sensor 驱动中最常操作的寄存器类型及其作用。
| 寄存器类别 | 典型寄存器名 | 作用 | 配置时机 |
|---|---|---|---|
| 芯片 ID | WHO_AM_I / CHIP_ID | 验证 Sensor 型号与通信是否正常 | probe 阶段 |
| 控制寄存器 | CTRL_REG1 / PWR_MGMT | 使能 Sensor、选择工作模式、设置采样率 | probe + resume |
| 数据寄存器 | OUT_X_L / OUT_X_H | 存储最新采样数据(通常为 16 位补码) | 每次数据读取 |
| 配置寄存器 | INT_CFG / FILTER_CFG | 配置中断触发条件、数字滤波器参数 | probe 阶段 |
| FIFO 寄存器 | FIFO_CTRL / FIFO_STATUS | 管理 FIFO 缓冲区,批量读取数据 | probe 阶段(可选) |
1.5 本章小结
本章建立了 Sensor 基础概念的完整认知框架:
- Sensor 在嵌入式系统中承担感知输入、系统唤醒、融合计算、驱动控制四大角色。
- IMU、光感、磁力计是 RK 平台最常对接的三类 Sensor,各自输出不同的物理量,寄存器结构有共性也有差异。
- Sensor 数据流从物理世界出发,经过硬件采集、总线传输、内核驱动处理,最终到达用户空间,每个环节都有明确的配置要点。
- 寄存器配置是 Sensor 初始化的核心,芯片 ID、控制、数据、配置、FIFO 五类寄存器构成驱动开发的主要操作对象。