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