第3章存储设备[ 001 ].pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章存储设备[ 001 ]

第三章 存储器件;一、存储器件概述;1.1存储器ROM;1.2 随机访问存储器RAM;二、EEPROM存储器件;1.1 CAT24WC16介绍;引脚说明;(注意:I2C是个漏极开路的接口,需要外接上拉电阻);1.2 CAT24WC16工作时序;设备选址;应答信号;写操作;在“页写”操作模式下,页写操作的启动和字节写一样,不同在于传送了一字节数据后并不产生停止信号,主器件被允许发送15个额外的字节。每发送1字节数据后,CAT24WC16产生一个应答位并将字节地址位加1,高位保持不变。 如果在发送停止信号之前主器件发送超过16个字节,地址计数器将自动翻转先前写入的数据被覆盖。 在发送最后一个字节后,主器件发送一个停止信号通知数据传输结束,如图所示。 应答查询:主器件发送一个起始信号和进行写操作的从器件地址来进行应答查询。;读操作;“随机地址读”操作允许主器件对存储器的任意字节进行读操作。 1、主器件首先通过发送起始信号、从器件地址并选择写操作。 2、等CAT24WC16应答之后主器件重新发送起始信号和从器件地址。 3、CAT24WC16响应并发送应答信号,然后输出该地址处的一个字节数据,最后主器件发送一个停止信号结束此次读操作。过程如图 :;“连续读”操作既可以是当前地址读,也可以是随机地址读,工作时序上大体相同。 不同的是:当主器件每接收到一个数据字后,会回应一个应答信号给CAT24WC16,而不是停止信号。CAT24WC16在接收到应答信号后会将地址加1。直到主器件发送停止位才结束此操作。 CAT24WC16输出的数据按顺序由地址N开始输出。读操作时地址计数器在CAT24WC16内部增加。如果上次读写地址为芯片末地址(0x7FF),则计数器将翻转到第一个字节地址(0x00)处。;1.3 实验目的与内容;1.4 实验原理分析;软件设计 为了方便编程与程序可读性,首先定义几个宏,这些宏分别对应I2C控制寄存器I2CONSET的某些控制位。 #define SI 0x08 //I2C中断标志位 #define STO 0x10 //I2C停止位 #define STA 0x20 //I2C起始位 #define AA 0x04 //I2C应答位 #define I2EN 0x40 //I2C使能位 根据实验内容我们设计了3个底层驱动函数,这三个底层驱动函数分别是: CAT24WC16_Init() 初始化设置函数。 CAT24WC16_Write() CAT24WC16的写函数。 CAT24WC16_Read() CAT24WC16的读函数。;CAT24WC16_Init();CAT24WC16_Write(); //发送器件地址+W位 I2CONCLR = SI | STA; //清零:SI位,起标志位标志位 I2DAT = sla 0xFE; while((I2CONSET SI) == 0) ; //等待SI置位 if(I2STAT !=0x18) //查看状态码 { I2CONSET = STO; //结束数据传输结束 return(I2STAT); //返回错误状态码 } //发送器件子地址 I2CONCLR = SI; //SI位清零 I2DAT = slaveAddr; while((I2CONSET SI) == 0) ; //等待SI置位 if(I2STAT !=0x28) //查看状态码 { I2CONSET = STO; //结束数据传输结束 return(I2STAT); //返回错误状态码 } ;//发送数据 for(i=num;i0;i--) { I2CONCLR = SI; //SI位清零 I2DAT = *pWriteData++; while((I2CONSET SI) == 0) ; //等待SI置位 if(I2STAT !=0x28) //查看状态码 { I2CONSET = STO; //结束数据传输结束 return(I2STAT); //返回错误状态码 } } I2CONCLR = SI; //SI位清零 I2CONSET = STO; //结束数据传输结束 return(1); };CAT24WC16_Read(); if(I2STAT !=0x08) //查看状态码 { I2CONSET = STO; //结束数据传输结束 return(I2STAT); //返回错误状态码 } //发送器件地址+R位 I2CONCL

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档