DEEP 44 · 第五辑 · 电路 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

解读 44 · LSM6DSV16X:IMU 芯片的读取路径

解读对象:microduck-replica/docs/imu_to_dxl-设计包/原理图连接表.md(I2C 初版)+ microduck-replica/hardware/imu_to_dxl/imu_to_dxl-接线表.md(SPI 终版)
需要的前置:解读 43(这颗芯片的数据要送去哪)。

芯片一句话

LSM6DSV16X 是 ST 的六轴惯性芯片:三轴陀螺仪(测角速度)+ 三轴加速度计(测重力方向),LGA-14 封装,片上 SFLP 块直接输出姿态四元数。它只讲两种"方言":I2C 或 SPI——由 CS 引脚的电平在上电时决定。

数据要走的整条路

LSM6DSV16X ──I2C/SPI──► STM32G031(MCU)──打包──► 半双工缓冲 ──► 总线 ID 200 ──► 主机 imu.rs 解码
   ▲                                                                 rotate(mount) 转回躯干系
   └ 量程寄存器定 ±500 dps,主机按 17.5 mdps/LSB 换算

芯片到 MCU 这一段,仓库里有两个版本:

设计包连接表(初版) hardware 接线表(终版)
接口 I2C @400 kHz(PB6/PB7,4.7kΩ 上拉) SPI 四线(PA4 CS / PA5 SCK / PA6 MISO / PA7 MOSI)
从机地址/片选 地址 0x6A(SA0 接 GND) CS 片选,R1 10kΩ 上拉到 3V3
中断 INT1 → PA0(预留,骨架先轮询) INT1/INT2 两路

设计包那版明确标注【设计】决策,hardware 版是后来画原理图时的改型——不是文档打架,是演进,以接线表为准;两版共同的铁律见下节。

CS 的坑:这根脚不能悬空

构建日志 2026-09-06 原文把两个翻车点写进连接表,第一个就是它:LSM6DSV16X 的 CS 必须拉 3V3——悬空会进 SPI 模式,I2C 永远读不到。CS(片选)这类"模式选择脚"在上电瞬间采样电平:悬空=电平不确定=每次上电抽奖。

改 SPI 之后这条没作废,只是换了理由:上电与复位期间 MCU 的 PA4 是高阻,CS 浮着可能被 IMU 误判模式、或把总线噪声当命令——所以接线表里 R1 10kΩ 上拉标注"必须"。另一个硬性要求:U2.2(SDx)、U2.3(SCx)必须接地不可悬空(ST DS13510 Rev 1, Table 1)。

量程是一对约定,不是单方面的事

固件若把陀螺配成 ±125 dps,芯片输出的还是"原始计数",但主机按 17.5 mdps/LSB(±500 dps 档的换算系数)去乘——读到的角速度整体错 4 倍,还不报任何错。设计规格.md 把"量程锁定 ±500 dps"标为【已验证】,就是因为这是固件与主机之间必须对齐的隐式合同。

你带走的收获

  1. 带模式选择脚的芯片,选择脚永远要有确定电平——上拉或下拉,悬空是最常见的新手翻车点。
  2. I2C 省引脚、SPI 快:两根线带多设备靠地址,四根线独占靠片选;小板引脚紧张时 I2C 合理,要带宽时 SPI。
  3. "原始计数"不是物理量:传感器读数 = 计数 × 换算系数,系数跟着量程寄存器走,两端必须同版本。
  4. 数据手册的"必须接地/必须接电源"脚是硬约束:ST 明确写了 SDx/SCx 不可悬空,这类句子值得在画图前逐条抄进自查清单。

延伸

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页