2015-06-12 27 views
1

我正在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

像它做 here方式

但是,當我看到我的範圍,我得到這樣的: message complete

或痘痘更詳細:

enter image description hereenter image description here

但是,這不是我們想要什麼,而不是什麼規格說明, 此外我們得到

S Addr Wr [A] Data P S Addr Wr [A] Data P

有沒有人知道這種行爲或可以形容我? 我試過所有類型的調用IOCTL,SMBUS,write_block_data。 每次在數據字節之間都有一個新的開始條件,地址也會重複出現!

我錯了嗎?

感謝您的時間和最好的問候!

Befedo

回答

0

我發現不對...

我的硬件成立這樣的:

Notebook -> DP/VGA -> I2C-Slave 

我使用的筆記本電腦只得到了一個DisplayPort輸出,通過這種轉換DP-to-VGA適配器,並使用連接簡單從機的I2C接口。

看起來DP-to-VGA適配器只能用於I2C總線的Bytewide-Access,所以我建立了一個集成了VGA接口並直接使用它的'新'筆記本電腦。 。

enter image description here

這會導致完全對齊轉移,就像是期待。