i2cdetect не показывает устройство, но оно есть
Просто быстрый вопрос. На моем 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
делать вид, что никого нет дома?
Спасибо!
1 ответ
Различные устройства I2C могут вести себя по-разному при чтении / записи байтов.
Некоторые, например, могут ожидать команду write_then_read и не будут признавать отдельную команду чтения. Другие могут ожидать, что по крайней мере 16 бит данных будут прочитаны / записаны, в противном случае транзакция завершится неудачно.
i2cdetect может использовать различные подходы для исследования, такие как команда чтения / записи, настроенная с помощью параметров командной строки. Вы можете попробовать -r или -q.
Если это не сработает, посмотрите на реализацию команды и таблицу данных вашего устройства, и убедитесь, что зондирование возможно.