Linux I2C-Dev IOCTL-Call产生错误消息

时间:2015-06-12 13:37:52

标签: linux i2c ioctl

我正在使用Linux下的I2C设备,并尝试使用如下Link所述的设备界面。

因此,如果我们假设以下代码:

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 here enter image description here

但这不是我们想要的,而不是规范所说的, 而且我们得到了

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

有人知道这种行为还是可以向我描述一下? 我尝试了所有类型的调用IOCTL,SMBUS,write_block_data。 每次数据字节之间都有一个新的启动条件,地址也会重复!

我出错了吗?

感谢您的时间和最好的问候!

Befedo

1 个答案:

答案 0 :(得分:0)

我发现了错位...

我的硬件设置如下:

Notebook -> DP/VGA -> I2C-Slave

我使用的笔记本只有一个DisplayPort输出,通过DP-to-VGA适配器转换它,并使用了I2C接口,其中连接了一个简单的Slave。

看起来DP-to-VGA适配器只能用于Bytewide-Access到I2C-Bus,因此我设置了一台“新”笔记本电脑,它集成了VGA接口并直接使用它......

enter image description here

这导致完全一致的转移,就像预期的那样。