Последняя версия SMBus SPE c V3.0 20th De c 2014 показывает только один тип блочной записи / чтения (за исключением вызова блочного процесса):
6.5.7 Block Write/Read
Write: Address(Wr), Command, Count = N, Byte 1, Byte 2, ..., Byte N [, PEC]
Read: Address(Wr), Command, Address(Rd), Count = N, Byte 1, Byte 2, ..., Byte N [, PEC]
Однако, глядя на интерфейс пользовательского пространства Linux, можно увидеть 3 типа блочных транзакций для использования с ioctl I2C_SMBUS
из uapi / linux / i2 c .h :
#define I2C_SMBUS_BLOCK_DATA 5
#define I2C_SMBUS_I2C_BLOCK_BROKEN 6
#define I2C_SMBUS_I2C_BLOCK_DATA 8
Следуя коду в drivers / i2c / *, он делегирует smbus_xfer
/ master_xfer
(если эмулируется) в i2c_algorithm
, который указывает c адаптеру / устройству.
1. Все ли эти типы транзакций в конечном итоге соответствуют спецификации блочного провода c для SMBus 3.0?
2. И как мне решить, какой из них мне нужно использовать?
Я создаю Java интерфейс JNA на Raspbian GNU / Linux 10 (buster)