嵌入式控制系統(tǒng)中I2C串行EEPROM器件應用
I2C串行EEPROM存儲器因具有外形體積小、接口緊湊簡單、占用引腳資源少、數據保存可靠、可在線改寫、功耗低和價格低廉等顯著特點,被廣泛應用于嵌入式控制系統(tǒng)中,用于存放配置參數、調整和運行數據等信息。但由于其為同步串行傳輸,通訊協(xié)議非常簡單,沒有提供更為復雜的糾錯和檢測機制,在實踐中經常因使用不當造成數據丟失、數據無故改寫等問題。對于存儲數據要求非常高的系統(tǒng), 例如計量產品、無人值守系統(tǒng)等,如果存儲數據發(fā)生意外錯誤,造成的損失是致命的,因此在設計使用I2C串行EEPROM存儲器時,更多地需要硬件和軟件相互接合,采取一些相關的處理措施,使得產品能夠在各種惡劣的使用環(huán)境中可靠、正確地運行。
1 硬件處理措施
硬件處理過程中,應重點考慮以下幾個方面:
(1)電源是一個控制系統(tǒng)可靠運行的基石,很多產品與外界的有線連接就是電源連接。因此,在產品設計時應對電源電路進行有效濾波處理,并且應該通過EMC的試驗檢測來降低電源紋波噪聲,抑制高頻震蕩和高壓脈沖的侵入,減少由于噪聲過大而引起的I2C串行EEPROM器件讀寫失誤。這一點尤為重要,因為實踐中很多系統(tǒng)的數據不知何故而發(fā)生了錯誤,可能的一個重要原因就是電源的抗干擾能力有限,從而導致I2C總線干擾。
(2)由于特殊原因,盡管對電源已經進行了有效處理,仍無法避免電磁的干擾,在使用I2C串行EEPROM時,在I2C規(guī)范限制條件下,可以采取減小上拉電阻和使用I2C總線驅動器提高輸出驅動能力等措施來有效降低電磁干擾對讀寫的影響。
(3)I2C串行EEPROM 一般具有欠壓復位電路,如果微處理器欠壓復位的門限電壓高于I2C串行EEPROM,那么,由于電磁干擾造成的電壓波動使得微處理器可能會在總線通信過程中率先復位,而I2C串行EEPROM保持其當前狀態(tài),導致總線出現“掛死”現象,使得數據傳輸不同步而出現數據錯誤。因此,應盡量采用帶有掉電檢測功能的微處理器,設置微處理器掉電復位門檻電壓低于I2C串行EEPROM 的欠壓復位門檻,使得微處理器與I2C串行EEPROM同步復位[1]。
(4)為防止總線意外“掛死”,如果設計允許,最好能控制I2C器件的電源或選擇帶有復位引腳的器件。
(5)對于具有寫保護功能的I2C串行EEPROM,可充分利用寫保護引腳來提供硬件寫保護功能,將寫保護引腳連接到微處理器的I/O口線上,控制器件在平時處于寫保護狀態(tài);需要寫入時,將寫保護引腳變?yōu)檫壿?ldquo;0”。注意,寫保護引腳不能懸空,否則器件將無法正常工作。
2 軟件處理措施
在保證硬件電路設計可靠的同時,提高軟件的抗干擾能力同樣重要。在對I2C串行EEPROM進行讀寫操作時,要從兩個方面進行可靠性的設計,首先要保證I2C總線通訊的完整和有效性,其次就是保證I2C串行EEPROM讀寫數據的正確性。
2.1 保證 I2C總線通訊的完整和有效性措施
2.1.1 總線復位
前面講到在I2C總線通訊過程中,由于電磁干擾等因素可能導致總線“掛死”或通訊失效,所以在啟動通訊前,應先對I2C串行EEPROM器件進行復位操作,以保證I2C總線處于暢通狀態(tài)。對于具有復位引腳的器件,提供復位信號重新復位;而對于無復位引腳的器件,若電路設計中能控制其電源,則給器件上電復位;若無法控制器件電源,則啟動“恢復序列”復位。恢復序列操作流程為:
(1)在SCL線發(fā)送9個時鐘脈沖;
(2)由Master保持SDA線為高,直到Slave-Transmitter模式釋放SDA執(zhí)行ACK操作;
(3)在ACK操作時,保持SDA線為高;
(4)在Master-Receiver和Slave-Transmitter模式都結束后,Master發(fā)送一個Stop命令完成初始化總線[1]。
恢復序列如圖1所示。
評論