参考:https://blog.csdn.net/W1107101310/article/details/79871029
iic总线框架:
IIC设备分为三层,分别是:iic核心层core iic总线层(也叫控制器层) iic设备层
i2c总线驱动层:
该层在通信中起主机的作用通过该层对下面的从机进行开始,结束,应答等相关的控制。而该层要根据不同的SOC(片上系统)有不同的总线驱动,而这些SOC的驱动由各个生产厂家提供。而在本文中我们所用到的是i2c-s3c2410.c(drivers\i2c\busses)该文件专门为S3C2410所提供(而因为我们的S3C2440与S3C2410十分相似,而可以直接使用)。在该层中,我们主要做的是:
1. 填充i2c的适配器(adapter),并将其使用i2c核心层的函数注册。
2. 做片上系统上与i2c主机相关的初始化。
3. 将该适配器通过i2c总线核心层的函数注册到内核中。
i2c核心层:
该层在整个i2c驱动框架中起到了中间层的作用,通过该层连接i2c总线驱动层和i2c设备驱动层。而在该层中所有的操作是与芯片或者说与设备无关的,所以在该层中的文件是不用改动的我们直接使用就好。而他主要提供的功能为:
1. 为i2c总线驱动层提供注册函数,使适配器注册到内核中的适配器链表中
2. 使用i2c_probe实现主机对从机检测,检测存在调用处理函数
3. 使用i2c_transfer函数实现,驱动程序中实现主从数据传输
4. 使用i2c_register_driver实现将i2c设备驱动层注册到内核中
i2c设备驱动层:
该层在通信中起从机作用,而该层也是我们要自己根据不同的i2c从机设备所写层。而在本文中我们使用的是AT24C08芯片所以我们主要写与其相关的设置。而在该层中我们的主要工作是:
i2c设备驱动层:(重点关注)
该层在通信中起从机作用,而该层也是我们要自己根据不同的i2c从机设备所写层。而在本文中我们使用的是AT24C08芯片所以我们主要写与其相关的设置。而在该层中我们的主要工作是:
1. 实现主机对从机的检测
2. 检测到后注册i2c_client结构体,并做相应的设置,
3. 实现i2c从机通信相关的设置
4. 使用i2c总线核心层的函数将自己添加到内核驱动链表中