微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > I2C串行EEPROM应用系统的健壮性设计

I2C串行EEPROM应用系统的健壮性设计

时间:03-29 来源:电子产品世界 点击:
3 I2C通信的有效性保证措施

  (1) 软件复位

  有时EEPROM器件可能需要执行软件复位序列来确保其处于正确并且已知的状态。这在某些情况下会很有用。例如,在EEPROM上电时,若总线噪声过大,EEPROM上电后将会进入不正确的状态;又如,微控制器在通信期间若发生复位,将会使通信陷入不同步的状态。为了确保在出现这些情况之后,系统的微控制器与I2C串行EEPROM器件之间能够正确、有效地实现通信,可以先发送图1所示的软件复位序列,使I2C接口器件可靠复位,之后,再启动数据的传输过程。

  



  图1 软件复位序列


  第1个起始位会使器件从期望接收微控制器数据的状态复位。在该模式下,器件处于接收模式并监视数据总线,能够检测到强制其内部复位的起始位。9 位"1"用于强制复位那些无法通过前面的起始位复位的器件。这只在以下情况下发生:器件处于在总线上驱动应答(低电平)的模式中;或处于输出模式中,正在总线上驱动输出数据位0。在这两种情况下,由于器件将总线保持在低电平,所以无法产生前面的起始位(定义为SCL为高电平时SDA被拉低)。通过发送9位 "1",可以确保器件检测到NACK(即微控制器不将总线驱动为低电平,从而不应答EEPROM发送的数据),这样也会强制进行内部复位。

  发送第2个起始位是为了防止在以下情况中可能发生的罕见的错误写操作:微控制器在向EEPROM发送写命令时被复位,并且在发送第1个起始位时 EEPROM正在总线上驱动ACK。在这种特殊情况下,如果没有发送第2个起始位,而是发送了停止位,器件将启动写周期。只有在微控制器向EEPROM发送写命令时被复位的情况下,才可能发生这种错误写操作。

  最后的停止位将终止总线活动,并将EEPROM置于待机模式中。

  (2) 检查应答位

  I2C通信的众多优点之一就是在接收到每个字节后发送应答位ACK。除了正在进行写周期之外,I2C接口EEPROM在接收到每个字节后总会发送1位低电平,表明已收到有效的起始位和控制字节。因此,主器件可以在整个运行期间监视接收到的ACK位,以检测可能发生的任何错误。在发送期间检查接收到的ACK是否为逻辑1(表明EEPROM没有响应)始终是一种好的做法,若接收到ACK为逻辑1,则需要执行一个错误处理程序来确定器件为何没有响应,并根据需要执行软件复位序列。

  (3) 应答查询

  串行EEPROM上的写操作要求在启动写操作后遵守写周期时间,使器件有时间存储数据。在此期间,正常器件操作将被禁止,微控制器对器件的所有访问尝试都将被忽略。因此,微控制器应等待写周期结束后再尝试访问EEPROM,这一点很重要。每个器件在其数据手册中都给出了最长的写周期时间,该参数通常用TWC表示。确保遵守写周期时间的一种简单方法是:在再次访问EEPROM之前执行规定时长的延时。但是,器件在短于规定的最长时间内完成写周期是很寻常的事。因而,用这种延时方法会使EEPROM完成写操作后的一段时间内微控制器仍在等待。为了消除这段额外的时间,使运行更加高效,强烈建议利用应答查询功能。由于I2C接口EEPROM器件在写周期内不会应答,所以可在发送停止条件并启动器件的内部写周期后持续地向器件发送写命令控制字节并进行应答查询,直到接收到指示写操作已完成的ACK位为止。图2是应答查询流程。



  图2 应答查询流程


  4 延长EEPROM使用寿命的方法

  (1) 避免对同一区域反复执行写操作

  不要在同一个单元或同一个页面上反复执行写操作,尤其是不要将某个页面设置成写入任何其他页面时都要更新的"目录"。

  (2) 尽可能降低供电电压

  在满足器件最低供电电压的前提下,供电电压越低,器件的使用寿命越长。

  (3) 选择适当的写操作模式

  EEPROM存储器的写操作有3种模式:字节模式、页写模式和块写模式。有些器件支持所有上述3种模式,而另一些器件则可能只支持上述3种模式中的一种或两种。选择适当的写操作模式,可使 EEPROM存储器的使用寿命得以延长。在仅需要改变存储器中的一个字节时,应采用字节模式。而在需要改变存储器中的某块内容或全部内容时,写操作模式的选择原则是:首先应考虑块写模式,其次再考虑页写模式,最后才是字节模式。

  (4) 存储块轮换使用

  一般应用中,要存储的数据比较单一,EEPROM空间与要存储的数据相比会大得多。为此,可采用一种存储块轮换使用的方法来延长EEPROM的使用寿命。其原理如下:

  根据要存储的数据量将EEPROM空间分块,从第1块开始存储数据,当数据被改写N次后转到第2块存放,等到第2块中的数据被改写N次后再转到第3块存放,依此类推,直到最后一个块存放的数据被改写N次后,又转到第1个块重新开始。在这种解决方案中,系统掉电后再上电时可用来确定数据存储块首地址的方法有[2]: 找最大数据法、用后还原法和地址指针法。

  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top