I2C总线接口电路设计..

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA与I2C总线器件接口电路设计

利用FPGA模拟I2C总线协议对I2C总线接口器件AT24C256 进行读写操作。利用按键输入读写命令和相应的地址、数据,对芯片进行读写操作,读写的数据用数码管显示。

一、I2C总线接口电路设计分析

1. I2C 总线协议

I2C 总线的两根通信线,一根是串行数据线SDA,另一根是串行时钟线SCL。多个符合I2C总线标准的器件都可以通过同一条I2C总线进行通信,而不需要额外的地址译码器。每个连接到总线上的器件都有一个唯一的地址作为识别的标志,都可以发送或接收数据。I2C 总线通信速率受主机控制,标准模式下可达100kbit/s。

一般具有I2C总线的器件其SDA、SCL引脚都为集电极(或漏极)开路结构。因此实际使用时,SDA 和SCL信号线必须加3~10K的上拉电阻。总线空闲时均保持高平。I2C总线接法如图1所示。

图1 I2C总线连接示意图

(1) I2C的主机和从机,发送器和接收器

产生I2C总线时钟信号和起始、停止控制信号的器件,称为主机,被主机寻址的器件称为从机。

任何将数据传送到I2C总线的器件称为发送器,任何从I2C总线接收数据的器件称为接收器。

主机和从机都可作为发送数据器件和接收数据器件。

(2) I2C 总线上数据的有效性:

时钟线SCL为高电平时,数据线SDA的任何电平变化将被看作总线的起始或停止信号;

在数据传送过程中,当时钟线SCL为高电平时,数据线SDA必须保持稳定状态,不允许有跳变;数据线SDA的状态只能在SCL低电平期间才能改变。即进行串行传送数据时,在SCL高电平期间传送位数据,低电平期间准备数据。

(3) 从机地址

I2C总线不需要额外的片选信号或地址译码。多个I2C总线接口器件可连接到一条I2C总线上,它们之间通过地址来区分。主机是主控制器件,只有一个主机的不需要地址。其它器件均为从机,均有器件地址,但必须保证同一条I2C总线上的器件地址不能重复。一般从机地址由7位地址位和1位读写位组成,地址位为高7位,读写位为最低位。读写位为0时,表示主机将向从机写入数据;读写位为1时,表示主机将要从从机读取数据。

(4) I2C 总线的通信时序

I 2C 总线的通信时序如图2所示。

图2 I2C 总线的通信时序

① 首先主机发送一个起始信号。当时钟线SCL 处于高电平期间,数据线SDA 电平从高到低的跳变形成I 2C 总线的起始信号,启动I 2C 总线。

② 主机逐位发送7位(高位在前,低位在后)从机地址和1位读写控制信号,共8位。需8个时钟。

③ 与传送地址一致的从机发应答信号(ACK )。在第9个时钟周期时将SDA 线拉低表示其已收到一个8位数据。若在第9个时钟周期,SDA 为高电平时为非应答。

④ 开始传送数据,传送数据数量不限。每个字节(8位)后紧跟1个接收器件发出的应答位。若是主机读取从机数据时,从机发送数据,主机发应答位;若是主机写数据到从机时,主机发送数据,从机发应答位。

⑤ 数据传输结束时,主机发送1个停止信号,当时钟线SCL 为高电平时,数据线SDA 由低电平变为高电平时形成终止信号,停止I 2C 总线通信。

(5) 数据传输基本格式如表1。

表1 I2C 总线数据传输基本格式

其中S 、A7~A1、R/W 、P 总是由主机产生;写数据时,ACK 由从机产生,D7~D0由主机产生;读数据时,ACK 由主机产生,D7~D0由从机产生。 2. I2C 总线器件AT24C256

AT24C256 是一个256K 位的串行CMOS 型 E 2PROM , 可存储32768 个字节。该器件通过I 2C 总线接口进行操作,其引脚如图3所示,各引脚功能见表2。

图3 AT24C256引脚图 表

2 AT24C256引脚功能说明

SDA

S 起始 条件

停止 条件

总线 暂停 控制

SCL AT24C256 串行时钟输入管脚。用于产生器件所有数据发送或接收的时钟,是输入管脚。

SDA 双向串行数据/地址管脚。用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或wire-OR。

WP 写保护。当WP 脚连接到Vcc ,所有内存变成写保护只能读;当WP 引脚连接到Vss 或悬空,允许器件进行读/写操作。

A0 A1 器件地址输入。这些管脚为硬连线或者不连接,对于单总线系统最多可寻址 4 个AT24C256器件。当这些引脚没有连接时其默认值为0。

VSS 电源地

VCC 1.8~6V

NC 空脚

作为带有I2C总线接口的器件,每个AT24C256都有一个7位的从机地址,其高5 位固定为“10100”,接下来的2 位由AT24C256的引脚A1 A0 硬连线输入决定(A1、A0直接接电源VCC或GND),同一I2C总线上最多可以连接4 个A T24C256器件。AT24C256除了有作为从机的地址,其内部还有作为存储单元的编码子地址,其子地址为双字节(16位),从0000H~7FFFH。本设计中只有1 个AT24C256,可将AT24C256的引脚A1、A0直接接地,其硬件电路如图4所示。则该AT24C256作为从机的7位地址为“1010000”。

图4 单个AT24C256连接电路图

3. 对AT24C256的读写过程

(1) 向A T24C256某一存储单元写入1个字节数据,过程如下:

①主机(这里为FPGA控制器)发送一个起始信号,启动发送过程;

②主机发送7 位从机地址(这里为1010000)和1位写控制位(为0);

③从机(这里为AT24C256)发应答位。在主机发送起始信号和从机地址字节后,AT24C256 监视总线并当其地址与发送的从地址相符时,响应一个应答信号。在第9个时钟,将SDA 线拉为低电平;

④主机接收到应答位后,发从机子地址高8位(为AT24C256某一存储单元地址)。

⑤从机接收完高8位子地址后,发应答位;

⑥主机接收到应答位后,发从机子地址低8位;

⑦从机接收完低8位子地址后,发应答位;

⑧主机接收到应答位后,发送待8位写入数据;

⑨从机接收完8数据后,发应答位,并开始内部数据的擦写;

⑩主机接收到应答位后,发停止位,结束传送,总线挂起。

SDA上数据传输格式见表3,数据传送时序如图5所示。

表3 向AT24C256写1个数据时总线SDA上数据传输格式

S A7~A1 0 0 AD15~AD8 0 AD7~AD0 0 D7~D0 0/1 P

相关文档
最新文档