主要的系统调用:open, ioctl: 要理解这些接口,记住一句话:APP通过I2C Controller与I2C Device传输数据。 3.1 i2cdev_open 用来找到adapter 3.2 i2cdev_ioctl: I2C_SLAVE/I2C_SLAVE_FORCE(不管是否有其他I2C驱动程序,强制调用i2cdev操作) 设置设备地址 3.3 i2cdev_ioctl: I2C_RDWR copy_from_user先从用户空间复制数...
(unsigned long __user *)arg); /* i2c read and write */ case I2C_RDWR: return i2cdev_ioctl_rdwr(client, arg); /* smbus read and write */ case I2C_SMBUS: return i2cdev_ioctl_smbus(client, arg); /* 没有收到ack时retry次数 */ case I2C_RETRIES: client->adapter->retries = arg...
ioctl(fd, I2C_RDWR, (unsigned long)&work_queue);或者 ioctl(file,I2C_SMBUS,&args); 进行与i2c设备通信了。 验证i2c应用程序: AI检测 /* //作者:王磊 //日期:2013.11.17 //文件功能:实现ioctl函数调用,并操作i2c设备/dev/i2c/0进行读写数据 //可以用i2c -r来检验数据是否已写入 */ #include<stdio...
#define I2C_RDWR 0x0707 /*Combined R/W transfer (one STOP only) */ #define I2C_PEC 0x0708 /* != 0 to use PEC with SMBus */ #define I2C_SMBUS 0x0720 /*SMBus transfer */ 下面进行一一解释。 1. 设置重试次数 ioctl(fd, I2C_RETRIES,m); 这句话设置适配器收不到ACK时重试的次数为...
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #include <linux/i2c-dev.h> int main() { int file; char *bus = "/dev/i2c-1"; if ((file = open(bus, O_RDWR)) < 0) { perror("Failed to open the bus."); return 1...
include <linux/i2c.h> define CHIP "/dev/i2c-1"define CHIP_ADDR 0x50 int main(){ printf("hello, this is i2c tester\n");int fd = open(CHIP, O_RDWR);if (fd < 0){ printf("open "CHIP"failed\n");goto exit;} if (ioctl(fd, I2C_SLAVE_FORCE, CHIP_ADDR) < 0){ ...
问centos7 i2c-dev.h上不存在i2c_smbus_*函数ENNginx是异步框架的网页服务器,也可以用作反向代理、...
(rdwr_arg.msgs, rdwr_arg.nmsgs * sizeof(struct i2c_msg)); if (IS_ERR(rdwr_pa)) return PTR_ERR(rdwr_pa); return i2cdev_ioctl_rdwr(client, rdwr_arg.nmsgs, rdwr_pa); } case I2C_SMBUS: { struct i2c_smbus_ioctl_data data_arg; if (copy_from_user(&data_arg, (struct...
struct i2c_smbus_ioctl_data data_arg; union i2c_smbus_data temp; struct i2c_msg *rdwr_pa; int i,datasize,res; unsigned long funcs; #ifdef DEBUG printk("i2c-dev.o: i2c-%d ioctl, cmd: 0x%x, arg: %lx.n", MINOR(inode->i_rdev),cmd, arg); ...
读取和接收数据函数i2cdev_ioctl_rdrw(client, arg);如下: 1. static noinline int i2cdev_ioctl_rdrw(struct i2c_client *client, 2. unsigned long arg) 3. { 4. struct i2c_rdwr_ioctl_data rdwr_arg; //包括i2c_msg和它的个数 5. struct i2c_msg *rdwr_pa; ...