Я работаю над приложением, передающим данные с 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
Чтение блока данных из I²C на Raspberry Pi с использованием Python SMBus2 внезапно перестало работать. Что может быть не ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение