- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I2C串行EEPROM应用系统的健壮性设计
引言??在嵌入式控制系统中,通常要用到非易失性存储器。无论是掉电时维持需要保存的设置,还是存储重要记录,可靠的非易失性存储器都是一种理想的选择。非易失性存储常常采用外部串行存储器来实现,其中I2C接口产品是最常用的一种类型。然而,这种产品和其他EEPROM存储器一样,在使用时也存在着一些条件会潜在地导致其产生某些非标准的甚至是错误的操作。因此在进行I2C串行EEPROM存储器的应用设计时,除了应考虑数据手册规范之外,还必须考虑更多的因素,这样才能实现更健壮的总体设计,确保系统具有优良的质量特性。??1 防意外写措施??器件在上电/掉电期间或者SDA/SCL线的噪声过大时都有可能导致意外写操作。为了解决这一问题,一方面需要使用去耦电容(容量通常为0.1 μF)来帮助滤除VCC上的纹波,另一方面则可以通过写保护措施来防止对器件的非法访问。??对于具有硬件写保护功能的器件,既可以将其WP引脚连接到VCC来保护整个阵列,也可以将其WP引脚连接到VSS来放弃写保护。通常用户可以将 WP引脚连接到微控制器的一根I/O口线上,并在该引脚与VCC间连接一个上拉电阻,这样就可确保器件在平时处于写保护状态;但是要启动写周期,WP引脚必须首先被驱动为逻辑0。注意,WP引脚不能悬空,否则器件将无法正常工作。 对于无写保护功能的器件,则可以利用一个电子开关对其SDA引脚与微控制器之间的连接进行通断控制来实现写保护。平常不访问器件时,切断它们的连接;仅在需要对器件实施读/写操作时才接通。??2 数据完整性保护措施??在整个写周期内(对于大多数器件而言,通常最大为5 ms),必须将VCC维持在最小工作电压以上。如果此时VCC掉电或降到最小电压以下,则无论时间长短,均无法确保被写页面的数据完整性,可能导致编程数据的不正确。此外,由于无法对EEPROM单元进行完全编程,器件的数据保留时间会比数据手册中规定的时间短。对于写周期内电源故障所导致的这些问题,通常可以在软件上采取相应的保护措施来加以解决。基于事物的提交—回退机制[1]就是一种典型的解决方案。可以证明,当EEPROM存储器应用系统采用该机制后,无论电源何时掉电或微控制器何时被复位,EEPROM存储子系统都可保持数据的完整性。??(1) 提交—回退机制的建立??提交—回退机制的建立包括两方面的内容:一方面是定义EEPROM存储器的逻辑结构;另一方面是构造对存储子系统进行访问、检查和错误清理的接口函数。该机制将EEPROM存储器划分为主存储区、校验存储区和缓存区3个部分。其中主存储区用于存放用户数据;校验存储区用于存放主存储区每个页面的 CRC校验码,且该区中每一页的最后一个CRC用于校验本页数据;缓存区包括多个写缓存,每个写缓存包含4个域——数据域、地址域、状态域和16位CRC 域。数据域用于临时存放写函数写入的数据页面,执行下一个提交命令时,该数据页面将从缓存区传送到主存储区。地址域表示缓存数据要写入的页面地址;状态域表示缓存的状态,包括可用(available)、占用(occupied)和终止(expired)状态;16位CRC域用来校验整个写缓存。??该机制提供了6个接口函数:读、写、提交、回退、检查和清理。??① 读函数。接收1个页面编号和1个用于存放待读出数据的暂存区指针。如果暂存区指针和页面编号处于有效范围内,程序就会将指定的页面数据读入暂存区,并校验数据的有效性。该函数会返回如下状态之一:有效读(valid read)、无效读(invalid read)、无效暂存区地址(invalid buffer address)、无效页面编号(invalid page number)或保护失败(protection failure)。② 写函数。接收1个页面编号和1个指向填好数据的暂存区指针。如果暂存区指针和页面编号处于有效范围内,程序就会将数据写入非易失性缓存,并标记缓存状态以准备提交。③ 提交和回退函数。提交和回退函数是可以在运行写函数之后执行的互补型操作。提交函数将最近被写入缓存的数据复制到存储区中的对应位置,并为下一个待写入的数据页面准备好缓存结构。回退函数实际上就是一个“取消”操作,它消除最近一次执行写函数产生的效果,并为下一个写操作准备好缓存子系统。④ 检查函数。读取存储器件的每个数据页面,并检查存储数据的有效性。该函数还检查缓存子系统,以确保没有未执行的写操作。任何无效页面或未执行的写操作都会使检查函数返回一个错误状态。⑤ 清理函数。修复一个数据损坏的EEPROM。实际上,它将试图找出发生的错误,并采取相应的解决措施。??(2) 提交—回退机制的应用??读操作:调用读函数来实现。??更新主存储区数据操作:先调用写函数再
文档评论(0)