BloomJack 0 19 августа, 2021 Опубликовано 19 августа, 2021 · Жалоба Возникла трудность в общении с микросхемой по шине I2C в Linux + python3. пользую библиотеку Smbus2 для работы по протоколу I2C. Мне требуется такой формат общения при чтении: Стандартными функциями чтения мне не удалось считать данные так как анализатор шины показал что можно формировать только один байт адреса регистра чтения, а мне нужно 2. Получилось через функцию i2c_rdwr сделать нужный фрейм: #!/usr/bin/env python3 from smbus2 import SMBus, i2c_msg with SMBus(0) as bus: write = i2c_msg.write(59, [0xF0, 0x20]) read = i2c_msg.read(59, 2) bus.i2c_rdwr(write, read) с 2мя байтами субадреса регистра, что видно на логане: По анализатору я получаю свои данные: 00 06 и структура соответствует спецификации. Проблема в том что функция не возвращает данные в явном виде, я не понимаю где их забирать. Как я могу получить байт лист? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 54 19 августа, 2021 Опубликовано 19 августа, 2021 · Жалоба в документации на этот smbus2 после i2c_rdwr() в созданную ранее переменную read заглядывали, что там внутри лежит в read.buf? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BloomJack 0 19 августа, 2021 Опубликовано 19 августа, 2021 (изменено) · Жалоба 3 hours ago, _pv said: в документации на этот smbus2 после i2c_rdwr() в созданную ранее переменную read заглядывали, что там внутри лежит в read.buf? print(read_msg.buf) <ctypes.LP_c_char object at 0xffffbb8a7f40> и значение 0xffffbb8a7f40 меняется всегда. это указатель? как его использовать? Изменено 19 августа, 2021 пользователем BloomJack Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 54 19 августа, 2021 Опубликовано 19 августа, 2021 · Жалоба .buf[0] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться