我正在Linux下使用I2C設備,並嘗試使用設備接口,如下面的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
。
但是,當我看到我的範圍,我得到這樣的:
或痘痘更詳細:
但是,這不是我們想要什麼,而不是什麼規格說明, 此外我們得到
S Addr Wr [A] Data P S Addr Wr [A] Data P
有沒有人知道這種行爲或可以形容我? 我試過所有類型的調用IOCTL,SMBUS,write_block_data。 每次在數據字節之間都有一個新的開始條件,地址也會重複出現!
我錯了嗎?
感謝您的時間和最好的問候!
Befedo