I2C总线接口电路设计

上传人:夏** 文档编号:559708079 上传时间:2023-01-01 格式:DOC 页数:23 大小:562KB
返回 下载 相关 举报
I2C总线接口电路设计_第1页
第1页 / 共23页
I2C总线接口电路设计_第2页
第2页 / 共23页
I2C总线接口电路设计_第3页
第3页 / 共23页
I2C总线接口电路设计_第4页
第4页 / 共23页
I2C总线接口电路设计_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《I2C总线接口电路设计》由会员分享,可在线阅读,更多相关《I2C总线接口电路设计(23页珍藏版)》请在金锄头文库上搜索。

1、FPGA与12C总线器件接口电路设计利用FPGA模拟I2C总线协议对I2C总线接口器件AT24C256进行读写操作。利用按键输入读写命令和相应的地址、数据,对芯片进行读写操作,读写的数据用数码管显示。一、I2C总线接口电路设计分析1.I2C总线协议I2C总线的两根通信线,一根是串行数据线SDA,另一根是串行时钟线SCL。多个符合I2C总线标准的器件都可以通过同一条I2C总线进行通信,而不需要额外的地址译码器。每个连接到总线上的器件都有一个唯一的地址作为识别的标志,都可以发送或接收数据。I2C总线通信速率受主机控制,标准模式下可达100kbit/s。一般具有I2C总线的器件其SDA、SCL引脚都

2、为集电极(或漏极)开路结构。因此实际使用时,SDA和SCL信号线必须加310K的上拉电阻。总线空闲时均保持高平。I2C总线接法如图1所示。图1I2C总线连接示意图(1) I2C的主机和从机,发送器和接收器产生I2C总线时钟信号和起始、停止控制信号的器件,称为主机,被主机寻址的器件称为从机。任何将数据传送到I2C总线的器件称为发送器,任何从I2C总线接收数据的器件称为接收器。主机和从机都可作为发送数据器件和接收数据器件。(2) I2C总线上数据的有效性:时钟线SCL为高电平时,数据线SDA的任何电平变化将被看作总线的起始或停止信号;在数据传送过程中,当时钟线SCL为高电平时,数据线SDA必须保持

3、稳定状态,不允许有跳变;数据线SDA的状态只能在SCL低电平期间才能改变。即进行串行传送数据时,在SCL高电平期间传送位数据,低电平期间准备数据。(3) 从机地址I2C总线不需要额外的片选信号或地址译码。多个I2C总线接口器件可连接到一条I2C总线上,它们之间通过地址来区分。主机是主控制器件,只有一个主机的不需要地址。其它器件均为从机,均有器件地址,但必须保证同一条I2C总线上的器件地址不能重复。一般从机地址由7位地址位和1位读写位组成,地址位为高7位,读写位为最低位。读写位为0时,表示主机将向从机写入数据;读写位为1时,表示主机将要从从机读取数据。(4) I2C总线的通信时序I2C总线的通信

4、时序如图2所示。图2I2C总线的通信时序 首先主机发送一个起始信号。当时钟线SCL处于高电平期间,数据线SDA电平从高到低的跳变形成I2C总线的起始信号,启动I2C总线。 主机逐位发送7位(高位在前,低位在后)从机地址和1位读写控制信号,共8位。需8个时钟。 与传送地址一致的从机发应答信号(ACK)。在第9个时钟周期时将SDA线拉低表示其已收到一个8位数据。若在第9个时钟周期,SDA为高电平时为非应答。 开始传送数据,传送数据数量不限。每个字节(8位)后紧跟1个接收器件发出的应答位。若是主机读取从机数据时,从机发送数据,主机发应答位;若是主机写数据到从机时,主机发送数据,从机发应答位。 数据传

5、输结束时,主机发送1个停止信号,当时钟线SCL为高电平时,数据线SDA由低电平变为高电平时形成终止信号,停止I2C总线通信。(5)数据传输基本格式如表1。表1I2C总线数据传输基本格式SA7A1R/WACKD7D0ACKD7D0ASKP起始位7位地址0:写1:读应答位8位数据应答位8位数据应答位0:应答1:非应答停止位其中S、A7A1、R/W、P总是由主机产生;写数据时,ACK由从机产生,D7D0由主机产生;读数据时,ACK由主机产生,D7D0由从机产生。2.I2C总线器件AT24C256AT24C256是一个256K位的串行CMOS型E2PROM,可存储32768个字节。该器件通过I2C总线

6、接口进行操作,其引脚如图3所示,各引脚功能见表2。VCCWF*SCLSDA图3AT24C256引脚图表2AT24C256引脚功能说明管脚名称功能说明SCLAT24C256串行时钟输入管脚。用于产生器件所有数据发送或接收的时钟,是输入管脚。双向串行数据/地址管脚。用于器件所有数据的发送或接收,SDA是一个开漏输出管脚SDA可与其它开漏输出或集电极开路输出进行线或wire-OR。WP写保护。当WP脚连接到Vcc,所有内存变成写保护只能读;当WP引脚连接到Vss或悬空,允许器件进行读/写操作。A0A1器件地址输入。这些管脚为硬连线或者不连接,对于单总线系统最多可寻址4个AT24C256器件。当这些引

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

8、0”。7CC33104区4riEd10k10kU?SDASCIVDPADAlA2SDA.mSCLVSSA.T24C256图4单个AT24C256连接电路图3.对AT24C256的读写过程(1)向AT24C256某一存储单元写入1个字节数据,过程如下: 主机(这里为FPGA控制器)发送一个起始信号,启动发送过程; 主机发送7位从机地址(这里为1010000)和1位写控制位(为0); 从机(这里为AT24C256)发应答位。在主机发送起始信号和从机地址字节后,AT24C256监视总线并当其地址与发送的从地址相符时,响应一个应答信号。在第9个时钟,将SDA线拉为低电平; 主机接收到应答位后,发从机子

9、地址高8位(为AT24C256某一存储单元地址)。 从机接收完高8位子地址后,发应答位; 主机接收到应答位后,发从机子地址低8位; 从机接收完低8位子地址后,发应答位; 主机接收到应答位后,发送待8位写入数据; 从机接收完8数据后,发应答位,并开始内部数据的擦写; 主机接收到应答位后,发停止位,结束传送,总线挂起。SDA上数据传输格式见表3,数据传送时序如图5所示。表3向AT24C256写1个数据时总线SDA上数据传输格式SA7A100AD15AD80AD7-AD00D7D00/1P起7位写应高8位应低8位应写入应停始器件答指针答指针答8位答止位地址位地址位地址位数据位位主机发送从主机发送从主

10、机发送从主机发送从机主机机机发送机发发发发送送送送图5向AT24C256写一个数据时序(2)从AT24C256某一存储单元读出1个字节数据,过程如下: 主机发送一个起始信号,启动发送过程,接着发送7位从机地址(1010000)和1位写控制位(0); 从机检测到起始信号及本身从地址相符时的从机地址后,发应答位。 主机接收到应答位后,发从机子地址高8位(为AT24C256某一存储单元地址)。 从机接收完高8位子地址后,发应答位; 主机接收到应答位后,发从机子地址低8位; 从机接收完低8位子地址后,发应答位; 主机接收到应答位后,再发送一个起始信号(称为重复起始信号),接着再发送7位从机地址(101

11、0000)和1位读控制位(为1); 从机检测到重复起始信号及从机地址后,发应答位,并将子地址对应的存储单元数据发送到总线上。 主机接收到应答位后,接着准备从总线接收数据,从总线接收完8数据后。发非应答位和发停止位,结束传送,总线挂起。BUSACTIVITY:masterSDA上数据传输格式见表4所示,数据传送时序如图6所示。SA7A100AD15AD80AD7AD00SrA7A110D7D00/1P起7位应高8位应低8位应重复7位应读出非停始器件写答指针答指针答起始器件读答8位应止位地址位地址位地址位位地址位数据答位从主从主从从从主主主机机机机机机主机发送机机机机发送发发发发发发发发发送送送送

12、送送送送送BYTEADDRESSA15-ABAy-AflAATASLAVERADDRESSTA表4从AT24C256上读1个数据时总线SDA上数据传输格式lJ_hdF丽1口:丨丨:;:;:闭口1口1【图6从AT24C256读一个数据时序4.FPGA内部电路图7模拟12C总线对AT24C256的读写控制框图(1)I2C总线端口I2C总线端口为三态输出,当使能端有效时,总线输出为低电平;当使能端无效时三态门输出为高阻,但由于I2C总线上有上拉电阻,总线保持在高电平或由总线上从机输出数据决定。总线数据始终能被读入。其结构示意图如图8所示。VccSda_enSdaVccScl_enIScl_vScl图

13、8I2C总线端口示意图(2)位传输控制模块位传输模块以“位”为单位产生各种I2C协议命令(开始、停止和重复开始)以及进行位数据读写。为了读写到稳定的“位”数据,读写1位数据分为4到5个阶段完成。1位数据传输时序要求如图9所示。这样内部读写时钟频率一般采用5倍于SCL时钟总线频率。开始SCLSDASCL重复开始SDASCL停止SDASCL写SDASCL读SDA图9I2C协议命令和位数据传输的执行时序位传输控制电路根据输入的控制命令,将来自字控制模块的一位待写入的数据送到总线上,或从总线上读入一位数据给字控制模块。当完成1位数据传输时产生读写完成标志,并根据数据传输情况产生忙标志和总线仲裁丢失标志。(3)字传输控制模块字节传输模块以字节为单位控制I2C总线的数据传输。该模块根据输入控制命令,将存放在发送寄存器中的数据加载到一个移位寄存器,然后逐位发送到位传输模块,再控制位传输模块将数据发送到I2C总线上。或控制位传输模块从总线上逐位接收位数据,暂存到移位寄存器,再转换成字节数据送给数据输出。同时给出相关传输标志。AT24C256读写控制根据输入控制信号和来自位传输模块的反馈标志,将控制信号加到命令寄存器,给字节传输模块提供控制信号;将输入数据或指定单元地址加载到数据传送寄存器;将从字节模块读取的数据回送

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号