只是一个简单的问题。在我的i2c bus 0
上,我有两个设备,0x32
和0x20
。
当我使用i2cdetect时,只显示其中一个。
# ./i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- 32 -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
奇怪的是,我可以使用i2cset
和i2cget
向他们两个发送和接收消息。我想这不是一个技术问题,而是技术上的好奇心 - 为什么0x20
假装没人在家?
谢谢!
答案 0 :(得分:5)
各种I2C设备在读/写字节时的行为可能不同。
例如,某些人可能期望使用write_then_read命令,并且不会确认独立的读取命令。其他人可能希望读/写至少16位数据,否则交易失败。i2cdetect可以使用不同的探测方法,例如读/写命令,通过命令行选项进行调整。你可以尝试-r或-q。
如果这不起作用,请查看命令实现和设备的数据表,并确保可以进行探测。