I2C总线控制器的工作原理及EEPROM的Linux驱动程序的设计
I2C (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。笔者在开发基于MPC8250的嵌入式Linux系统的过程中发现I2C总线在嵌入式系统中应用广泛,I2C总线控制器的类型比较多,对系统提供的操作接口差别也很大。与I2C总线相连的从设备主要有微控制器、EEPROM、实时时钟、A/D转换器等.MPC8250处理器正是通过内部的I2C总线控制器来和这些连接在I2C总线上的设备进行数据交换的。由于I2C总线的特性,Linux的I2C总线设备驱动程序的设计者在设计驱动程序时采用了独特的体系结构。使开发I2C总线设备驱动程序与开发一般设备驱动程序的方法具有很大差别。因此,开发I2C总线设备驱动程序除了要涉及一般Linux内核驱动程序的知识外。还要对I2C总线驱动的体系结构有深入的了解。笔者在开发过程中使用设备型号为AT24C01A的EEPROM 来测试I2C总线驱动。
2 工作原理概述
在介绍I2C总线结构之前。要搞清楚两个概念:I2C总线控制器和I2C设备。I2C总线控制器为微控制器或微处理器提供控制I2C总线的接口,它控制所有I2C总线的特殊序列、协议、仲裁、时序,这里指MPC8250提供的I2C总线控制接口。I2C设备是指通过I2C总线与微控制器或微处理器相连的设备,如EEPROM、LCD驱动器等,这里指EEPROM。
在一个串行数据通道中.I2C总线控制器可以配置成主模式或从模式。开发过程中,MPC8250的I2C总线控制器工作在主模式,作为主设备;与总线相连的I2C设备为AT24C01A型EEPROM,作为从设备。主设备和从设备都可以工作于接收和发送状态。总线必须由主设备控制,主设备产生串行时钟控制总线的传输方向,并产生起始和停止条件。
2.1 I2C总线控制器
I2C使用由串行数据线SDA 和串线时钟线SCL组成的两线结构来在外部集成电路与控制器之间交换数据。MPC8250的I2C总线控制器包括发送和接收单元、一个独立的波特率发生器和一个控制单元。发送和接收单元使用相同的时钟信号,如果I2C为主设备。那么时钟信号由I2C的波特率发生器产生;如果I2C为从设备,时钟信号则由外部提供。
SDA和SCL为双向的,通过外部+3.3 V上拉电阻连接至正向电压。当总线处于空闲状态时,SDA和SCL都应是高电平,I2C通常的配置模式如图1所示。
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%