史立原
(四川長虹電器股份有限公司 多媒體研發中心液晶電視技術研究所,四川 綿陽 621000)
目前,電視機中還有為數不少的數據(U/S/M/D)不能隨軟件固化,而需要存儲在別的非易失存儲器(NVM)中,I2C接口的E2PROM由于其提供字節級靈活性、質量可靠、接口簡單、成本低廉等特點[1-2],在目前電視機上得到大量應用,在電視機上E2PROM存儲的數據種類及可靠性要求級別見表1。

表1 E2PROM數據分類及可靠性要求級別
電視現已進入平板時代,平板電視中需要E2PROM中存儲的數據比傳統CRT電視更多,如不同的屏參、ADC的校準數據等,一旦這些數據受到損壞,將表現為電視機開機后工作異常,如黑屏、花屏、無圖、顏色異常等。
因此,E2PROM的設計可靠性對電視機而言至關重要,數據受損的原因有外部總線上的干擾、電源的波動、掉電上電沖擊、邏輯電平異常、非標準的軟件錯誤操作等。筆者就I2C接口的E2PROM在電視系統上的應用,針對上述實際應用問題,從硬件、軟件兩方面系統介紹了提高設計穩健性的關鍵技術。
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執行軟件復位序列。
為保證正常工作,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 電阻值極限
為防止器件由于在上電/掉電期間電平的不確定性、總線的噪聲或其他原因而導致的可能意外寫操作,應使用硬件寫保護措施來防止對器件的非法訪問。寫保護由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的上拉電阻提供可靠的高電平。
I2C通信E2PROM作為被控器件,在有效接收字節數據后會向主控器件發送應答位,利用該特性系統軟件設計中應具有E2PROM檢查應答和應答查詢機制,以縮短無謂的等待時間,檢測可能發生的錯誤,擇時啟動軟件復位序列,提高軟件系統可靠性。
主控器件發出寫操作指令后,數據的寫入在E2PROM中有一個內部寫周期時間,在該期間,外部的任何訪問都將被E2PROM忽略。規格書中標示的TWC為最壞情況寫周期時間,實際應用中,由于器件的離散型,在短于TWC的時間內完成寫周期是很正常的事情,軟件設計中如簡單地按TWC增加時延會無謂地增加主控器件的等待時間。采用應答查詢機制,持續的檢測E2PROM器件是否有應答,可以及時知道E2PROM已經完成內部寫周期操作,及時進入后續的軟件操作。
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%。
交流上電首次訪問E2PROM需根據硬件系統的不同設置適當的延時,以避免由于上電過程中電源不穩定而造成的通信錯誤。
對一些模擬量調整線性等常用數據盡可能在開機時一次性讀入RAM,而不是每次都訪問E2PROM,提高執行效率。
切忌對同一區域反復頻繁執行寫操作,這樣會極大影響E2PROM使用壽命。
梳理分類計劃放入E2PROM中存儲的數據,忌將用戶數據和關鍵非用戶數據混放,某些預置位等關鍵非用戶數據盡管不能占滿1個字節,也不要將用戶的開關位分配在其中,因為它們有不同的可靠性要求級別。
E2PROM器件在實際應用中,由于某些外部原因,如上電時總線噪聲過大、掉電不徹底等,有時會導致E2PROM存儲器進入某種錯誤狀態,表現為其SDA鎖死為低。軟件設計時應在上電及每次操作E2PROM器件時檢查SDA的情況,當發現異常時,強制通過發送圖1所示的軟件復位序列復位存儲器,釋放總線,之后再進行下一步的數據讀寫操作。

該軟件復位序列的詳細說明可以從相關公司的芯片規格書和應用手冊中查閱。
對于支持在應用編程(In Application Program,IAP)的系統平臺,利用IAP的方法在出廠設置時一次性將所有關鍵非用戶數據寫入Flash中事先預留的區域里加以固化,這樣軟件在出廠后就只需要從Flash中獲取非用戶數據,從而徹底解決關鍵非用戶數據跳變的問題。
對不支持IAP的系統平臺,軟件應該在E2PROM的余下空白區域中對關鍵非用戶數據進行多次備份并分別計算和存儲各數據區的CHECKSUM,在開機時檢查各區數據正確性,并在檢測到出錯時使用正確數據來恢復。
本文介紹的提高電視機上I2C通信E2PROM存儲器設計穩健性技術實用、可靠,確保了在工程應用上使器件工作在數據手冊的參數范圍內,保障長期工作的可靠性和穩定性,對相關領域的技術應用具有實際指導作用。
[1]廣州周立功單片機發展有限公司.I2C總線規范[EB/OL].[2010-01-20].http://www.zlgmcu.com/philips/iic/xuanxing/I2Cgiufan.pdf.
[2]何立民.I2C總線應用系統設計[M].北京:北京航空航天大學出版社,1995.