I2C總線應(yīng)用下的EEPROM測試
假設(shè)我們這里每個字節(jié)寫入相同的數(shù)據(jù)(如00或FF等),那么在這種情況下,要是Word address counter無法正常工作,那么我們寫入或讀取的可能是部分地址所指向的EEpromArray中的bit位,而且無法保證xdec和ydec能正常****行地址和列地址,譬如說我們對“10101010”word address所指向的字節(jié)寫入00,如果讀取“101010”這個地址數(shù)據(jù)時,Word address counter、xdec、ydec任意單元發(fā)生了錯誤,那么最終我們讀取到的數(shù)據(jù)就不是“10101010”這個地址所指向的字節(jié)數(shù)據(jù),也就是說因為每個字節(jié)數(shù)據(jù)是一樣的,所以即使寫入和讀取的地址發(fā)生了錯位,我們也會認(rèn)為測試是通過的。
由此可見,要保證Word address counter、xdec、ydec等單元正常工作,我們寫入的數(shù)據(jù)必須滿足下列三個條件:
①寫入EEPROM Array的每一行數(shù)據(jù)不一樣(驗證xdec單元);
②寫入EEPROM Array的每一列數(shù)據(jù)不一樣(驗證ydec單元);
③寫入EEPROM Array的每一個字節(jié)數(shù)據(jù)不一樣(驗證Word address counter單元);
這就是我們選擇寫入00~FF的理由(當(dāng)然也可以選擇寫入其他數(shù)據(jù),只要符合上述最后一個條件即可)。
(2)每個字節(jié)寫入數(shù)據(jù)00,讀取看是否與寫入的一致
通過上述第一項測試,其實已經(jīng)可以基本保證芯片各單元能正常工作,接下來只需測試驗證EEPROM Array(2Kbit)中的每個bit位是否良好,這里寫入數(shù)據(jù)00,可排除EEPROM Array(2Kbit)中恒為“1”的bit位。
(3)每個字節(jié)寫入數(shù)據(jù)FF,讀取看是否與寫入的一致
可排除EEPROM Array(2Kbit)中恒為“0”的b“位。
(4)從00H地址開始寫入4個字節(jié)55,接著寫入4個字節(jié)AA,如此重復(fù),直至寫滿256個字節(jié),讀取看是否與寫入的一致。
EEPROM Array中相鄰bit位(包括行相鄰、列相鄰、對角線相鄰)會互相影響。
而24LC02的EEPROM Array分為4列×64行×8bit,所以我們寫入上述的數(shù)據(jù)使得每個相鄰bit位的數(shù)據(jù)都不一樣,經(jīng)過該項測試可排除相鄰bit位的數(shù)據(jù)竄擾。最好是再測試一下寫入4個字節(jié)AA,寫入4個字節(jié)55……,看讀取與寫入的是否一致。
到此我們完成了全部的功能測試。24LC02讀寫時有page write、byte write、random read、Sequentialread等各種工作模式以及writeprotect功能,這些測試都比較簡單,這里就不再一一贅述了。
由此,我們概括出EEPROM的一般測試方法:
(1)每個字節(jié)寫入random code,讀取驗證是否與寫入時一致,從而測試Word address counter、xdec、ydec等單元是否能正常工作;Random code需要滿足下面這個條件:寫入EEPROMArray的每一個字節(jié)數(shù)據(jù)不一樣。
(2)每個字節(jié)寫入數(shù)據(jù)00或FF,讀取驗證是否與寫入時一致,排除EEPROM Array中恒“0”或恒“1”的bit位。
(3)對EEPROM Array寫入相鄰bit位(包括行相鄰、列相鄰、對角線相鄰)都不一樣的數(shù)據(jù),讀取驗證是否與寫入時一致,排除相鄰bit位的數(shù)據(jù)竄擾。
評論