EEPROM存储器与应用_第1页
EEPROM存储器与应用_第2页
EEPROM存储器与应用_第3页
EEPROM存储器与应用_第4页
EEPROM存储器与应用_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附录 B 串行EEPROM存储器及应用 附录附录B B 串行串行EEPROMEEPROM存储器及应用存储器及应用 一、二线制一、二线制I2C总线总线CMOS 24系列串行系列串行EEPROM存储器存储器 图 附B-1 DIP8封装的24系列串行EEPROM存储器 6123SCLA0A1A2SDAWP57附录 B 串行EEPROM存储器及应用 1. I2C总线特性总线特性 I2C总线协议是Philips公司开发的两线制(即串行时钟信号SCL和串行数据/地址线SDA)串行通讯接口,I2C协议主要特点如下: (1) 在I2C通讯协议中,通讯过程由产生SCL时钟信号的主器件(如微处理器)控制,即主器件

2、除了产生作为读/写同步信号的SCL外,还发出“启动”和“停止”总线操作的控制信号。 附录 B 串行EEPROM存储器及应用 (2) 在I2C总线协议中,允许总线上挂接多个从器件(如存储器),形成“一主多从”结构(采用总线仲裁方式后,可允许同时存在多个主器件,不过在单片机系统中很少见,因此不介绍)。每个从器件均有惟一“从片地址”,主器件启动了 I2C总线后,所有从器件均处于接收状态,接收主器件发送来的地址信息(广播形式),并与自身的“从片地址”比较:如果相符,则通过SDA引脚回送低电平的“应答信号”;反之,不做任何响应。在7位地址格式中,从片地址由7位从片地址(最多可以连接128个从器件)和控制

3、数据传输方向的读写标志位(R/W)组成。例如,采用I2C总线接口的EEPROM存储器的从片地址格式为1 0 1 0 A2 A1 A0 W/R附录 B 串行EEPROM存储器及应用 (3) 对于主器件来说,SCL引脚为输出,且漏极开路;对于从器件来说,SCL引脚为输入。SDA是漏极开路的数据/地址输入/输出引脚。 (4) 在I2C总线协议中,把数据发送到SDA线的器件称为“发送器”,接收数据的器件称为“接收器”。例如,主器件(如CPU)把数据或从器件地址写入从器件(如存储器)时,主器件是发送器,从器件是接收器;当主器件读取从器件存储单元信息时,从器件是发送器,主器件是接收器。接收器收到发送器一个

4、字节数据后,必须回送一个低电平的应答信号,否则发送器将停止发送数据。 附录 B 串行EEPROM存储器及应用 图 附B-2 I2C总线操作时序 SCLSDA总线空闲写入同步读出同步总线空闲数据电平稳定启动停止附录 B 串行EEPROM存储器及应用 (5) I2C总线标准约定的时间参数。 在I2C总线标准中,对下列时间宽度有严格要求: 读写同步信号SCL高电平最小时间。 读写同步信号SCL低电平最小时间。 “停止”操作时,SCL由低电平变为高电平(即SCL信号上升沿)到SDA变为高电平的最小时间。 “启动”操作时,SDA由高电平变为低电平(即SDA信号下降沿)到SCL变为低电平的最小时间。以上时

5、间不得小于4.7 s。 最大数据传输率,每秒传输的数据量不得超过100 Kbit,即同步信号SCL频率最大为100 kHz。 附录 B 串行EEPROM存储器及应用 2. 二线制二线制I2C总线总线24系列串行系列串行EEPROM存储器写入过程存储器写入过程 二线制I2C总线24系列串行EEPROM存储器支持字节写入方式和页写入方式。 1) 字节写入方式 字节写入过程如下:启动给出芯片控制字节等待EEPROM芯片回送应答信号输出EEPROM存储单元地址字等待EEPROM芯片回送应答信号输出写入存储单元的数据等待EEPROM芯片回送应答信号停止。 附录 B 串行EEPROM存储器及应用 2) 页

6、面写入 串行EEPROM存储器内部有页写入缓冲器(页写入缓冲器容量P的大小与芯片生产厂家、型号有关,如表附B-1所示),因此可以使用页面写入方式: 启动给出芯片控制字节等待EEPROM芯片回送应答信号输出EEPROM存储单元地址字(n)等待EEPROM芯片回送应答信号输出写入存储单元的数据(n)等待EEPROM芯片回送应答信号输出写入存储单元的数据(n+1)等待EEPROM芯片回送应答信号输出写入存储单元的数据(n+P)等待EEPROM芯片回送应答信号停止。 附录 B 串行EEPROM存储器及应用 表表 附附 B-1 附录 B 串行EEPROM存储器及应用 3) 写周期结束查询 图 附B-3

7、写控制字节YNEEPROM应答?发“启动”信号附录 B 串行EEPROM存储器及应用 3. 读操作读操作 1) 立即地址读 图 附B-4 立即读操作 BUS ACTIVITY:MASTERSDALINESLAVEADDRESSACKDATASTARTSTOPNO ACKSPSCLSDA898TH BITDATA OUTNO ACKSTOP主器件(CPU的I/O引脚)处于输入状态主器件(CPU的I/O引脚)处于输出状态附录 B 串行EEPROM存储器及应用 2) 读指定存储单元(字节读) 图 附B-5 字节读操作 BUS ACTIVITY:MASTERSDALINESLAVEADDRESSACK

8、DATAnSTOPNO ACKSPSLAVEADDRESSSTARTSBYTEADDRESS(n)*STARTACKACK附录 B 串行EEPROM存储器及应用 3) 连续读 图 附B-6 连续读操作 BUS ACTIVITY:MASTERSDALINESTOPSLAVEADDRESSDATA nxACKDATA n2DATA n1DATA nACKACKACKNO ACK附录 B 串行EEPROM存储器及应用 4. 串行串行EEPROM与与MCS-51接口接口 图 附B-7 I2C总线存储器与MCS-51的连接 A0A1A2VssVCCW PSCLSDA123424W C01/02/32/6

9、4 5 VP1.1P1.08765(a)A0A1A2VssVCCW PSCLSDA123424W C04 5 VP1.1P1.08765(b)A0A1A2VssVCCW PSCLSDA123424W C08 5 VP1.1P1.08765(c)A0A1A2VssVCCW PSCLSDA123424W C16 5 VP1.1P1.08765(d)附录 B 串行EEPROM存储器及应用 图 附B-8 I2C总线器件的连接 OSCI1SOCO2INT3VSS4SDA5SCL6CLKOUT7VCC8PCF8563A0A1A2VssVCCWPSCLSDA1234U1U224WC01/02/32/645

10、V5 VP1.1P1.05678附录 B 串行EEPROM存储器及应用 5. 用软件模拟在用软件模拟在P1.0、P1.1引脚产生引脚产生I2C总线定时信号参考程序总线定时信号参考程序说明:ByteCnt DATA 30H ; I2C数据字节计数器SlvAdr DATA 31H ; 从器件地址SubAdr DATA 32H ; 待读写的从器件存储单元地址RcvDat DATA 40H ; 接收数据缓冲区XmtDat DATA 50H ; 发送数据缓冲区; 端口位定义SDA BIT P1.1 ; 模拟I2C数据传送位SCL BIT P1.0 ; 模拟I2C时钟控制状态标志FHbit BIT 0F0

11、H; 发送及接收成功标志存放在0F0H位单元中 NOACK BIT 0F1H; 读操作时主器件非应答标志位,1表示非应答,0表示应答 附录 B 串行EEPROM存储器及应用 1) 启动;“启动” I2C总线串行EEPROM子程序START:CLR SCLNOPSETB SDANOPSETB SCLNOP; 插入空操作指令的数目由CPU时钟频率决定。SCL高电平时间最小; 为0.6 s,当时钟频率为12 MHz时,NOP指令执行时间为一个机器周; 期(即1 s),可见插入一条NOP指令足够 附录 B 串行EEPROM存储器及应用 NOPNOPNOPCLR SDA; 在SCL为高电平时,使SDA由

