I2C总线接口电路设计.docx

上传人:b****2 文档编号:1615486 上传时间:2022-10-23 格式:DOCX 页数:35 大小:71.67KB
下载 相关 举报
I2C总线接口电路设计.docx_第1页
第1页 / 共35页
I2C总线接口电路设计.docx_第2页
第2页 / 共35页
I2C总线接口电路设计.docx_第3页
第3页 / 共35页
I2C总线接口电路设计.docx_第4页
第4页 / 共35页
I2C总线接口电路设计.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

I2C总线接口电路设计.docx

《I2C总线接口电路设计.docx》由会员分享,可在线阅读,更多相关《I2C总线接口电路设计.docx(35页珍藏版)》请在冰豆网上搜索。

I2C总线接口电路设计.docx

I2C总线接口电路设计

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所示。

主机

SDASCL

从机1

SDASCL

从机2

SDASCL

从机n

SDA

VCC

SCL

图1I2C总线连接示意图

(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总线的通信时序

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

SDA

SCL

S

起始

条件

P

停止

条件

ACK

应答

ACK

应答

总线

暂停

控制

停止

条件

1

2

1

7

8

9

2

图2I2C总线的通信时序

①首先主机发送一个起始信号。

当时钟线SCL处于高电平期间,数据线SDA电平从高到低的跳变形成I2C总线的起始信号,启动I2C总线。

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

需8个时钟。

③与传送地址一致的从机发应答信号(ACK)。

在第9个时钟周期时将SDA线拉低表示其已收到一个8位数据。

若在第9个时钟周期,SDA为高电平时为非应答。

④开始传送数据,传送数据数量不限。

每个字节(8位)后紧跟1个接收器件发出的应答位。

若是主机读取从机数据时,从机发送数据,主机发应答位;若是主机写数据到从机时,主机发送数据,从机发应答位。

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

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

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

S

A7~A1

R/W

ACK

D7~D0

ACK

D7~D0

ASK

P

起始位

7位

地址

0:

1:

8位

数据

应答位

8位

数据

应答位

0:

应答

1:

非应答

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

2.I2C总线器件AT24C256

AT24C256是一个256K位的串行CMOS型E2PROM,可存储32768个字节。

该器件通过I2C总线接口进行操作,其引脚如图3所示,各引脚功能见表2。

图3AT24C256引脚图

表2AT24C256引脚功能说明

管脚名称

功能说明

SCL

AT24C256串行时钟输入管脚。

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

SDA

双向串行数据/地址管脚。

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

WP

写保护。

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

A0A1

器件地址输入。

这些管脚为硬连线或者不连接,对于单总线系统最多可寻址4个AT24C256器件。

当这些引脚没有连接时其默认值为0。

VSS

电源地

VCC

1.8~6V

NC

空脚

作为带有I2C总线接口的器件,每个AT24C256都有一个7位的从机地址,其高5位固定为“10100”,接下来的2位由AT24C256的引脚A1A0硬连线输入决定(A1、A0直接接电源VCC或GND),同一I2C总线上最多可以连接4个AT24C256器件。

AT24C256除了有作为从机的地址,其内部还有作为存储单元的编码子地址,其子地址为双字节(16位),从0000H~7FFFH。

本设计中只有1个AT24C256,可将AT24C256的引脚A1、A0直接接地,其硬件电路如图4所示。

则该AT24C256作为从机的7位地址为“1010000”。

图4单个AT24C256连接电路图

3.对AT24C256的读写过程

(1)向AT24C256某一存储单元写入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

起始位

7位

器件

地址

高8位

指针

地址

低8位

指针

地址

写入

8位

数据

主机发送

从机

发送

主机发送

从机发送

主机发送

从机发送

主机发送

从机发送

主机发送

图5向AT24C256写一个数据时序

(2)从AT24C256某一存储单元读出1个字节数据,过程如下:

①主机发送一个起始信号,启动发送过程,接着发送7位从机地址(1010000)和1位写控制位(0);;

②从机检测到起始信号及本身从地址相符时的从机地址后,发应答位。

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

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

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

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

⑦主机接收到应答位后,再发送一个起始信号(称为重复起始信号),接着再发送7位从机地址(1010000)和1位读控制位(为1);

⑧从机检测到重复起始信号及从机地址后,发应答位,并将子地址对应的存储单元数据发送到总线上。

⑨主机接收到应答位后,接着准备从总线接收数据,从总线接收完8数据后。

发非应答位和发停止位,结束传送,总线挂起。

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

表4从AT24C256上读1个数据时总线SDA上数据传输格式

S

A7

~

A1

0

0

AD15

~

AD8

0

AD7

~

AD0

0

Sr

A7

~

A1

1

0

D7

~

D0

0/1

P

7位

器件

地址

高8位

指针

地址

低8位

指针

地址

重复

起始

7位

器件

地址

读出

8位

数据

主机

发送

主机发送

图6从AT24C256读一个数据时序

4.FPGA内部电路

模拟I2C总线对AT24C256的读写控制电路基本结构框图如图7所示。

AT24C256

读写

控制

接口

字节传输控制电路

传输控制电路

IO

总线端口

电路

Scl

Sda

命令寄存器

传送寄存器

接收寄存器

移位寄存器

标志寄存器

图7模拟I2C总线对AT24C256的读写控制框图

(1)I2C总线端口

I2C总线端口为三态输出,当使能端有效时,总线输出为低电平;当使能端无效时三态门输出为高阻,但由于I2C总线上有上拉电阻,总线保持在高电平或由总线上从机输出数据决定。

总线数据始终能被读入。

其结构示意图如图8所示。

Sda

Sda_en

Sda_i

Vcc

Scl

Scl_en

Scl_i

Vcc

图8I2C总线端口示意图

(2)位传输控制模块

位传输模块以“位”为单位产生各种I2C协议命令(开始、停止和重复开始)以及进行位数据读写。

为了读写到稳定的“位”数据,读写1位数据分为4到5个阶段完成。

1位数据传输时序要求如图9所示。

这样内部读写时钟频率一般采用5倍于SCL时钟总线频率。

SCL

SDA

SCL

SDA

SCL

SDA

SCL

SDA

SCL

SDA

开始

重复开始

停止

A

B

C

图9I2C协议命令和位数据传输的执行时序

位传输控制电路根据输入的控制命令,将来自字控制模块的一位待写入的数据送到总线上,或从总线上读入一位数据给字控制模块。

当完成1位数据传输时产生读写完成标志,并根据数据传输情况产生忙标志和总线仲裁丢失标志。

(3)字传输控制模块

字节传输模块以字节为单位控制I2C总线的数据传输。

该模块根据输入控制命令,将存放在发送寄存器中的数据加载到一个移位寄存器,然后逐位发送到位传输模块,再控制位传输模块将数据发送到I2C总线上。

或控制位传输模块从总线上逐位接收位数据,暂存到移位寄存器,再转换成字节数据送给数据输出。

同时给

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1