[Python3] [Smbus] как я могу использовать 'read_i2c_block_data' с 2-байтовым cmd - PullRequest
0 голосов
/ 20 апреля 2020

я использую 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 .

Может кто-нибудь помочь мне? Я жду тебя.

...