如何解決串行E2PROM 24C02在應用中的問題
1.不同牌號24C02的性能區(qū)別
24C02與單片機的接口非常簡單,如圖1所示。A0,A1,A2為器件地址線,WP為寫保護引腳,SCL,SDA為二線串行接口,符合I2C總線協(xié)議。在一般單片機系統(tǒng)中,24C02數(shù)據(jù)受到干擾的情況是很少的,但是隨著單片機抗干擾性能的變差,以及惡劣工業(yè)環(huán)境中單片機系統(tǒng)的應用,一些智能單片機控制系統(tǒng)相繼出現(xiàn)24C02數(shù)據(jù)被沖掉的問題,而且隨著單片機的牌號以及24C02的牌號不同而出現(xiàn)不同程度的干擾現(xiàn)象。以前通過簡單的器件之間替換比較,發(fā)現(xiàn)不同牌號的24C02其抗干擾性能是不一樣的,于是就認定24C02器件存在"質量"好壞的問題。后來在一次偶然的機會里,發(fā)現(xiàn)有些24C02的WP引腳并不起到保護作用,也就是說將WP引腳與CPU輸出引腳斷開并保持高電平的情況下,CPU仍然能夠對24C02中的數(shù)據(jù)進行修改寫入!在驚訝之余,筆者收集了許多不同牌號的24C02進行試驗,除了基本的讀寫功能外,還對地址功能以及WP引腳保護功能進行了全面的檢測,發(fā)現(xiàn)一種ATMEL(激光印字)以及XICOR牌號的24C02具有全面的符合I2C總線協(xié)議的功能,而有些牌號24C02要么沒有WP引腳保護功能,要么沒有器件地址功能(即2片24C02不能共用一個I2C總線),有些甚至兩種功能均無。所以說一些同樣功能型號的電子器件在兼容性上往往會帶來意想不到的問題,值得引起注意。
2.24C02器件的選用
無論是智能儀器儀表還是單片機工業(yè)控制系統(tǒng)都要求其數(shù)據(jù)能夠安全可靠而不受干擾,特別是一些重要的設定參數(shù)(如溫度控制設定值)受到干擾后變成一個很大的數(shù)字,那么就有可能發(fā)生燒箱毀物的破壞性后果,給生產和經濟帶來損失,因此必須選用可靠的24C02器件作為數(shù)據(jù)儲存單元。
對于只用一片24C02器件的系統(tǒng),因為不需要分辨不同的地址,只要WP保護功能正常就可以了,這只要斷開WP與CPU連線且保持高電平,再試一下系統(tǒng)數(shù)據(jù)讀寫功能是否正常就可以了。而這一點對軟件抗干擾技術也是至關重要的。一般來說,同種牌號的24C02器件性能是一樣的,可以采用抽樣試驗決定取舍;對于有2片24C02以上的系統(tǒng),必須嚴格檢查其器件尋址功能,這可以輪流撥下其中一片24C02器件,檢查相應的數(shù)據(jù)存取功能,若沒有交叉出錯現(xiàn)象則可以選用。
3.提高24C02數(shù)據(jù)安全的軟件措施
(1)建議數(shù)據(jù)以十進制BCD碼方式存入24C02,這樣可以提高有效數(shù)據(jù)的冗余度,即24C02中的存儲單元其有效數(shù)據(jù)為0-9,大于9則為無效數(shù)據(jù)。這樣,在數(shù)據(jù)寫入24C02之前就可以插入校驗子程序,對預備寫入的數(shù)據(jù)進行檢查,若該RAM數(shù)據(jù)已經受到干擾,其值大多數(shù)應落在大于9的范圍內(可能性百分比系數(shù)為246/256),故此當數(shù)據(jù)大于9時就禁止執(zhí)行寫入24C02的子程序,以免錯誤數(shù)據(jù)寫入24C02,而對正常需要修改的參數(shù)無影響。
(2)24C02中數(shù)據(jù)保持冗余度后,還可以對讀出數(shù)據(jù)進行檢查,若為大于9的非正常數(shù)據(jù),說明24C02中數(shù)據(jù)已經受到干擾,此干擾值是絕對不能用的,對于特定的系統(tǒng)可以采取不同的方法,比如帶溫度控制的培養(yǎng)箱等系統(tǒng),如其溫控范圍為0~50℃,則數(shù)據(jù)出錯后,讀入值可能變成200℃或更高值,這是非常危險的,針對這種情況可以將設定值硬性規(guī)定為某一個安全值比如25℃,因為不知道原先設置的參數(shù)值,這也是無可奈何的事情。
評論