i2c子系统的学习
1.在linux内核中已经有了i2c子系统,用户可以实际使用i2c子系统相关程序做驱动。
2.i2c驱动由下面三大部分组成
2.1 i2c核心程序
i2c核心程序提供了i2c总线驱动和设备驱动的注册和注销方法,i2c通信方法上层的、与具体适配器无关的代码及探测设备、检测设备地址的上层代码等。
2.2 i2c总线驱动
i2c总线驱动是有i2c设配器的软件实现,提供i2c设备器与从设备完成数据通信的能力
i2c总线驱动由i2c_adapter和i2c_algorithm来描述
2.3 i2c客户驱动程序
i2c客户驱动程序是对i2c从设备软件的实现,一个具体的i2c客户驱动包括两个部分,一部分是i2c_driver,用于将设备挂接于i2c总线;另一部分是设备本身的驱动
i2c客户驱动程序由i2c_driver和i2c_client来描述
3.i2c驱动编写有两种办法:
a.一种是利用系统提供的i2c-dev.c来实现一个i2c设配器的设备文件,然后通过在应用层操作i2c 适配器来控制i2c设备;
b.另一种是为i2c设备独立编写一个设备驱动,不需要i2c-dev.c文件