电视机上I2C通信的E2PROM设计稳健性应用研究
2010-06-25史立原
史立原
(四川长虹电器股份有限公司 多媒体研发中心液晶电视技术研究所,四川 绵阳 621000)
1 引言
目前,电视机中还有为数不少的数据(U/S/M/D)不能随软件固化,而需要存储在别的非易失存储器(NVM)中,I2C接口的E2PROM由于其提供字节级灵活性、质量可靠、接口简单、成本低廉等特点[1-2],在目前电视机上得到大量应用,在电视机上E2PROM存储的数据种类及可靠性要求级别见表1。
表1 E2PROM数据分类及可靠性要求级别
电视现已进入平板时代,平板电视中需要E2PROM中存储的数据比传统CRT电视更多,如不同的屏参、ADC的校准数据等,一旦这些数据受到损坏,将表现为电视机开机后工作异常,如黑屏、花屏、无图、颜色异常等。
因此,E2PROM的设计可靠性对电视机而言至关重要,数据受损的原因有外部总线上的干扰、电源的波动、掉电上电冲击、逻辑电平异常、非标准的软件错误操作等。笔者就I2C接口的E2PROM在电视系统上的应用,针对上述实际应用问题,从硬件、软件两方面系统介绍了提高设计稳健性的关键技术。
2 硬件方面
2.1 电源
E2PROM的工作电源宽,一般为2.5~5.5 V或1.8~5.5 V,在电源管脚应使用去耦合电容(通常为0.1 μF)来帮助滤除供电电压VCC上的小纹波,保证电源应处在正常工作水平范围内。在正常工作水平范围内,E2PROM提供大量防止意外写操作和数据损坏的保护。
但是,应该考虑到上电和掉电情况,以确保电源不处于正常工作水平内时,也具有相同水平的保护。上电时,VCC应该总是从0 V开始,并直接上升到正常工作水平,以确保正常的上电复位,VCC不应滞留在不确定的电平(即低于最小工作电压)。
欠压情况下,E2PROM具有欠压复位电路,可提供额外的保护。此外,如果系统单片机欠压复位的门限电平高于E2PROM,则将VCC降到0 V可以使2个器件一起复位。否则,单片机可能会在通信过程中复位,而E2PROM保持其当前状态。在这种情况下,开始进一步通信之前,需要对E2PROM执行软件复位序列。
2.2 总线上拉电阻RP
为保证正常工作,SCL和SDA总线都需要使用上拉电阻。不过,所选择的电阻值对系统性能会有很大的影响。选择上拉电阻阻值时必须考虑以下3个限制因素:供电电压,总线总电容,高电平输入总电流。
2.2.1 供电电压(VCC)
由于最高低电平输出电压(VOL)的规定,供电电压会限制最小RP值。也就是说,对于给定的VCC电平,上拉电阻越小,所产生输出电压就越高。常规E2PROM规格书中,VOL规定为3 mA时最大值为0.4 V,即RP上的压降为VCC-0.4 V时,流过它的电流不能超过3 mA,由此可得到最小RP值RPMIN为
2.2.2 总线总电容(CBUS)
总线电容包括总线上所有引脚、连接和导线的电容。由于时间常数RC的关系,总线电容越高,需要的上拉电阻就越小,这样才能达到特定的上升时间,从而达到特定的I2C时钟速度。
式(2)是电容充电特性描述函数的通用公式
总线上升时间(TR)定义为电压从VIL上升到VIH所需的时间量(VIL=0.3×VCC,VIH=0.7×VCC),按式(2)计算的结果显示在式(3)中。式(3)为总线上升时间
根据式(3)可以得到受总线上升时间限制的最大RP值,公式为
2.2.3 高电平输入总电流(IIH)
总线处于高电平时始终存在一些漏电流流过上拉电阻,由于电阻上的压降,引脚上的有效电压将低于VCC。该压降必须足够小,以使得器件仍会将引脚上的电压视为高电平,即引脚上的电压必须高于VIH加上高电平输入噪声容限(VHMAR)。据此可得到受漏电流限制的最大RP值为
计算电阻值时使用的参数见表2。
表2中,TR基于100 kHz标准I2C速度,VIH按0.7×VCC规范计算,VHMAR按 0.2×VCC规范计算。
通过应用上述公式,计算得出电阻值极限,如表3所示。
高电平输入总电流限制的上拉电阻为50 kΩ,电阻过大,导致上升时间太慢。因此,可接受的电阻值范围为1.533~11.80 kΩ,工程上选择该范围中偏中间的值,以备提供尽可能宽的保护带。实际电视机应用中,4.7 kΩ的上拉电阻将是很理想的。
表2 示例参数
表3 电阻值极限
2.3 防意外写保护功能
为防止器件由于在上电/掉电期间电平的不确定性、总线的噪声或其他原因而导致的可能意外写操作,应使用硬件写保护措施来防止对器件的非法访问。写保护由WP引脚来提供硬件写保护功能,该引脚连接到高电平来保护整个阵列,如连接到低电平则禁止写保护。为了启动写周期,WP引脚必须驱动为低电平,否则将不会执行写周期。
目前在电视机芯上一般把WP引脚连接到系统微控制器的1个GPIO口,并需要在该引脚与E2PROM供电脚间设计电阻提供上拉。在需要执行写操作时,由微控制器的GPIO口输出低电平,此时E2PROM允许通过I2C总线写入数据,而在其他操作过程中,该GPIO口输出高电平,E2PROM不允许I2C总线写入数据。
在实际应用中需要特别注意的是,电视机上SOC系统主芯片的GPIO接口一般是3.3 V的电压,如果系统中E2PROM是5 V供电,按E2PROM的数据手册,WP的高电平需要满足0.7×VCC≥3.5 V,才确认为高电平。主芯片的GPIO接口如果配置状态不对,其输出的高电平仅为3.3 V,不能给WP提供有效的高电平,使E2PROM未处于可靠的写保护状态。发现这种情况,应将主芯片的GPIO接口设置为高阻状态,靠WP外接到E2PROM供电脚VCC的上拉电阻提供可靠的高电平。
3 软件方面
3.1 检查应答和应答查询
I2C通信E2PROM作为被控器件,在有效接收字节数据后会向主控器件发送应答位,利用该特性系统软件设计中应具有E2PROM检查应答和应答查询机制,以缩短无谓的等待时间,检测可能发生的错误,择时启动软件复位序列,提高软件系统可靠性。
主控器件发出写操作指令后,数据的写入在E2PROM中有一个内部写周期时间,在该期间,外部的任何访问都将被E2PROM忽略。规格书中标示的TWC为最坏情况写周期时间,实际应用中,由于器件的离散型,在短于TWC的时间内完成写周期是很正常的事情,软件设计中如简单地按TWC增加时延会无谓地增加主控器件的等待时间。采用应答查询机制,持续的检测E2PROM器件是否有应答,可以及时知道E2PROM已经完成内部写周期操作,及时进入后续的软件操作。
3.2 正确选择写操作模式
E2PROM提供有字节写模式和页写模式,选择适当的写操作模式,可以延长E2PROM的使用寿命。当需要改写的数据为1个字节时,应采用字节写模式;而当需要改写大量字节数据时,则应选择页写模式。页写模式利用E2PROM内部的页面缓冲器,可显著缩短写入总时间。表4给出了不同方式的写入时间比较。其中,最坏情况的计算假定使用5 ms的定时延时,器件为24LC512,页大小为512 byte。
表4 标准I2C速度下的写入时间比较
从表4可以清楚地看到,页写和应答查询都可以显著地节约时间。最坏情况下,采用标准I2C速度,将128 byte通过字节写模式写入24LC512需要大约688 ms。换为应答查询方式可将时间缩短到大约432 ms,缩短约37%。如换为页写模式可进一步将时间缩短到约15 ms,减少幅度近98%。
3.3 优化数据的存储
交流上电首次访问E2PROM需根据硬件系统的不同设置适当的延时,以避免由于上电过程中电源不稳定而造成的通信错误。
对一些模拟量调整线性等常用数据尽可能在开机时一次性读入RAM,而不是每次都访问E2PROM,提高执行效率。
切忌对同一区域反复频繁执行写操作,这样会极大影响E2PROM使用寿命。
梳理分类计划放入E2PROM中存储的数据,忌将用户数据和关键非用户数据混放,某些预置位等关键非用户数据尽管不能占满1个字节,也不要将用户的开关位分配在其中,因为它们有不同的可靠性要求级别。
3.4 软件复位机制
E2PROM器件在实际应用中,由于某些外部原因,如上电时总线噪声过大、掉电不彻底等,有时会导致E2PROM存储器进入某种错误状态,表现为其SDA锁死为低。软件设计时应在上电及每次操作E2PROM器件时检查SDA的情况,当发现异常时,强制通过发送图1所示的软件复位序列复位存储器,释放总线,之后再进行下一步的数据读写操作。
该软件复位序列的详细说明可以从相关公司的芯片规格书和应用手册中查阅。
3.5 关键数据的备份和恢复
对于支持在应用编程(In Application Program,IAP)的系统平台,利用IAP的方法在出厂设置时一次性将所有关键非用户数据写入Flash中事先预留的区域里加以固化,这样软件在出厂后就只需要从Flash中获取非用户数据,从而彻底解决关键非用户数据跳变的问题。
对不支持IAP的系统平台,软件应该在E2PROM的余下空白区域中对关键非用户数据进行多次备份并分别计算和存储各数据区的CHECKSUM,在开机时检查各区数据正确性,并在检测到出错时使用正确数据来恢复。
4 小结
本文介绍的提高电视机上I2C通信E2PROM存储器设计稳健性技术实用、可靠,确保了在工程应用上使器件工作在数据手册的参数范围内,保障长期工作的可靠性和稳定性,对相关领域的技术应用具有实际指导作用。
[1]广州周立功单片机发展有限公司.I2C总线规范[EB/OL].[2010-01-20].http://www.zlgmcu.com/philips/iic/xuanxing/I2Cgiufan.pdf.
[2]何立民.I2C总线应用系统设计[M].北京:北京航空航天大学出版社,1995.