打开i2c设备后对其进行多次ioctl系统调用

打开i2c设备后对其进行多次ioctl系统调用

 i2c设备在main函数中打开,且在其中也用了两次ioctl,用来设置超时与重复次数的,这没问题;后面都是同文件其它函数中调用的,当然,fd是一样的,因为把它设置为全局变量了,前几次系统调用都没问题,后面就出现了“No such device or address”提示,这是什么原因呢?
    而且我需要在不同函数中分别使用ioctl来发送类似于i2c驱动中struct i2c_msg结构体的数据,该怎么做呢?

这种事情是不会发生的
再仔细检查你出错时的fd
或者strace跟一下

我希望用i2c-dev.c注册生成的/dev/i2c/0,进行i2c控制,对MPU6050设备的配置寄存器进行操作,得出加速度寄存器中的加速度值。
我把main中声明的struct i2c_rdwr_ioctl_data e2prom_data;(更名为mpu6050_data)作为全局变量了,然后填充结构体的读写部分也分别放到两个函数里。
ioctl调用在 
ioctl(fd,I2C_TIMEOUT,1);/*超时时间*/     (返回值是0)
ioctl(fd,I2C_RETRIES,2);/*重复次数*/      (返回值是0)
里是没问题的,接着在对一个寄存器进行配置的写后的ioctl也没问题(返回值是1),但接些来马上读写的值就出现问题了,ioctl调用返回值是-1了
[img=http://][/img]

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有