Я пишу код для реализации простой функции чтения/записи i2c
, используя общий драйвер linux i2c
linux/i2c-dev.h
Я запутался в ioctl
: I2C_SLAVE
Документация ядра гласит следующее:
Вы можете выполнять простые транзакции i2c, используя вызовы read (2) и write (2). Вам не нужно передавать адресный байт; вместо этого установите его ioctl I2C_SLAVE перед попыткой доступа к устройству
Однако я использую ioctl I2C_RDWR
, где я снова устанавливаю подчиненный адрес, используя i2c_msg.addr
.
В документации ядра также упоминается следующее:
Некоторые вызовы ioctl() предназначены для административных задач и обрабатываются i2c-dev напрямую. Примеры включают I2C_SLAVE
Так нужно использовать ioctl I2C_SLAVE
? Если это так, мне нужно установить его только один раз или каждый раз, когда я выполняю чтение и запись?
Если бы у меня было устройство i2c
, я мог бы просто протестировать код на устройстве и не стал бы беспокоить вас, ребята, но, к сожалению, у меня его нет сейчас.
Спасибо за помощь.