Linux Типы транзакций блока SMBus - PullRequest
0 голосов
/ 05 мая 2020

Последняя версия 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)

...