12、高电平变为低电平,启动I2C总线NOPNOPNOPNOPCLR SCL; 将SCL时钟置为低电平,以便发送和接收RET 附录 B 串行EEPROM存储器及应用 2) 停止; “停止”I2C总线串行EEPROM子程序STOP : CLR SCLNOPCLR SDANOPSETB SCLNOP; 插入空操作指令的数目由CPU时钟频率决定。SCL高电平时间最小; 为0.6 s,当时钟频率为12 MHz时,NOP指令执行时间为一个机器周; 期(即1 s),可见插入一条NOP指令足够 附录 B 串行EEPROM存储器及应用 NOPNOPNOPSETB SDA; 在SCL为高电平时,使SDA由低电平变为高

13、电平,停止I2C总线NOPNOPNOPNOPRET ; “停止”总线操作结束后,SCL、SDA均处于高电平状态,即总线处于空闲 状态 附录 B 串行EEPROM存储器及应用 3) 字节写; 字节发送子程序。; 用于将控制(即从器件地址)字节或数据字节发送到从器件(串行EEPROM)中; 待发送字节信息存放在寄存器A中,返回标志存放在Fhbit(位地址)中,0表示成功,1; 表示失败(即从器件没有应答,发送失败)PROC SentByteSentByte:NOPMOV R7,#08H; 初始化发送数据位长度R7SentLOOP:CLR SCLNOP; 根据CPU时钟频率可以插入02条空操作指令N

14、OPRLC A; 将Acc.7位移到进位标志C中,即先写高位MOV SDA, C; 将数据位发送到SDA引脚。由于写入时用SCL上升沿同步,因此; 要先送数据后将SCL置高电平附录 B 串行EEPROM存储器及应用 SETB SCL; 使时钟引脚为高电平NOP; 插入空操作NOPDJNZ R7, SentLOOP; R7减1不为0转移NOPCLR SCL; 当R7=0,则表示已发送Acc.0位,将SCL置低电平,形成发送Acc.0; 位的时钟脉冲NOP; 插入空操作指令,以便形成第9个SCL脉冲,检测从器件回送的; 应答信号NOPNOPSETB SDA; 将与SDA引脚相连的I/O引脚锁存器位

15、置1,使SDA引脚能作为输入; 引脚,以便检测从器件回送的应答信号(这一指令不能少,否则当; 发送的Acc.0位为0时,I/O引脚锁存器为0,结果输入信号总被钳位 ; 在低电平) 附录 B 串行EEPROM存储器及应用 SETB SCL; 发应答信号检测脉冲NOPNOPCLR FHbit; 清除失败标志JNB SDA, SeACK; 如果SDA为低电平,则表示收到应答信号SETB FHbit; 否则将FHbit置1,表示发送失败SeACK:NOPCLR SCL; 将SCL置为低电平,结束应答检测脉冲RET END 附录 B 串行EEPROM存储器及应用 4) 字节读; 字节接收子程序; 用于接

16、收从器件(串行EEPROM)发送来的存储单元信息; 接收到字节数据存放在寄存器Acc中,根据应答标志ACK内容决定是否要发送应答信号PROC ReceByteReceByte:NOPMOV R7,#08H; 初始化接收数据位长度R7SETB SDA; 在单字节(立即读或选择性读)读程序中,接收总是; 发生在写入从器件地址后,为了能检测到从回送的低电平应答信号,SDA已被置为输入状; 态,在接收子程序中,可以省去“SETB SDA”指令;但在连续读程序中,主器件每收到一; 个字节的数据后,向从器件发送一个低电平的应答信号,这时SDA引脚对应的I/O锁存器 ; 处于输出状态,且输出低电平,因此不能

