9. 数据传输框架
I2C架构的读写支持两种类型,默认实现的操作是smbus协议,该协议与i2c协议类似,如果控制器不支持smbus,框架层可以用i2c_transfer模拟smbus的实现,系统默认的i2c传输函数一般都是基于i2c模拟的smbus方法传输的,如i2c_smbus_write_byte_data,i2c_smbus_read_byte_data等。
I2C协议的总线实现应该是I2C控制器,而不是SMBUS控制器, I2C协议和SMBUS协议不完成等同,SMBUS是I2C的子集,smbus由I2C衍生而来。smbus总线上传输的数据一定是I2C的格式的,但是SMBUS上传输的数据不一定能满足具体某个I2C从设备的通信要求(数据序列)。
下图以i2c_smbus_write_byte_data介绍数据流程:
10. References
[2]. 《msm7227-I2C设备驱动实现要点.doc》 滕景东