.
Android I2C
精析
基于
linux
内核开发的
arm
系统,会用到很多
components
。要让这些
components
正常的工作,我们必须了解它们的接口,懂得如何去注册总线,初
始化芯片,
进而让芯片正常的工作。
下面我会介绍在
arm
开发过程中使用最频繁
的一些接口和总线的原理,以及如何在开发的过程中去使用它们。
1 I2C
总线与接口
I2C
总线具有结构简单,使用方便的特点。下面我会描述
linux
下
I2C
驱动的结
构,幷给出
I2C
设备驱动和应用的实现
。
1.1 I2C
总线概述
I
2C(Inter-Integrated Circuit)
总线是由
PHILIPS
公司开发的两线式串行
总线,
用于连接微控制器及外围设备。
是微电子通信控制领域广泛采用的一种总
线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封
装形式小,通信速率较高等优点。
I2C
总线是由数据线
SDA
和时钟
SCL
构成的串行总线,可发送和接收数据,
每个器件都有一个惟一的地址识别。
I2C
规程运用主
/
从双向通讯。器件发送数
据到总线上,
则定义为发送器,
器件接收数据则定义为接收器。
主器件和从器件
都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主
器件产生串行时钟(
SCL
)控制总线的传输方向,并产生起始和停止条件。
SDA
线上的数据状态仅在
SCL
为低电平的期间才能改变,
SCL
为高电平的期间,
SDA
状态的改变被用来表示起始和停止条件。
从理论上说一根
I2C
总线上可以挂载
128
个
I2C
设备,但是通常情况下,由
于有些设备在传输数据时占用的
I2C
总线带宽频繁,
所以我们在一根
I2C
总线上
挂载的设备是越少越好。下面给出
I2C
总线的连线图: