ioctl(fd, I2C_TIMEOUT, 2); //timeout ioctl(fd, I2C_RETRIES, 1); //try count //write data to i2c-1 i2c_queue.nmsgs = 1; (i2c_queue.msgs[0]).addr = 0x36; (work_qurue.msgs[0]).len = 3; (i2c_queue.msgs[1]).flags = 0; (i2c_queue.msgs[0]).buf = buf; //(unsigne...
timeout: 超时时间(以jiffies为单位)。 retries: 重试次数。 dev: 适配器设备。 nr: 适配器编号。 name: 适配器名称。 /* * i2c_adapter is the structure used to identify a physical i2c bus along * with the access algorithms necessary to access it. */ struct i2c_adapter { struct module *owner...
00000450 case I2C_TIMEOUT: 00000451 /* For historical reasons, user-space sets the timeout 00000452 * value in units of 10 ms. 00000453 */ 00000454 client->adapter->timeout = msecs_to_jiffies(arg * 10); 00000455 break; 00000456 default: 00000457 /* NOTE: returning a fault code here co...
ioctl(fd, I2C_TIMEOUT, 2); //timeout ioctl(fd, I2C_RETRIES, 1); //try count //write data to i2c-1 i2c_queue.nmsgs = 1; (i2c_queue.msgs[0]).addr = 0x36; (work_qurue.msgs[0]).len = 3; (i2c_queue.msgs[1]).flags = 0; (i2c_queue.msgs[0]).buf = buf; //(unsigne...
1、利用i2c-dev.c操作适配器,进而控制i2c设备 i2c-dev.c并没有针对特定的设备而设计,只是提供了通用的read()、write()和ioctl()等接口,应用层可以借用这些接口访问挂接在适配器上的i2c设备的存储空间或寄存器,并控制I2C设备的工作方式。 需要特别注意的是:i2c-dev.c的read()、write()方法都只适合于如下方式的...
static int __init i2c_dev_init(void) { int res; printk(KERN_INFO "i2c /dev entries driver\n"); res = register_chrdev(I2C_MAJOR, "i2c", &i2cdev_fops); if (res) goto out; i2c_dev_class = class_create(THIS_MODULE, "i2c-dev"); ...
一般I2C timeout 的原因主要有 : device端本身就没有回ACK,表现为I2C_ACKERR,大多是slave(从设备)问题,从设备上电是否符合SPEC等; 另外一种就是问题出在在master端(我们的CPU),表现为I2C_TIMEOUT。 在I2C bus没有上电的情况下去操作I2C 可通过外挂 Codec 提供的模块寄存器调试节点,实时操作节点来读写外挂 Cod...
static const struct i2c_algorithm s3c24xx_i2c_algorithm = { .master_xfer = s3c24xx_i2c_xfer, .functionality = s3c24xx_i2c_func, }; 另外一方面需要确定为了实现对AT24C02 e2prom的操作,需要确定AT24C02的地址及读写访问时序。 ● AT24C02地址的确定 ...
I2C_DATA_NACK = } I2C_STATUS_FLAG; /*定义I2C数据传输缓冲区大小和传输超时大小*/ #define I2C_BUFSIZE 0x200 #define I2C_TIMEOUT 0x00FFFFFF /*定义I2C当前状态标志*/ volatile I2C_STATUS_FLAG I2C_Flag; /*I2C当前的模式,0为主发送器模式,1为主接收器模式*/ ...
1. static int __init i2c_dev_init(void) 2. { 3. int res; 4. printk(KERN_INFO "i2c /dev entries driver\n"); 5. res = register_chrdev(I2C_MAJOR, "i2c", &i2cdev_fops); 6. if (res) 7. goto out; 8. i2c_dev_class = class_create(THIS_MODULE, "i2c-dev"); ...