第536行,master_xfer就是I2C适配器的传输函数,可以通过此函数来完成与IIC设备之间的通信。 第540行,smbus_xfer就是SMBUS总线的传输函数。smbus协议是从I2C协议的基础上发展而来的,他们之间有很大的相似度,SMBus与I2C总线之间在时序特性上存在一些差别,应用于移动PC和桌面PC系统中的低速率通讯。 综上所述,I2C总线...
/* master_xfer should return the number of messages successfully processed, or a negative value on error */ int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, int num); int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr, unsigned short flags, char read_write, ...
第398行,master_xfer就是I2C适配器的传输函数,可以通过此函数来完成与IIC设备之间的通信。第400行,smbus_xfer就是SMBUS总线的传输函数。综上所述,I2C总线驱动,或者说I2C适配器驱动的主要工作就是初始化i2c_adapter结构体变量,然后设置i2c_algorithm中的master_xfer函数。完成以后通过i2c_add_numbered_adapter或i2...
smbus_xfer. If set to NULL, the SMBus protocol is simulated using common I2C messages *//* master_xfer should return the number of messages successfully processed, or a negative value on error */int(*master_xfer)(struct i2c_adapter*adap,struct i2c_msg*msgs,int num);int(*smbus_xfer)(...
struct i2c_algorithm { /* 如果 I2C 适配器算法无法执行 I2C 级别的访问,则应将 master_xfer 设置为 NULL。 如果 I2C 适配器算法可以执行 SMBus 访问,则应设置 smbus_xfer。 如果设置为 NULL,则将使用通用的 I2C 消息来模拟 SMBus 协议 */ /* master_xfer 函数应该返回成功处理的消息数量,或者在出现错误...
.smbus_xfer = i801_access, .functionality = i801_func, }; 基于上面几个原因,所以一般都不会使用i2c-dev。c的read()、write()方法。最常用的是ioctl()方法。ioctl()方法可以实现上面所有的情况(两种数据格式、以及I2C算法和smbus算法)。 针对i2c的算法,需要熟悉struct i2c_rdwr_ioctl_data 、struct i2c...
.smbus_xfer = i801_access, .functionality = i801_func, }; 基于上面几个原因,所以一般都不会使用i2c-dev.c的read()、write() 方法。最常用的是ioctl()方法。ioctl()方法可以实现上面所有的情况(两种数据格式、以及I2C算法和smbus算法)。 针对i2c的算法,需要熟悉struct i2c_rdwr_ioctl_data ...
i2cset的主要功能是通过I2C总线设置设备中某寄存器的值。该命令的常用格式为: i2cset [-f] [-y] [-m mask] [-r] i2cbus chip-address data-address [value] ...[mode] 具体参数的含义如下: 下面是完成向0总线上从地址为0x50的eeprom的0x10寄存器写入0x55,命令为: ...
当 SCL 线拉低后,需要加入延时,便于从机切换 SDA 线输出数据。在 8 次循环结束后,我们就获得了 8bit 数据,把它作为返回值返回,然而按照时序图,作为主机就需要发送应答或者非应答信号,去回复从机。 ⑤、数据传输 在 I2C 总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在 SCL 串行...
i2c_transfer函数最终会调用I2C适配器中i2c_algorithm里面的master_xfer函数,对于I.MX6U而言就是i2c_imx_xfer这个函数。i2c_transfer函数原型如下: int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) 函数参数和返回值含义如下: adap:所使用的I2C适配器,i2c_client会保存其对应的i2c_...