2025-11-08 06:18:44
I2C总线上的设备都是靠地址来互相认的。就像小区里每家每户都有门牌号一样,主机会先发个地址,如果设备认得这个号就回个应答,否则就不回应。地址是7位二进制数,范围从0x00到0x7F,每个设备只能占一个号。比如温度传感器和加速度计的地址肯定不一样,否则它们会互相抢着回消息。
为啥设备得用地址认呢?因为I2C总线是共用的,主从设备多的话得有个区分规则。根据I2C规范,设备地址占用了从机数据总线的最高7位,剩下的1位是读写位(读为0,写为1)。主机会先发9位起始码,接着发7位地址加1位读写位,设备收到地址后才会响应。比如当主发0x48(加速度计地址)时,加速度计才会回应,其他设备就当没听见。规范里明确说地址范围是0-127(十进制),也就是0x00到0x7F,这样能支持128个不同设备同时在线。要是两个设备地址一样,就会互相干扰,就像两个门牌号相同的邻居,快递员根本分不清该敲门谁家。
本题链接: