课程设计基于I2C协议的EEPROM读写功能实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于I2C协议EEPROM读写功能的实现1目录一.设计要求................................................................2二.设计目的................................................................2三.器件EEPROM的介绍.......................................................21.EEPROM简介...........................................................22.EEPROM24XX系列功能概述...............................................2四.I2C协议的介绍..........................................................31.I2C协议总线特征......................................................32.I2C协议工作原理.....................................................33.I2C协议总线基本状态..................................................34.寻址约定.............................................................5五.EEPROM读写功能实现.....................................................51.写操作...............................................................5(1)字节写操作......................................................6(2)页写入操作......................................................62.确认查询.............................................................73.读操作...............................................................7(1)当前地址的读操作................................................8(2)随机读操作......................................................8(3)连续读操作......................................................9六.具体设计过程...........................................................101.程序流程图..........................................................102.系统组成模块结构及功能..............................................12(1)函数定义.......................................................12(2)主函数main().................................................133.源程序..............................................................14七.设计心得体会...........................................................23八.参考文献...............................................................24基于I2C协议EEPROM读写功能的实现2基于I2C协议的EEPROM读写功能实现一.设计要求1)通过软件基于I2C协议对EEPROM读写功能的实现。2)需要有EEPROM读写功能的具体实现过程。二.设计目的通过设计,了解I2C协议的基本原理,并对EEPROM读写功能的实现有个系统的概念,对其实现过程比较清楚。同时,在设计中,巩固我们所学的理论知识。三.器件EEPROM的介绍1.EEPROM简介EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。EEPROM即电可擦写可编程只读存储器,其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候是可频繁地重编程的,EEPROM的寿命是一个很重要的设计考虑参数。EEPROM的一种特殊形式是闪存,其应用通常是个人电脑中的电压来擦写和重编程。DRAM断电后存在其中的数据会丢失,而EEPROM断电后存在其中的数据不会丢失。另外,EEPROM可以清除存储数据和再编程。2.EEPROM24XX系列功能概述1)每一个24XX器件都支持双向。2)线数据传输协议:如果器件被定义为发送器,则该器件发送数据到总线;如果器件被定义为接收器,则该器件接收来自总线的数据。总线由主器件控制,24XX作为从器件。主器件提供串行时钟(SCL),控制总线访问和产生起始和停止条件。主器件和从器件皆可作为发送器或接收器,但必须由主器件决定采取何种工作模式。基于I2C协议EEPROM读写功能的实现3四.I2C协议的介绍1.I2C协议总线特征总线协议定义如下:•只有在总线空闲时才可启动数据传输。•数据传输期间,在时钟线为高电平时,无论何时,数据线都必须保持稳定。在时钟线为高电平时改变数据线将视为起始或停止条件。I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。2.I2C协议工作原理以启动信号START来掌管总线,以停止信号STOP来释放总线;每次通讯以START开始,以STOP结束;启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R./W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;每个数据字节在传送时都是高位(MSB)在前。3.I2C协议总线基本状态1)总线空闲(A)数据线和时钟线同时为高电平。2)启动数据传输(B)时钟(SCL)为高电平时,SDA从高电平变为低电平表示起始条件产生。起始条件必须先于所有的命令产生。3)停止数据传输(C)时钟(SCL)为高电平时,SDA从低电平变为高电平表示停止条件产生。所有操作都必须以停止条件结束。4)数据传送/数据有效(D)数据线的状态表明数据何时有效。在起始条件之后,数据线在时钟处于高电平期间保基于I2C协议EEPROM读写功能的实现4持稳定。必须在时钟信号为低电平期间改变数据线。一个数据位对应一个时钟脉冲。数据的每次传输以起始条件开始,以停止条件结束。在起始条件和停止条件之间传输的数据字节数目由主器件决定5)确认信号(ACK)每一个被寻址的接收器在接收到每一字节数据后,应发送一个确认位。主器件必须提供一个额外的时钟以传输确认位。在确认时钟脉冲内,器件确认须拉低SDA线。在确认时钟的高电平期间,SDA线以这种方式保持稳定的低电平。当然,还必须考虑建立时间和保持时间。读操作期间,主器件必须发送一个结束信号给从器件,而不是在从器件输出最后一个数据字节之后产生一个确认位。这种情况下,从器件(24XX)将释放数据线为高电平,从而使主器件能够产生停止条件。6)无应答信号(NACK)在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK,NACK有两种用途:a、一般表示接收器未成功接收数据字节;b、当接收器是主控器时,它图1I2C总线在传输数据位时的SDA和SCL的基本状态图2确认时序基于I2C协议EEPROM读写功能的实现5收到最后一个字节后,应发送一个NACK信号,以通知被控发送器结束数据发送,并释放总线,以便主控接收器发送一个停止信号STOP。4.寻址约定1)不带功能性地址输入引脚的器件寻址在起始条件之后,从主器件接收的第一个字节是控制字节。控制字节以4位控制码开始。对于24XX器件,这4位设置为‘1010’以便进行读/写操作。随后的3位为存储块选择位(B2、B1、B0)。主器件用它们来选择将要访问的大小为256字的存储块。实际上,这些位是字地址中3个最高有效位。控制字节的最后一位定义将要进行的操作。设置为‘1’,选择读操作;设置为‘0’,选择写操作。在起始条件发生后,24XX器件始终监视SDA总线。一旦接收到‘1010’码、存储块选择位和R/W位,从器件输出确认信号到SDA总线。在确认信号之后传输地址字节。2)带功能性地址输入引脚的器件寻址在起始条件之后,从主器件接收的第一个字节是控制字节。控制字节以4位控制码开始。在24XX器件,这4位设置为‘1010’以便进行读/写操作。随后的3位为片选位(A2、A1、A0)。片选位的不同组合允许在同一条总线上使用的24XX器件达八个,并用于选择访问哪一个器件。控制寄存器中的片选位必须与相应器件引脚A2、A1和A0上的逻辑电平保持一致。实际上这些位是字地址中3个最高有效位。起始条件发生之后,24XX器件始终监视SDA总线。一旦接收到‘1010’码、器件片选位和R/W位,从器件输出确认信号到SDA总线。在确认信号之后传输地址字节。五.EEPROM读写功能实现1.写操作写数据过程:1)主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;2)发送一个控制字节(包括7位器件地址码和一位R/W);(某些器件的地址字节可能带有其他功能)3)当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);4)主控收到ACK后开始发送第一个数据字节;基于I2C协议EEPROM读写功能的实现65)被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束;6)主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;写数据时序。(1)字节写操作字节写操作以来自于主器件的起始位开始,4位控制码紧随其后(图3)。接下来的3位是存储块寻址位(不带地址输入引脚的器件)或片选位(带地址输入引脚的器件)。然后主发送器将R/W位(该位为逻辑低电平)发送到总线。从器件在第九个时钟周期产生一个确认位,主器件发送的第二个字节是地址字节或高位地址字节。24XX器件会对每一个地址字节作出确认,并把地址位锁存进器件内部的地址计数器。对于24XX00器件,只使用地址字节的低4位。高4位可为任意值。送出最后一个地址字节后,24XX器件发出确认信号ACK。主器件在接收到该确认信号后即发送数据字,该数据字将被写入已寻址的存储器位置。24XX器件再次发出确认信号,之后主器件产生停

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功