linux下i2c体系结构大致可以分为三层:
1,i2c总线驱动层(硬件实现层),该层通过i2c时序控制数据的传输,主要包含i2c适配器数据结构i2c_adapter,i2c适配器的algorithm数据结构。是和i2c控制器直接打交道的一层。
2,i2c核心层,该层次为具体的设备驱动提供注册注销方法,通讯方法,方便具体驱动程序的编写。常用接口如下:
EXPORT_SYMBOL(i2c_add_adapter);
EXPORT_SYMBOL(i2c_del_adapter);
EXPORT_SYMBOL(i2c_del_driver);
EXPORT_SYMBOL(i2c_attach_client);
EXPORT_SYMBOL(i2c_detach_client);
EXPORT_SYMBOL(i2c_transfer);
3,i2c设备驱动层
主要为应用程序提供文件操作接口,例如open,read,write, ioctl等
![372b46bfee04d81a56d3794077b6edb1.png](https://img-blog.csdnimg.cn/img_convert/372b46bfee04d81a56d3794077b6edb1.png)
更详细的分层结构如下图
![d2c9c66c59f06170e739e269b216e1df.png](https://img-blog.csdnimg.cn/img_convert/d2c9c66c59f06170e739e269b216e1df.png)