Я работаю с I2C-устройством под Linux и попытался использовать интерфейс устройства, как описано в разделе Link.Linux I2C-Dev IOCTL-Call производит неправильное сообщение
Таким образом, если мы предполагаем следующий код:
char outbuf[SIZE] = { 'e', 'b' };
struct i2c_rdwr_ioctl_data msgset;
struct i2c_msg msg[1];
msg[0].addr = 0x53; // access address 0x53
msg[0].flags = 0; // 0 means write
msg[0].len = SIZE; // size is already set to two
msg[0].buf = outbuf
msgset.msgs = msg;
msgset.nmsgs = 1;
ioctl(file, I2C_RDWR, &msgset); // fille is already assigned, etc.
мы бы написать одно сообщение, содержащее два байта для решения 0x53 !? Или мы могли бы сказать,
S Addr Wr [A] Data [A] Data [A] P
в пути, как его сделали here.
Но когда я смотрю на свою сферу, я получаю что-то вроде этого:
или Лил более подробную:
Но это не то, что мы хотим, а не то, что в спецификации указано, , кроме того, мы получаем
S Addr Wr [A] Data P S Addr Wr [A] Data P
Кто-нибудь знает это поведение или может описать его мне? Я пробовал все типы вызовов IOCTL, SMBUS, write_block_data. Каждый раз, когда появляется новое начальное условие между байтами данных и адрес также повторяется!
Я получаю что-то неправильно?
Спасибо за ваше время и наилучшие пожелания!
Befedo