專利名稱::自動識別eeprom分頁大小及寫eeprom的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及芯片測試與應(yīng)用領(lǐng)域,尤其涉及一種自動識別EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory,電可擦可編程只讀存儲器)分頁大小及DMA(DirectMemoryAccess,存儲器直接存取)方式寫EEPROM的方法。
背景技術(shù):
:MCU(microprocessorcontrolunit,微處理器控制單元)能用兩種方式通過12(:總線讀寫EEPROM,其一是常規(guī)模式(Generalmode),另一個(gè)是DMA模式(DMAmode)。在常規(guī)模式下,讀寫EEPROM只能一個(gè)字節(jié)一個(gè)字節(jié)地進(jìn)行;而DMA模式下,讀寫EEPROM可以以分頁(Page)為單位進(jìn)行。使用DMAmode時(shí),MCU中EEPROM地址自動更新范圍局限于EEPROM的一個(gè)分頁中,一旦需要進(jìn)行的DMA操作的EEPROM地址范圍大于一個(gè)分頁,那么就需要根據(jù)分頁大小進(jìn)行多次的DMA操作。由于不同型號的EEPROM對應(yīng)的分頁大小并不相同,如表l所示,分頁大小有8字節(jié)(byte),16字節(jié),32字節(jié)等等,所以,在DMA跨頁讀寫測試以及實(shí)際應(yīng)用中,需要事先知道EEPROM型號,根據(jù)EEPROM型號確定分頁大小,這樣給測試及使用帶來不便。表1ATMEL的AT24CXX系列EEPROM資料EEPROM型號EEPROM大小分頁大小AT24C01IK8byteAT24C022K8byte<table>tableseeoriginaldocumentpage5</column></row><table>
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題就是提出一種自動識別EEPROM分頁大小及DMA方式寫EEPROM的方法,克服現(xiàn)有技術(shù)在DMA跨頁讀寫測試以及實(shí)際應(yīng)用中,需要事先知道EEPROM型號,再根據(jù)EEPROM型號確定分頁大小的問題,自動識別EEPROM分頁大小,加快芯片測試的周期。為了解決上述技術(shù)問題,本發(fā)明提供一種自動識別電可擦可編程只讀存儲器EEPROM分頁大小的方法,包括如下步驟(1)微處理器控制單元MCU讀寫EEPROM的地址點(diǎn),確定EEPROM的容量大?。?2)根據(jù)EEPROM的容量大小和該EEPROM分頁大小的對應(yīng)關(guān)系,識別出該EEPROM分頁大小。進(jìn)一步地,所述步驟(1)中,MCU讀寫EEPROM的地址點(diǎn)時(shí),把MCU設(shè)置在常規(guī)模式。進(jìn)一步地,所述步驟(1)中,MCU讀寫EEPROM的地址點(diǎn)為EEPROM的分界地址點(diǎn)。進(jìn)一步地,所述步驟(1)中,對不同EEPROM大小的分界地址點(diǎn)進(jìn)行寫才喿作,再讀這些地址點(diǎn),判斷返回值是否和寫入值一致,確定EEPROM大小。為了解決上述技術(shù)問題,本發(fā)明還提供一種存儲器直接存取DMA方式寫EEPROM的方法,其特征在于,包括如下步驟(A)MCU讀寫EEPROM的地址點(diǎn),確定EEPROM的容量大??;(B)根據(jù)EEPROM的容量大小和該EEPROM分頁大小的對應(yīng)關(guān)系,識別出該EEPROM分頁大??;(C)設(shè)置DMA寫操作的起始地址和長度,根據(jù)EEPROM分頁大小,進(jìn)行DMA方式寫EEPROM。進(jìn)一步地,所述步驟(A)中,MCU讀寫EEPROM的地址點(diǎn)時(shí),把MCU設(shè)置在常規(guī)模式。進(jìn)一步地,所述步驟(A)中,MCU讀寫EEPROM的地址點(diǎn)為EEPROM的分界地址點(diǎn)。進(jìn)一步地,所述步驟(A)中,對不同EEPROM大小的分界地址點(diǎn)進(jìn)行寫^喿作,再讀這些地址點(diǎn),判斷返回值是否和寫入值一致,確定EEPROM大小。進(jìn)一步地,所述步驟(C)包括如下步驟(CI)設(shè)置MCU工作在DMA模式,并設(shè)置DMA寫操作的起始地址和長度,判斷第一次讀寫的長度,進(jìn)行第一次DMA寫操作;(C2)判斷剩余需要寫入的長度是否小于一個(gè)分頁,若否,則執(zhí)行(C3),否則,執(zhí)行步驟(C4);(C3)更新起始地址,進(jìn)行一個(gè)分頁長度的DMA寫操作,返回執(zhí)行步驟(C2);(C4)進(jìn)行小于一個(gè)分頁長度的最后一次DMA寫操作。進(jìn)一步地,所述步驟(Cl)第一次DMA寫操作中,先判斷起始地址到下一個(gè)頁邊界的長度,以這個(gè)起始地址和長度進(jìn)行第一次DMA寫操作。在過去的DMA跨頁讀寫測試中,需要先知道EEPROM型號,然后再查詢分頁大小。在本發(fā)明中完全可以達(dá)到自動識別的目的,能夠達(dá)到快速判斷的效果,大大加快芯片測試的周期。圖1是本發(fā)明實(shí)施例的流程圖。具體實(shí)施方式通過查詢EEPROM特性可以看出,EEPROM的分頁大小和它的實(shí)際容量大小有對應(yīng)關(guān)系(正比)。例如ATMEL的AT24CXX系列的EEPROM,其512K(AT24C512)的EEPROM,分頁大小為128字節(jié),而128K(AT24C128),64K(AT24C064)的分頁大小就是64字節(jié),而最小的lk容量的(AT24C1),分頁大小僅僅為8字節(jié)(見表1),因此我們可以通過確定所連的EEPROM的容量大小,來確定其分頁的大小。然后通過進(jìn)行多次的DMA寫入,完成地址范圍4支大的跨頁DMA寫入。對于如何確定EEPROM的容量大小,可以利用MCU中的常規(guī)模式,對幾種EEPROM大小的分界地址點(diǎn)進(jìn)行寫操作,再讀這些地址點(diǎn),通過返回值是否和寫入值一致,就能確定EEPROM大小,再根據(jù)EEPROM大小和分頁大小的對應(yīng)關(guān)系,確定分頁大小。下面結(jié)合附圖及具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。如圖1所示,本發(fā)明實(shí)施例包^r如下步驟步驟IOI,把MCU設(shè)置在常規(guī)一莫式;步驟102,寫EEPROM大小的邊界,讀取返回值;例如,對于ATMEL的EEPROM,可以依次寫地址點(diǎn)0x200(對應(yīng)AT24C01,1K容量大小的分界地址點(diǎn)),0x400(對應(yīng)AT24C02,2K容量大小的分界地址點(diǎn)),0x400(對應(yīng)AT24C04,4K容量大小的分界地址點(diǎn))……0x40000(對應(yīng)AT24C512,512K容量大小的分界地址點(diǎn));步驟103,判斷讀取的返回值與寫入的值是否一致,若一致,則表示寫入了相應(yīng)的值,即寫入未超過其地址范圍,還需要進(jìn)一步判斷其容量,返回步驟102;若不一致,則表示沒有寫入相應(yīng)值,即寫入超過其地址范圍,可以判斷出該EEPROM容量,執(zhí)行下一步;在步驟102~103中,由于對于ATMEL的EEPROM,AT24C512具有最大容量(512K),如果判斷不是256K(AT24C256),那么一定是512K(AT24C512),所以最大只需寫分界地址點(diǎn)到0x20000(對應(yīng)AT24C256,256K容量大小的分界地址點(diǎn)),若寫入值與讀出值相同,即可判斷容量為512K;或者為保險(xiǎn)起見,可以寫512K的分界地址點(diǎn)0x3ffff,如果寫入值與讀出值相同,即可判斷容量為512K;步驟104,根據(jù)EEPROM大小和分頁大小的對應(yīng)關(guān)系,確定分頁大??;以上步-驟即可自動識別EEPROM分頁大小。步驟105,在后續(xù)的執(zhí)行DMA方式寫搡作時(shí),通過設(shè)置的DMA寫操作的起始地址和長度,判斷第一次讀寫的長度,保證以后的讀寫都是從分頁開始;設(shè)置MCU工作在DMA模式,進(jìn)行第一次DMA寫操作;其中,第一次DMA寫操作中,先判斷起始地址到下一個(gè)頁邊界的長度,以這個(gè)起始地址和長度進(jìn)行第一次DMA寫操作;步驟106,判斷剩余需要寫入的長度是否小于一個(gè)分頁,若否,則執(zhí)行步驟107,否則,^執(zhí)行步驟108;步驟107,更新起始地址,進(jìn)行一個(gè)分頁長度的DMA寫操作,返回執(zhí)行步驟106;步驟108,進(jìn)行小于一個(gè)分頁長度的最后一次DMA寫操作,結(jié)束本流程。本發(fā)明是以ATMEL的EEPROM為例,說明EEPROM大小和分頁大小的對應(yīng)關(guān)系,對于其它廠家的EEPROM,其對應(yīng)關(guān)系也類似,此處不再詳述。另外,本發(fā)明還可以有些變形,同樣可以自動識別EEPROM分頁大小比如從表l中可以看出,EEPROM大小為1K和2K時(shí),分頁大小都是8字節(jié),同樣,EEPROM大小為4K、8K、16K時(shí),分頁大小都是16字節(jié),等等,那么為了簡化步驟,可以只寫EEPROM大小2K的分界地址點(diǎn)、16K的分界地址點(diǎn)、64K的分界地址點(diǎn)等等,即可判斷EEPROM分頁大?。涣硗?,在上述實(shí)施例中,通過寫EEPROM分界地址點(diǎn)來判斷EEPROM大小,在其它實(shí)施例中,也可以通過寫EEPROM的其它地址點(diǎn),只要保i^能夠判斷EEPROM大小即可。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。權(quán)利要求1、一種自動識別電可擦可編程只讀存儲器EEPROM分頁大小的方法,其特征在于,包括如下步驟(1)微處理器控制單元MCU讀寫EEPROM的地址點(diǎn),確定EEPROM的容量大小;(2)根據(jù)EEPROM的容量大小和該EEPROM分頁大小的對應(yīng)關(guān)系,識別出該EEPROM分頁大小。2、如權(quán)利要求i所述的方法,其特征在于,所述步驟(1)中,MCU讀寫EEPROM的地址點(diǎn)時(shí),把MCU設(shè)置在常規(guī)模式。3、如權(quán)利要求l所述的方法,其特征在于,所述步驟(l)中,MCU讀寫EEPROM的地址點(diǎn)為EEPROM的分界地址點(diǎn)。4、如權(quán)利要求3所述的方法,其特征在于,所述步驟(l)中,對不同EEPROM大小的分界地址點(diǎn)進(jìn)行寫操作,再讀這些地址點(diǎn),判斷返回值是否和寫入值一致,確定EEPROM大小。5、一種存儲器直接存取DMA方式寫EEPROM的方法,其特征在于,包括如下步驟(A)MCU讀寫EEPROM的地址點(diǎn),確定EEPROM的容量大??;(B)根據(jù)EEPROM的容量大小和該EEPROM分頁大小的對應(yīng)關(guān)系,識別出該EEPROM分頁大??;(C)設(shè)置DMA寫操作的起始地址和長度,根據(jù)EEPROM分頁大小,進(jìn)行DMA方式寫EEPROM。6、如權(quán)利要求5所述的方法,其特征在于,所述步驟(A)中,MCU讀寫EEPROM的地址點(diǎn)時(shí),把MCU設(shè)置在常規(guī)模式。7、如權(quán)利要求5所述的方法,其特征在于,所述步驟(A)中,MCU讀寫EEPROM的地址點(diǎn)為EEPROM的分界地址點(diǎn)。8、如權(quán)利要求7所述的方法,其特征在于,所述步驟(A)中,對不同EEPROM大小的分界地址點(diǎn)進(jìn)行寫操作,再讀這些地址點(diǎn),判斷返回值是否和寫入值一致,確定EEPROM大小。9、如權(quán)利要求5所述的方法,其特征在于,所述步驟(C)包括如下步驟(Cl)設(shè)置MCU工作在DMA模式,并設(shè)置DMA寫操作的起始地址和長度,判斷第一次讀寫的長度,進(jìn)行第一次DMA寫操作;(C2)判斷剩余需要寫入的長度是否小于一個(gè)分頁,若否,則執(zhí)行(C3),否則,執(zhí)行步驟(C4);(C3)更新起始地址,進(jìn)行一個(gè)分頁長度的DMA寫操作,返回執(zhí)行步驟(C2);(C4)進(jìn)行小于一個(gè)分頁長度的最后一次DMA寫操作。10、如權(quán)利要求9所述的方法,其特征在于,所述步驟(Cl)第一次DMA寫操作中,先判斷起始地址到下一個(gè)頁邊界的長度,以這個(gè)起始地址和長度進(jìn)行第一次DMA寫操作。全文摘要本發(fā)明公開了一種自動識別電可擦可編程只讀存儲器EEPROM分頁大小的方法,包括微處理器控制單元MCU讀寫EEPROM的地址點(diǎn),確定EEPROM的容量大??;根據(jù)EEPROM的容量大小和該EEPROM分頁大小的對應(yīng)關(guān)系,識別出該EEPROM分頁大小。本發(fā)明還公開了一種存儲器直接存取DMA方式寫EEPROM的方法。本發(fā)明能夠自動識別EEPROM分頁大小,加快芯片測試的周期。文檔編號G11C29/48GK101246749SQ20081010276公開日2008年8月20日申請日期2008年3月26日優(yōu)先權(quán)日2008年3月26日發(fā)明者游明琦,蔣亞誠,韜謝申請人:北京中星微電子有限公司