你的位置:大电流电感 > 交流中心

Linux环境下基于I2C总线的EEPROM 驱动程序

2020-03-25 08:55:37      点击:
上一篇:基于VxWorks的NAND FLASH驱动程序设计

2.1 I2C总线控制器

I2C使用由串行数据线SDA 和串线时钟线SCL组成的两线结构来在外部集成电路与控制器之间交换数据。MPC8250的I2C总线控制器包括发送和接收单元、一个独立的波特率发生器和一个控制单元。发送和接收单元使用相同的时钟信号,如果I2C为主设备.那么时钟信号由I2C的波特率发生器产生;如果I2C为从设备,时钟信号则由外部提供。

SDA和SCL为双向的,通过外部+3.3 V上拉电阻连接至正向电压。当总线处于空闲状态时,SDA和SCL都应是高电平,I2C通常的配置模式如图1所示。

1.jpg

图1 I2C配置模式

I2C的接收和发送单元均为双缓存,在数据发送时,数据从发送数据寄存器到移位寄存器,以时钟速率输出到SDA线;在数据接收时,数据从SDA线进入移位寄存器,然后进入接收寄存器。

2.2 I2C总线控制器和EEPROM 的基本操作

I2C总线在传送数据过程中共有3种类型的信号,分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA 由高电平向低电平跳变,开始传送数据;

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,传送数据结束;

应答信号:接收数据的设备在接收到一个字节数据后, 向发送数据的设备发出特定的低电平脉冲.表示已收到数据。

当MPC8250的I2C总线空闲时,其SDA和SCL均为高电平,主设备通过发送一个开始信号启动发送过程。这个信号的时序要求是当SCL为高时,SDA出现一个由高到低的电平跳变。在起始条件之后.必须是从设备的地址字节,其中高4位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着3位为片选,最后1位为读写位,当为1时为读操作,为0时为写操作,如图2所示。