я использую python3 в raspberrypi 3.
Мне удалось связаться с Arduino, используя i2 c. И в процессе, «write_i2c_block_data» был использован. Было подтверждено, что функция RaspberryPi i2 c работает нормально.
Эта проблема возникает при чтении значения. Я уже знаю, что «cmd» в «read_i2c_block_data» равен 1 байту. Но я хочу использовать 'cmd' 2 байта. (потому что 'cmd' включает 1 байт контрольной суммы. Только в моем протоколе)
1 #!/usr/bin/python
2 import smbus
3 bus = smbus.SMBus(1) # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)
4
5 DEVICE_ADDRESS = 0x21 #7 bit address (will be left shifted to add the read write bit)
6 DEVICE_SET_SW_ON = 0x21
7 DEVICE_STATUS = [0x81, 0xa5]
8
9 #Write an array of registers
10 #write_block_data(int addr,char cmd,long vals[])
11 sw_on_values = [0x01,0x00,0x00,0x00,0xa5]
12 bus.write_i2c_block_data(DEVICE_ADDRESS, DEVICE_SET_SW_ON, sw_on_values)
13
14 #Read!
15 #read.i2c_block_data(int addr,char cmd, length)
16 rdata = bus.read_i2c_block_data(DEVICE_ADDRESS, DEVICE_STATUS, 6)
17
Пожалуйста, посмотрите на Строка № 7 и 16 .
Может кто-нибудь помочь мне? Я жду тебя.