有时候我们查看芯片的datasheet可以得到一个i2c的地址,但是我们直接使用它,配置到dts或者驱动当中使用,发现读取不到设备id或者i2c通讯异常,此时排查硬件没问题之后,就要看看这个i2c地址是否设置对了。
比如我这里,i2c地址在datasheet写了两个,此时就不知道使用哪个了。
其实,i2c地址主要由7bit的二进制数值组成,最低位是读写标志位,0表示写,1表示读,具体可看下图。
所以我们在linux驱动中要取这个ic设备的从设备地址,就是0xA3或者0xA2右移一位得到,那就是0x51,dts配置如下:
rtc@51{
compatible = "nxp,pcf8563";
reg = <0x51>;
};