天天看點

Linux驅動調試i2c裝置從位址的确定

有時候我們檢視晶片的datasheet可以得到一個i2c的位址,但是我們直接使用它,配置到dts或者驅動當中使用,發現讀取不到裝置id或者i2c通訊異常,此時排查硬體沒問題之後,就要看看這個i2c位址是否設定對了。

比如我這裡,i2c位址在datasheet寫了兩個,此時就不知道使用哪個了。

Linux驅動調試i2c裝置從位址的确定

其實,i2c位址主要由7bit的二進制數值組成,最低位是讀寫标志位,0表示寫,1表示讀,具體可看下圖。

Linux驅動調試i2c裝置從位址的确定

是以我們在linux驅動中要取這個ic裝置的從裝置位址,就是0xA3或者0xA2右移一位得到,那就是0x51,dts配置如下:

[email protected]{
			compatible = "nxp,pcf8563";
			reg = <0x51>;
		};