Чтение блока данных из I²C на Raspberry Pi с использованием Python SMBus2 внезапно перестало работать. Что может быть неPython

Программы на Python
Anonymous
Чтение блока данных из I²C на Raspberry Pi с использованием Python SMBus2 внезапно перестало работать. Что может быть не

Сообщение Anonymous »

Я работаю над приложением, передающим данные с Arduino (ведомого) на Raspberry Pi (ведущего) по шине I²C. Я писал код, как вдруг передача перестала работать, и я не могу понять, почему. Я попробовал переустановить SMBus2, но проблема не устранена.
Вот тестовый код, пытающийся передать 7 байт из Arduino:
#! /usr/bin/python3

from smbus2 import SMBus

slaveAddress = 10
blockSize = 7

with SMBus(1) as bus:
# Read a block of blockSize bytes from address slaveAddres, offset 0
block = bus.read_i2c_block_data(slaveAddress, 0, blockSize)
# Returned value is a list of slaveAddress bytes
print(block)

Я попробовал несколько вариантов, но несмотря ни на что получаю следующее:
[255, 255, 255, 255, 255, 255, 255]

Если я дам команду
i2ctransfer -y -v 1 r7@0x0a

Я получаю ожидаемый результат
msg 0: addr 0x0a, read, len 7, buf 0x32 0x01 0x00 0x00 0x00 0x01 0x00


Это означает, что код на Arduino и шине I²C ведет себя так, как ожидалось. Что может быть не так и как это исправить?
РЕДАКТИРОВАТЬ: Я пробовал читать по одному байту:
#! /usr/bin/python3
from smbus2 import SMBus

slaveAddress = 0x0a
blockSize = 7
block = []
with SMBus(1) as bus:
for x in range(blockSize):
block.append(bus.read_byte_data(slaveAddress, x))
print(block)

Я все равно получаю:
[255, 255, 255, 255, 255, 255, 255]


Подробнее здесь: https://stackoverflow.com/questions/790 ... ddenly-qui

Вернуться в «Python»