1. 这颗芯片是什么:一句话与全文地图
ICM-45686 是 TDK InvenSense 的一颗高性能六轴惯性测量单元(IMU):把一个 3 轴陀螺仪(测旋转角速度)和一个 3 轴加速度计(测线性加速度)封装进一块 2.5 × 3 × 0.81 mm 的 14 引脚 LGA 小芯片里。规格书编号 DS-000489,Rev 1.1(2023 年 11 月),全文 199 页。
它的官方定位是 High Performance Dual-Interface (UI + AUX) 6-Axis MEMS MotionTracking Device——"双接口"是这颗芯片最有辨识度的卖点:除了连主控(应用处理器)的 UI 接口,还有一路 AUX 辅助接口,既能以 SPI 从机身份挂到手机相机的 OIS(光学防抖)控制器上,也能以 I2C 主机身份去读外接的传感器。典型应用是 AR/VR 头显与手柄、可穿戴设备、IoT 和相机防抖。
阅读建议:这份手册 199 页里有一大半是寄存器表,初学者不必从头读到尾。按本文顺序读"特性 → 电气特性 → 应用电路 → 接口 → FIFO/APEX → 寄存器要点",就能抓住 90% 的重点。
2. 先看全家福:核心参数速览
数据手册第 1 页的 Features 一栏浓缩了全部卖点,先汇总成一张表:
| 项目 | 参数 | 备注 |
|---|---|---|
| 噪声 | 陀螺 3.8 mdps/√Hz,加速度计 70 µg/√Hz | 同级 IMU 中最低噪声 |
| 陀螺量程 | ±15.625 ~ ±4000 dps,共 9 档 | UI 与 AUX 通路独立可配 |
| 加速度计量程 | ±2 / 4 / 8 / 16 / 32 g,共 5 档 | UI 与 AUX 通路独立可配 |
| 最大输出数据率 | 6400 Hz(低噪声模式) | 低功耗模式 1.5625~400 Hz |
| 六轴电流 | 0.42 mA @ 1600 Hz ODR | 全芯片睡眠仅 2.2 µA |
| FIFO | 默认 2 KB,最大 8 KB | 支持压缩,等效最高 32 KB |
| 主机接口 | I3CSM 12.9 MHz / I2C 1 MHz / SPI 24 MHz | 三选一 |
| 辅助接口 | SPI 从机(OIS)或 I2C 主机 400 kHz | 引脚复用 |
| 供电 | VDD 1.71~3.6 V,VDDIO 1.08~3.6 V | I3C 模式下 VDDIO ≥ 1.1 V |
| 封装与抗冲击 | 2.5×3×0.81 mm 14-pin LGA | 承受 20000 g 冲击 |
| 工作温度 | −40 ℃ ~ +85 ℃ | RoHS / Green |
一句话总结:它的卖点是"同级最低噪声 + 双接口 + 片上运动引擎",适合对姿态精度要求高、又想省主控算力和功耗的场景。
3. 读手册前的预备知识:几个绕不开的术语
初学者第一次翻 IMU 数据手册,最容易卡在术语上。先把高频词列清楚:
- dps(º/s):度每秒,角速度单位。陀螺仪输出的就是"每秒转了多少度"。
- FSR(Full-Scale Range):满量程。量程选得越大,能测的转速/加速度越大,但分辨率越粗——这是一对天然的取舍。
- ODR(Output Data Rate):输出数据率,芯片每秒吐出多少组测量值。
- ZRO(Zero-Rate Output):零速输出,即静止时陀螺的读数偏差(零偏)。这个值越小、随温度漂移越小,陀螺越好。
- mdps/√Hz、µg/√Hz:噪声谱密度单位,衡量"每 1 Hz 带宽里混进来的噪声"。数值越小越安静,后面的章节会教你怎么用它算总噪声。
- FIFO:芯片内部的先进先出缓冲区,攒一批数据再让主控一次性读走。
- APEX:InvenSense 的片上运动功能引擎(计步、敲击检测等)的统称。
- EDMP:增强型数字运动处理器,APEX 功能就是跑在它上面的"小程序"。
- I3CSM:MIPI I3C 的安全增强版本,两线接口,向下兼容 I2C 但速度快得多。
- OIS:光学防抖。相机模组里有一个防抖控制器,需要高频率读取陀螺数据。
4. 性能指标怎么读:以噪声、量程和灵敏度为锚点
4.1 陀螺仪规格表(手册 Table 1)
规格书第 18 页的陀螺表是最该精读的页之一,核心三行:
- 量程与灵敏度的换算:
GYRO_UI_FS_SEL寄存器选 9 档量程,每档对应固定的灵敏度。最常用的 ±2000 dps 档是 16.4 LSB/(º/s),±250 dps 档是 131 LSB/(º/s)。也就是说:把原始读数除以灵敏度,就得到真实角速度。 - 噪声:Rate Noise Spectral Density = 0.0038 º/s/√Hz(即 3.8 mdps/√Hz)。换算方法:总 RMS 噪声 ≈ 噪声密度 × √带宽。带宽 100 Hz 时 ≈ 0.0038 × √100 = 0.038 º/s rms——手册直接给了这个结果,你可以自己验算一遍,这是读任何 IMU 手册都通用的技能。
- 零偏:元件级初始 ZRO 典型 ±0.3 º/s,随温度漂移 ±0.005 º/s/℃。注意表里"Component-level(元件级)"和"Board-level(板级)"是两列不同的数:焊到你的板子上之后,PCB 应力和回流焊温度会让指标变差,选型和标定时要以板级数据为心理预期。
4.2 加速度计规格表(手册 Table 2)
- 量程 5 档:±2/4/8/16/32 g,注意灵敏度方向和直觉相反——量程越小灵敏度越高:±2 g 档 16384 LSB/g,±32 g 档只有 1024 LSB/g。
- 噪声:±8 g 以内量程 70 µg/√Hz;量程越大噪声越高(±32 g 档 110 µg/√Hz)。
- 零偏:±10 mg(元件级)/ ±20 mg(板级)。做倾角测量时记住 1 mg ≈ 0.057°,这个零偏决定了你静态测角的精度上限。
- 水平放置时 X/Y 轴读 0 g、Z 轴读 +1 g,这是每次上电检查传感器好坏最快的"土办法"。
4.3 电气特性(手册 Table 3)
供电电流是功耗优化的依据,几个关键点:
- 六轴低噪声模式:420 µA @ 1600 Hz ODR,6400 Hz 也只多 20 µA(440 µA)——提高 ODR 对电流的影响很小,需要快数据时不必犹豫。
- 六轴低功耗模式(50 Hz,带平均):220 µA。
- 仅加速度计超低功耗模式:15 µA @ 50 Hz。
- 全芯片睡眠:2.2 µA。
- VDD 1.71~3.6 V、VDDIO 1.08~3.6 V 独立供电,方便接 1.8 V 或 3.3 V 的主控 IO 域;但用 I3C 时 VDDIO 最低 1.1 V,这是手册用星号反复强调的注意点。
5. 引脚与典型电路:怎么接进你的板子
5.1 14 个引脚速查
| 引脚 | 名称 | 说明 |
|---|---|---|
| 1 | RESV / AUX1_SCLK / MAS_CLK | 复用:辅助 SPI 时钟 / I2C 主机时钟 |
| 2 | RESV / AUX1_SDIO / AUX1_SDI / MAS_DA | 复用:辅助 SPI 数据 / I2C 主机数据 |
| 3 | RESV / AUX1_CS | 复用:辅助 SPI 片选 |
| 4 | INT1 / INT | 中断 1(推挽或开漏均可) |
| 5 | VDDIO | IO 电源 |
| 6 | GND | 地 |
| 7 | RESV | 保留:悬空 / 接 VDDIO / 接地均可 |
| 8 | VDD | 内核电源 |
| 9 | INT2 / FSYNC / CLKIN | 中断 2 / 帧同步输入 / 外部时钟输入 |
| 10 | RESV / AUX1_CS(与 3 相关的第二组辅助引脚) | 见手册 Table 10 |
| 11 | RESV / AUX1_SDO | 辅助 SPI 数据输出 |
| 12 | AP_CS | 主机 SPI 片选(用 I2C/I3C 时接 VDDIO) |
| 13 | AP_SCL / AP_SCLK | 主机 I2C/I3C 时钟或 SPI 时钟 |
| 14 | AP_SDA / AP_SDIO / AP_SDI | 主机数据线(I2C/I3C 共用) |
两个初学者最容易踩的点:
- AP_AD0 引脚决定 I2C 地址:7 位从机地址是
b110100X,X 由 AP_AD0 电平决定。同一总线挂两颗 ICM-45686 时,一颗接低(0x68 方向)一颗接高(0x69 方向)。 - 内部上拉不是万能的:几乎所有数字引脚默认使能内部弱上拉,但手册明确说它不足以替代开漏总线上的外部上拉电阻——I2C 的 SCL/SDA 仍要外接约 10 kΩ 上拉;接口激活后还应通过寄存器关掉内部上拉。
5.2 典型应用电路与 BOM
手册 4.2~4.4 节给了 4 张应用原理图(双接口 OIS 模式 ×2、I2C 主机模式 ×2、单接口模式 ×2),差异只在 AUX 引脚接不接。共同点是:
- VDD、VDDIO 各配一颗 0.1 µF X7R 旁路电容(C1、C2),这是 BOM 里仅有的两个外部器件(Table 11)。电源纹波超过 50 mV 峰峰时加大电容。
- I2C 总线需外接上拉(约 10 kΩ)。
- 不用的 AUX 引脚按"RESV"处理:悬空、接 VDDIO 或接地都允许。
6. 双接口架构:UI 与 AUX 两条独立数据通路
这是 ICM-45686 区别于普通 IMU 的核心设计,值得单独讲:
- UI 通路(主机接口):接你的应用处理器,支持 I3CSM / I2C / SPI 三选一,负责常规的姿态数据读取、FIFO 读取和配置。
- AUX 通路(辅助接口):引脚与 UI 复用,两种用法二选一:
- OIS 模式:芯片作为 SPI 从机,被相机 OIS 控制器以极高频率轮询陀螺数据。AUX 通路有自己的量程和 ODR 配置(
GYRO_AUX1_FS_SEL等),AUX1 固定 6.4 kHz 低噪声输出——这就是它服务光学防抖的底气。 - I2C 主机模式:芯片自己当主机,外挂最多 2 颗外部 I2C 传感器(如磁力计、气压计)。每次触发自动执行最多 4 笔独立 I2C 事务,读回的数据经片上 EDMP 重新打包,和内部六轴数据一起塞进 FIFO——主控只需读一个 FIFO 就能拿到全部传感器数据。
关键理解:两条通路的传感器是同一份 MEMS,但数据通路、量程、ODR 完全独立。手机就是典型用户:OIS 控制器走 AUX 高频取陀螺,应用处理器走 UI 拿计步、姿态等低频结果,互不干扰。
7. 功耗模式:从睡眠到六轴低噪声的 10 档选择
手册 Table 12 列出了 10 种标准功耗模式,本质是"陀螺开不开、加速度计开不开、以什么方式开"的排列组合:
| 模式 | 陀螺 | 加速度计 | 典型用途 |
|---|---|---|---|
| Sleep | 关 | 关 | 深度休眠(2.2 µA) |
| Standby | 驱动保持 | 关 | 快速唤醒陀螺 |
| Accel 低功耗 / 超低功耗 | 关 | 占空比采样 | 计步、WoM 唤醒(15 µA 级) |
| Gyro 低功耗 | 占空比采样 | 关 | 间歇测转速 |
| 6 轴低功耗 | 占空比 | 占空比 | 常规 wearable 姿态 |
| Accel / Gyro / 6 轴低噪声 | 常开 | 常开 | 高精度连续测量(420 µA 级) |
设计思路很直接:平时让加速度计以超低功耗值守(WoM / 计步),事件发生后再开陀螺进入低噪声模式,整套系统的平均电流就能压到几十 µA 量级。配合后面讲的 APEX 功能,这套"传感 + 判断 + 唤醒主控"的流程可以完全在芯片内部闭环,主控大部分时间可以睡觉。
8. FIFO:为什么"8KB + 压缩"这么重要
FIFO 解决的是嵌入式系统最经典的矛盾:传感器数据率越来越高,主控却不想一直醒着收数据。
- 容量:默认 2 KB,关掉 APEX 功能可扩到 8 KB(Table:APEX 与 FIFO 大小互斥,这是取舍点)。
- 压缩:内置无损压缩算法(基于各轴数据变化量分析),压缩比 ×2/×3/×4,等效存储能力最高到 32 KB,即同样空间多存 4 倍帧。解压由主机在读出后完成。
- 20-bit 高分辨率格式:FIFO 有一种包格式带 20 位数据。此时陀螺数据真实 20 位、加速度计 19 位(LSB 恒为 0),且无论选了什么量程,都固定按 ±4000 dps(131.1 LSB/dps)与 ±32 g(16384 LSB/g)标定——想要最高分辨率时记得用这套换算。
- 包结构:按使能的传感器自动组装,8 字节(单传感器+温度 1 字节)、16 字节(六轴+温度+时间戳)、20 字节(高分辨率版)三种;外接传感器时还有 16/20/32 字节帧。
- FDR(FIFO Data Rate):可以给进 FIFO 的数据再抽帧(decimation),进一步省空间。注意:改 FDR 前必须先关传感器,这是手册写明的操作顺序要求。
9. APEX 与 EDMP:芯片自己会"看懂"动作
ICM-45686 片上有一颗 EDMP(增强型数字运动处理器),APEX 运动功能全部作为软件跑在它上面,包括:
- 计步器(Pedometer):统计步数并发出 Step Detect 中断;
- 倾斜检测(Tilt):倾角超过 35° 并持续可编程时间后触发中断;
- 抬腕亮屏 / 亮屏睡(Raise to Wake/Sleep):可穿戴设备标配手势;
- 单击 / 双击检测(Single/Double Tap):中断里附带敲击类型;
- 运动唤醒(Wake on Motion, WoM):加速度超过阈值即触发,用于从睡眠唤醒整个系统;
- 自由落体(Freefall)、显著运动(SMD)、低 G / 高 G 检测。
对初学者的意义:这些功能以前要你在主控上自己写算法,现在芯片直接给中断结果。主控的 MIPS、功耗、软件复杂度三方面都省下来。这也是"关 APEX 才能把 FIFO 扩到 8 KB"的原因——APEX 代码占着片上存储。
10. 数字接口详解:I3C / I2C / SPI 怎么选
10.1 三种主机接口的速度与特点
| 接口 | 最高速度 | 特点 |
|---|---|---|
| I3CSM | 12.9 MHz(SDR 12.9 Mbps / DDR 25.8 Mbps) | 两线、带带内中断(IBI)、动态地址、CRC 校验 |
| I2C | 1 MHz | 最简单通用,需外接上拉 |
| SPI | 24 MHz(VDDIO 1.2 V 时 20 MHz) | 3 线或 4 线,速度最快 |
选型口诀:要最快上 SPI,要省引脚且主控支持就用 I3C,通用兼容选 I2C。
10.2 I2C 要点
- 从机地址 7 位
b110100X(AP_AD0 决定 X),同一总线最多挂 2 颗; - 非 SPI 模式下默认按 I2C 工作,片内默认开着 50 ns 毛刺滤波器;第一次在总线上出现器件 ID 0x7E 的事务会自动关掉滤波器,之后才能跑到 12.9 MHz(为升级到 I3C 做准备);
- 芯片的 I2C 主机接口(读外部传感器用)只支持到 400 kHz、不支持时钟拉伸(clock stretching)——外接慢速传感器时要注意。
10.3 SPI 要点
- 永远是从机;数据 MSB 在前、SCLK 上升沿锁存;
- 每笔事务第一个字节的最高位是 R/W(读 1 写 0),低 7 位是寄存器地址,随后是数据字节,支持单次和突发(burst)读写;
- 时序参数(Table 7/8):SCLK 最高 24 MHz,高/低电平最短约 17 ns,SDO 输出有效 18.5 ns(负载 20 pF)——布线长、负载大时留出裕量。
10.4 I3CSM 要点
支持 MIPI I3C v1.0 规范的大部分必选命令(ENTDAA 动态地址分配、SETDASA、GETPID/GETBCR/GETDCR/GETSTATUS 等),并支持带内中断(IBI)、CRC/奇偶校验、HDR-DDR 模式。对系统的好处是:比 I2C 快约 13 倍、总线上传感器可以主动"举手"报告事件、还省掉了专用中断线。
11. 寄存器地图与 IREG 间接访问:最容易被劝退的章节
手册第 15 章开始是大段寄存器表,初学者只需抓住框架:
- User Bank 0(直接寻址):7 位地址直接读写,最常用的都在这——传感器数据寄存器
ACCEL_DATA_X1_UI(0x00)起连续排布,温度、FIFO_COUNT/FIFO_DATA(0x12~0x14)、中断配置 INT1/INT2_CONFIG、电源管理 PWR_MGMT0(0x10)、以及身份寄存器 WHO_AM_I(0x72)。上电第一件事就是读 WHO_AM_I 验证通信和芯片在位。 - 四个扩展存储区(间接寻址 IREG):IMEM_SRAM、IPREG_BAR、IPREG_SYS1/2、IPREG_TOP1 不在 7 位地址空间里,要通过 3 个"窗口寄存器"访问:写
IREG_ADDR_15_8(0x7C)和IREG_ADDR_7_0(0x7D)拼出 16 位地址,再读写IREG_DATA(0x7E)。 - 各区基址必须加对:IMEM_SRAM 加 0x0000、IPREG_BAR 加 0xA000、IPREG_TOP1 加 0xA200、IPREG_SYS1 加 0xA400、IPREG_SYS2 加 0xA500。地址加错是调试 IREG 读不到数的头号原因。
- IREG 的特殊规则:访问间隔至少 4 µs;不支持突发读写;读操作是"读预取"机制(读地址设置完成后芯片自动预取一次)。写 IREG 时地址和数据必须一笔 burst-write 写完,防止意外的预取。
- 字节序:默认小端(Little Endian),要大端需把
SREG_CTRL里的SREG_DATA_ENDIAN_SEL置 1。移植老驱动时字节序对不上是经典坑。
12. 时钟、自检与轴向定义
- 时钟源:内部弛豫振荡器,或与陀螺 MEMS 振荡器自动择优(推荐,且是唯一在全模式下达标的内部方案);CLKIN 引脚可输入 20~40 kHz 高精度外部时钟,能降低灵敏度误差和温漂、改善陀螺取向精度。
- 自检(Self-Test):使能后机械结构被激励,比较"自检开 − 自检关"的输出差值,落在手册 min/max 范围内即通过。量产和出厂检验必做。
- 轴向:手册 Figure 13 给出 X/Y/Z 敏感轴方向与旋转极性(以引脚 1 标识点为基准),画 PCB 封装时就要对好方向,装反了软件里再"翻"会引入角度误差。
13. 选型建议与上手检查单
什么场景值得选 ICM-45686:
- 对噪声敏感的应用:AR/VR 头显 3DoF/6DoF 追踪、云台、机器人航姿参考——3.8 mdps/√Hz 的陀螺噪声是同级别里的第一梯队;
- 需要双通路:一边高频喂 OIS 控制器、一边给主控供数据,或者想在 IMU 上顺带挂外部传感器合并进一个 FIFO;
- 电池设备想省主控:WoM/计步/抬腕等 APEX 功能 + 超低功耗值守,主控可以长期睡眠。
上手检查单(按顺序执行):
- 上电读
WHO_AM_I(0x72)确认通信正常; - 按 5.2 节核对电源去耦与 I2C 上拉;用 I3C 则确认 VDDIO ≥ 1.1 V;
- 水平静止放置,检查 X/Y ≈ 0 g、Z ≈ +1 g,陀螺输出接近 0;
- 跑一次自检(Self-Test)确认机械与电路正常;
- 配置量程 / ODR / 滤波器带宽,再开 FIFO 与所需 APEX 功能(记住 APEX 与 8 KB FIFO 互斥);
- 需要 IREG 扩展区时,核对各区基址与 4 µs 访问间隔。
14. 小结
把 199 页规格书压缩成几句话:ICM-45686 = 同级最低噪声的六轴 MEMS + 一路可当 SPI 从机(OIS)或 I2C 主机的 AUX 接口 + 8 KB 可压缩 FIFO + 片上 APEX 运动引擎 + I3C/I2C/SPI 三合一主机接口,装在 2.5×3 mm 的 14 引脚 LGA 里,六轴常开只要 0.42 mA。
读懂它的手册,关键在四张表(陀螺规格、加速度计规格、电气特性、功耗模式)+ 两套机制(FIFO 包结构与 IREG 间接访问)+ 一张引脚图。掌握这些,剩下的寄存器细节都是用到再查的字典内容。下一篇数据手册精讲见。