只是一个简单的问题。在我的 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
假装没人在家?
谢谢!
最佳答案
各种 I2C 设备在读取/写入字节时可能表现不同。
例如,有些可能需要 write_then_read 命令,但不会确认独立的读取命令。其他人可能期望至少读取/写入 16 位数据,否则事务将失败。i2cDetect可以使用不同的方法进行探测,例如读/写命令,通过命令行选项进行调整。您可以尝试 -r 或 -q。
如果这不起作用,请查看命令实现和设备的数据表,并确保可以进行探测。
关于linux - i2cDetect 不会显示设备,但它就在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27632499/