WIKI / 接口与应用
I²C:两根线如何分配地址与读取时间
理解开漏上拉、地址冲突与连续读,检查多个位置传感器共用总线时的时间和电气预算。
更新于 2026.10.18
I²C用时钟SCL和数据SDA在带地址的器件之间通信。两根线通常依赖开漏输出和上拉电阻,不能把接口理解成两根任意长度的普通数字线。总线电容、上拉电流和上升时间会共同限制速度与连接方式。
先分清地址与寄存器
总线地址用于选择器件,寄存器地址用于选择器件内部数据。代码若把七位地址和已经左移、包含读写位的八位表示混用,就可能访问不到芯片。同一总线接两颗固定相同地址的传感器,也不会因为它们摆在不同位置而自动区分,需选择可配置地址、独立总线或合适的复用方案。
NXP UM10204是核对START、STOP、ACK及总线时序的主源。TI TMAG5273是带I²C的三轴霍尔器件,公开提供地址配置和转换触发功能;这些是型号功能,不是所有I²C角度芯片共有的保证。
时钟频率不能直接换成采样率
一帧除了数据还有地址、读写控制和应答,读取寄存器有时还要写地址并重复起始。即使只取两字节,也不能按十六个时钟估算完整事务。若多个传感器共用总线,主控排队和重试还会增加读数间隔。
连续读取是否得到同一次转换的数据,要查锁存与更新规则。先后读取X和Y时若设备中途刷新,两轴组合可能不属于同一时刻。应优先使用器件规定的成组读法,并核对完成标志,而不是只看屏幕上的数是否平滑。
验证要包含总线卡住的情况
检查上拉、电平和电容后,再测试冷启动、掉电器件挂总线、地址冲突、NACK和恢复流程。I²C不是天然的长线工业接口;对线长、干扰或确定性要求高时,应重新评估物理层和通信架构。数据新鲜度与测量误差仍需独立验收。