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 共用)

两个初学者最容易踩的点:

  1. AP_AD0 引脚决定 I2C 地址:7 位从机地址是 b110100X,X 由 AP_AD0 电平决定。同一总线挂两颗 ICM-45686 时,一颗接低(0x68 方向)一颗接高(0x69 方向)。
  2. 内部上拉不是万能的:几乎所有数字引脚默认使能内部弱上拉,但手册明确说它不足以替代开漏总线上的外部上拉电阻——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

  1. 对噪声敏感的应用:AR/VR 头显 3DoF/6DoF 追踪、云台、机器人航姿参考——3.8 mdps/√Hz 的陀螺噪声是同级别里的第一梯队;
  2. 需要双通路:一边高频喂 OIS 控制器、一边给主控供数据,或者想在 IMU 上顺带挂外部传感器合并进一个 FIFO;
  3. 电池设备想省主控:WoM/计步/抬腕等 APEX 功能 + 超低功耗值守,主控可以长期睡眠。

上手检查单(按顺序执行):

  1. 上电读 WHO_AM_I(0x72)确认通信正常;
  2. 按 5.2 节核对电源去耦与 I2C 上拉;用 I3C 则确认 VDDIO ≥ 1.1 V;
  3. 水平静止放置,检查 X/Y ≈ 0 g、Z ≈ +1 g,陀螺输出接近 0;
  4. 跑一次自检(Self-Test)确认机械与电路正常;
  5. 配置量程 / ODR / 滤波器带宽,再开 FIFO 与所需 APEX 功能(记住 APEX 与 8 KB FIFO 互斥);
  6. 需要 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 间接访问)+ 一张引脚图。掌握这些,剩下的寄存器细节都是用到再查的字典内容。下一篇数据手册精讲见。