17、省去该指令 附录 B 串行EEPROM存储器及应用 ReceLOOP: CLR SCLNOP; 根据CPU时钟频率可以插入04条空操作指令 NOPNOPNOPSETB SCLMOV C,SDA; 读数据位RLC ADJNZ R7,ReceLOOPNOPCLR SCL; 当R7=0,则表示已接收到Acc.7位,将SCL置低电平, ; 形成接收Acc.7位的时钟脉冲 附录 B 串行EEPROM存储器及应用 NOP ; 插入空操作指令,以便形成第9个SCL脉冲,检测从 ; 器件回送的应答信号NOPNOPCLR SDA; 主器件准备送低应答信号 JNB NOACK,SNOACK; 如果接收数据非应答标

18、志NOACK为0,要应答SETB SDA; 非应答标志有效(为1),改送高电平的非应答信号SNOACK:NOPNOPSETB SCL; 将SCL置为高电平,发第9个SCL脉冲NOPNOPNOPCLR SCL ; 将SCL置为低电平,以便接受数据或发送停止信号CLR NOACK; 清除非应答标志RET END 附录 B 串行EEPROM存储器及应用 5) 多字节写数据发送子程序; -串行EEPROM、日历时钟读写子程序-; 发送数据子程序; 名称:SendData; 描述:发送ByteCnt 个字节给从器件,如I2C总线串行EEPROM; 从器件地址在SlvAdr 中,存储单元地址在SubAdr

19、 中; 所发送数据的字节数在ByteCnt中,发送的数据在XmtDat 缓冲区中; 成功发送数据,FHbit标志为0; 当FHbit为1时表示从器件无应答或损坏; *附录 B 串行EEPROM存储器及应用 Proc SendData SendData: PUSH PSW PUSH ACC PUSH DPL PUSH DPH SETB RS0 SETB RS1 LCALL START ; 启动IC总线 MOV A ,SlvAdr ; 将从器件地址放累加器A中 LCALL SentByte ; 发送从器件总线地址 JB FHBIT,SenReturn ; 从器件不应答返回 附录 B 串行EEPRO

20、M存储器及应用 MOV A,SubAdr ; 取存储单元地址 LCALL SentByte ; 发存储单元地址 JB FHbit,SenReturn ; 从器件不应答返回 MOV R0,#XmtDat ; 取发送数据缓冲区首址SentNext: MOV A,R0 LCALL SentByte ; 发送一次数据 JB FHbit,SenReturn ; 出错返回 INC R0 ; 取下一个数据 DJNZ ByteCnt,SentNext ; 重复操作直到发送完最后一个数据 LCALL STOP ; 停止IC总线操作; *查询方式检测内部写入周期是否已完成* 附录 B 串行EEPROM存储器及应用

21、 LOOP: LCALL START ; 启动IC总线 MOV A ,SlvAdr ; 将从器件地址放累加器A中 LCALL SentByte ; 发送从器件总线地址 JB FHBIT,LOOP ; 从器件不应答返回 LCALL STOP ; 停止IC总线操作; *SenReturn: POP DPH POP DPL POP ACC POP PSW RET END 附录 B 串行EEPROM存储器及应用 6) 多字节读接收子程序; *; 接收数据子程序; 名称:ReceData; 描述:自从器件(如I2C总线串行EEPROM)读出ByteCnt 个字节数据; 从器件地址在SlvAdr 中,待读

22、出的存储单元地址在SubAdr 中; 所发送数据的字节数在ByteCnt中,接收的数据放在RevDat 缓冲区中; 成功接收数据,FHbit标志为0; 当FHbit为1时表示从器件无应答或损坏; * PROC ReceData 附录 B 串行EEPROM存储器及应用 ReceData: PUSH PSW PUSH ACC PUSH DPL PUSH DPH SETB RS0 SETB RS1 LCALL START ; 启动IC总线 MOV A ,SlvAdr ; 将从器件地址放累加器A中 LCALL SentByte ; 发送从器件总线地址 JB FHBIT,RevReturn ; 从器件不应答返回 附录 B 串行EEPROM存储器及应用 ; *完成假写过程,已将从器件地址计数器定位到读出单元* LCALL START ; 重新启动IC总线 MOV A ,SlvAdr ; 将从器件地址放累加器A中 SETB ACC.0 ; 将从器件地址改为读状态 LCAL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论