在HC08系列單片機中,對Flash進行擦除或寫入操作需要遵循壹定的時序和步驟。對於整個MC68HC908系列的各個型號,這些步驟是壹樣的,但時序要求可能略有不同,針對具體型號的Flash進行編程時應參考相應的芯片手冊。同時需要註意的是,壹些型號的監控ROM內含有Flash編程子程序,用戶可直接調用,例如MC68HC908JL3;有的型號則沒有,例如MC908GP32,這種情況需自行編制子程序。下面介紹MC908GP32的Flash編程的基本操作。 下面過程可以擦除GP32的Flash存儲器的壹頁(128字節):
①$2→FLCR(1→ERASE位,0→MASS位):進行頁面擦除。
②讀Flash塊保護寄存器FLBPR。
③向被擦除的Flash頁內任意壹個地址寫入任意值,為方便起見,壹般向待擦除頁首地址寫入0。
④延時tnvs(>10?s)。
⑤$A→FLCR(1→HVEN位)。
⑥延時terase(>1ms)。
⑦$8→FLCR(0→ERASE位)。
⑧延時tnvh(>5?s)。
⑨$0→FLCR(0→HVEN位)。
⑩延時trcv(>1?s),完成壹頁的擦除操作。 下面過程擦除GP32的整個Flash區域,以便把新的程序裝入Flash存儲器,這是應用系統研制過程中開發工具對GP32編程的準備工作。
①$6→FLCR(1→ERASE位,1→MASS位):進行整體擦除。
②讀Flash塊保護寄存器FLBPR。
③向被擦除的Flash任意壹個地址寫入任意值,為方便起見,壹般向首地址寫入0。
④延時tnvs(>10?s)。
⑤$E→FLCR(1→HVEN位、MASS位、ERASE位)。
⑥延時tMerase(>4ms)。
⑦$C→FLCR(0→ERASE位)。
⑧延時tnvhl(>100?s)。
⑨$0→FLCR(0→HVEN位、MASS位)。
⑩延時trcv(>1?s),完成整體擦除操作。 MC908GP32的Flash編程操作以行(64字節)為單位進行的。當然,壹次寫入可以小於壹行,但不能大於壹行。對於已經寫過的部分,未經擦除不能重新寫入變更其數據,否則將引起數據出錯。寫入過程如下:
①$1→FLCR(1→PGM位)。
②讀Flash塊保護寄存器FLBPR。
③向將要寫入的Flash行內任意壹個地址寫入任意值,為方便起見,壹般向行首地址寫入0,這壹步選定了所要編程的行,以下的目標地址必須在這壹行中。
④先延時tnvs(>10?s);再將$9→FLCR(1→HVEN位)。
⑤先延時tpgs(>5?s);再將待寫數據寫入對應的Flash地址。
⑥延時tprog(>30?s),完成壹個字節的寫入(編程)工作。
⑦重復⑤、⑥,直至同壹行內各字節寫入完畢。
⑧$8→FLCR(0→PGM位)。
⑨先延時tnvh(>5?s);再將$0→FLCR(0→HVEN位)。
⑩延時trcv(>1?s)以後,完成本行寫入工作,可以讀出校驗。