首页 理论教育深入剖析Linux内核与设备驱动-I2C总线驱动需求

深入剖析Linux内核与设备驱动-I2C总线驱动需求

【摘要】:可以说I2C已经成为嵌入式设备不可或缺的总线形式。嵌入式处理器通常作为I2C总线的主设备,而传感器等外围设备是总线上的从设备。I2C总线数据传输信号规范如图7-2所示。图7-2I2C总线数据传输信号规范从图7-2可见,具体传输是由Start和Stop标记的,并且每传送一个字长都需要有ACK标记。总体上来说,系统对I2C总线驱动的需求就是要能实现总线的各种功能,并且满足以上的各种无关性需求。

I2C(Inter-Integrated Circuit)总线是一种由Philips公司开发的两线式串行总线(分别是时钟信号SCL和数据信号SDA)。如果带有高速扩展,则最高可到3.4MHz。其具有简单高效,总线占用空间小,使用芯片引脚少,互连成本低,可以进行多设备互连等优点,被广泛应用于处理器与外围设备的连接。

由于传感器技术的大力发展,且不需要大量的数据交换,所以I2C总线已被广泛用于处理器连接各种传感器。可以说I2C已经成为嵌入式设备不可或缺的总线形式。

从形式上看I2C是主/从形式总线,在任何时间点上只能有一个主控。嵌入式处理器通常作为I2C总线的主设备,而传感器等外围设备是总线上的从设备。从设备通常有固化的地址,主设备通过地址与从设备通信

I2C总线连接的基本形式如图7-1所示。图7-1引自《DM 3730芯片手册》中第2777页框图。

978-7-111-49426-3-Chapter07-1.jpg

图7-1 I2C总线连接基本形式框图

从图7-1可见,处理器中可以有多个I2C总线控制器,每个总线控制器形成一个单独的I2C总线,一条I2C总线允许连接多个设备,而且设备允许使用不同的接口电压,这些不同接口电压的设备分布要合理。如芯片的IO接口电压是1.8V,所以1.8V的设备要接近芯片,而高电压3.0V接口的设备则通过level shift实现升压后进行连接。(www.chuimin.cn)

总线可以连接各种设备,在物理设备上包含总线控制器以及总线设备。另外系统的硬件连接需要具有灵活性,不同的总线控制器可以连接不同的总线设备,也就是说总线控制器与总线设备要独立,不能够彼此相关。在软件方面也需要具有高度的灵活性,设备信息要与驱动无关,总线控制器的操作方法要与属性无关,还要在软件层面满足总线控制器与总线设备无关。

另外从设备的角度来看,I2C总线设备有具体的功能,而总线是实现功能的媒介,通过总线传输命令、状态信息等。这就需要总线系统提供信息交互的接口及规范,即总线数据传输的信号规范。I2C总线数据传输信号规范如图7-2所示。图7-2引自《DM 3730芯片手册》中第2778页框图。

978-7-111-49426-3-Chapter07-2.jpg

图7-2 I2C总线数据传输信号规范

从图7-2可见,具体传输是由Start和Stop标记的,并且每传送一个字长都需要有ACK标记。通常传输信号的正确性是由物理的控制器来保证的,也可以通过GPIO进行模拟,但是需要软件进行配合。

总体上来说,系统对I2C总线驱动的需求就是要能实现总线的各种功能,并且满足以上的各种无关性需求。