嵌入式linux I2C 设备开发调试 使用i2cget 工具失败的问题
前提(设备树配置好)
进这个文件里查看 /sys/firmware/devicetree/base/i2c@feaa0000。比如下边这样
root@rk3588:/sys/firmware/devicetree/base/i2c@feaa0000/aw2013_led@45# ls
compatible name phandle reg status
root@rk3588:/sys/firmware/devicetree/base/i2c@feaa0000/aw2013_led@45# cat name
aw2013_ledroot@rk3588:/sys/firmware/devicetree/base/i2c@feaa0000/aw2013_led@45#
设备树 好了,启动后进行i2cget 检查
调试前先这样测试下,如果失败,基本就是硬件IIC接口连接错误,或者I2C设备地址错误了
root@rk3588:/lib/modules# i2cget -f -y 2 0x46 0x00
Error: Read failed
失败案例,RK3588S I2C2 外设有5组复用IO 配置选项,M0 ~M4 每组都有对应的IO,结果设备树配置的是M0组,硬件设计 I2C接口 链接成了I2C2 M4组IO 直接导致错误
我的I2C设备地址是0X45 ,下边这个0X45地方啥也没有—
#下述操作是检测I2C2总线上的I2C设备 root@rk3588:/# i2cdetect -y 20 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- UU -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- 6d -- --
70: -- -- -- -- -- -- -- --
#下述操作是读取I2C2接口的 0x45I2C地址设备上0X00寄存器的值root@rk3588:/# i2cget -f -y 2 0x45 00
Error: Read failed
#下述操作是把芯片内所有寄存器的值 都给获取出来**root@rk3588:/# i2cdump -f -y 2 0x45
No size specified (using byte-data access)0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX**
出现上述原因的是 I2C设备 没连接上,I2C线没接对,或者内核设备树配置出问题了,再或者就是IIC线受干扰了(接逻辑分析仪会导致信号 受干扰)