蓝天-彭 发表于 2014-9-25 11:27:35

I2C进阶1

                                驱动框架http://blog.csdn.net/jmq_0000/article/details/7473682
总线驱动http://blog.csdn.net/weiqing1981127/article/details/80107621 I2C子系统1.1 LinuxI2C子系统架构
在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。
http://hi.csdn.net/attachment/201111/16/0_1321444681AG9a.gif
1.2 三大组成部分
1、I2C核心(i2c-core)
I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。
2、I2C总线驱动(I2Cadapter/Algodriver)
I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力。
I2C总线驱动由i2c_adapter和i2c_algorithm来描述
3、I2C客户驱动程序(I2Cclientdriver)
I2C客户驱动是对I2C从设备的软件实现,一个具体的I2C客户驱动包括两个部分:一部分是i2c_driver,用于将设备挂接于i2c总线;另一部分是设备本身的驱动。
I2C客户驱动程序由i2c_driver和i2c_client来描述
1.3 所有的I2C驱动代码位于drivers/i2c目录下
I2c-core.c    实现I2C核心的功能
I2c-dev.c   通用的从设备驱动
Chips       特定的I2C设备驱动
Busses      I2C适配器的驱动
Algos       实现了一些I2C总线适配器的algorithm
1.4 I2C驱动编写的两种方法
从上面的图我们可以看到两种编写驱动方法,一种是利用系统提供的i2c-dev.c来实现一个i2c适配器的设备文件,然后通过在应用层操作I2C适配器来控制I2C设备;另一种是为I2C从设备独立编写一个设备驱动,不需要i2c-dev.c文件。


页: [1]
查看完整版本: I2C进阶1