MC68HC908GP32 MCU的Flash存儲器在線編程技術(shù)
MC68HC908GP32 MCU的Flash存儲器在線編程技術(shù)
存儲器技術(shù)的發(fā)展對計算機(jī)技術(shù)的發(fā)展起到了極大的推動作用。理想的存儲器應(yīng)該具備存取速度快、不易失、存儲密度高、價格低等特點(diǎn)。一般的存儲器具有這些特點(diǎn)中的一個或幾個。
近幾年Flash存儲器(閃速存儲器)技術(shù)趨于成熟,是目前比較理想的存儲器。閃速存儲器具有電可擦除、無需后備電源來保護(hù)數(shù)據(jù)、可在線編程、存儲密度高、低功耗、成本較低等特點(diǎn)。而這些特點(diǎn),正式單片機(jī)所期望的,但早期引入片內(nèi)Flash技術(shù)的單片機(jī),在可靠性和穩(wěn)定性方面仍有一些不足。隨著Flash技術(shù)的成熟,目前,許多單片機(jī)內(nèi)部集成了Flash存儲器。Motorola公司在Flash技術(shù)相當(dāng)成熟的時候推出了片內(nèi)集成Flash存儲器的8位單片機(jī),該單片機(jī)的Flash存儲器具有以下特點(diǎn):
1、編程速度快及可靠性高
Motorola M68HC08系列單片機(jī)的片內(nèi)Flash的整體擦除時間可以控制在5ms以內(nèi),對單字節(jié)的編程時間在40ns以內(nèi)。片內(nèi)Flash的存儲數(shù)據(jù)可以保持10年以上,可擦寫次數(shù)在1萬次以上。
2、單一電源電壓供電
一般的Flash存儲器,在正常的只讀情況下,只需要用戶為其提供普通的工作電壓即可,而要對其寫入(編程),則需要同時提供高于正常工作電壓的編程電壓。但是,Motorola M68HC08系列單片機(jī)通過在片內(nèi)集成電荷泵,可由單一工作電壓在片內(nèi)產(chǎn)生出編程電壓。這樣,可實(shí)現(xiàn)單一電源供電的在線編程,而不需要為Flash的編程在目標(biāo)板上增加多余的硬件模塊。正因為Flash的讀寫電壓要求不同,一些公司的內(nèi)置Flash存儲器便放棄了在線擦除寫入功能,而僅有通過編程器的寫入功能。
3、支持在線編程
Motorola M68HC08系列單片機(jī)的片內(nèi)Flash支持在線編程(In-Circuit Program),允許單片機(jī)內(nèi)部運(yùn)行的程序去改寫Flash存儲器內(nèi)容,這樣可以代替外部電可擦除存儲芯片,減少外圍部件,增加了嵌入式系統(tǒng)開發(fā)的方便性。
基于這些特點(diǎn),掌握Motorola M68HC08系列單片機(jī)的Flash存儲器的編程技術(shù),充分利用Motorola M68HC08系列單片機(jī)Flash存儲器的功能,對基于Motorola M68HC08系列單片機(jī)的嵌入式系統(tǒng)的開發(fā)是十分必要的。但是,與一般程序相比,F(xiàn)lash存儲器的編程技術(shù)相對比較復(fù)雜,有一些特殊之處,本文在實(shí)際應(yīng)用基礎(chǔ)上,總結(jié)Motorola的 MC68HC908GP32單片機(jī)的Flash在線編程方法,給出編程實(shí)例,分析其中的技術(shù)難點(diǎn)。
二、MC68HC908GP32閃速存儲器在線編程要點(diǎn)
1、閃速存儲器的編程寄存器與編程步驟概述
在MC68HC908GP32單片機(jī)中,與Flash編程有關(guān)的寄存器有2個,它們是Flash控制寄存器(FLCR)和Flash塊保護(hù)寄存器(FLBPR)。FLCR 高4位未定義,低4位分別為HVEN位-高壓允許位(High-Voltage Enable Bit)、MASS位-整體擦除控制位(Mass -Erase Control Bit)、ERASE位-擦除控制位(Erase Control Bit)、PGM位-編程(寫入)控制位(Program Control Bit)。FLBPR的內(nèi)容為Flash保護(hù)區(qū)域的起始地址的14~7位,保護(hù)區(qū)域的起始地址的最高位始終為1,而保護(hù)區(qū)域的起始地址的低7位(位6~0)始終為0。這兩個寄存器的具體含義與用法,在參考文獻(xiàn)[1]~[3]均可查到。
在M68HC08系列單片機(jī)中,對Flash進(jìn)行擦除或?qū)懭氩僮餍枰裱欢ǖ臅r序和步驟。對于整個M68HC908系列的各個型號,這些步驟是一樣的,但時序要求可能略有不同,針對具體型號的Flash進(jìn)行編程時應(yīng)參考相應(yīng)的芯片手冊。同時需要注意的是,一些型號的監(jiān)控ROM內(nèi)含有Flash編程子程序,用戶可直接調(diào)用,例如MC68HC908JL3,有的型號則沒有,例如MC68HC908GP32,這種情況需自行編制子程序。這里以MC68HC908GP32的擦除一頁(128B)Flash為例說明基本操作過程。步驟如下:
⑴ $2→FLCR(1→ERASE位,0→MASS位):進(jìn)行頁面擦除;
⑵ 讀Flash塊保護(hù)寄存器FLBPR;
⑶ 向被擦除的Flash頁內(nèi)任意一個地址寫入任意值,為方便起見,一般向待擦除頁首地址寫入0;
⑷ 延時tnvs(>10μs),;
⑸ $A→FLCR(1→HVEN位);
⑹ 延時terase(>1ms);
⑺ $8→FLCR(0→ERASE位);
⑻ 延時tnvh(>5μs);
⑼ $0→FLCR(0→HVEN位);
⑽ 延時trcv(>1μs),完成一頁的擦除操作。
另外,F(xiàn)lash編程的基本操作還有“整體擦除操作"、“寫入(編程)操作"。整體擦除操作用于擦除GP32的整個Flash區(qū)域, 寫入(編程)操作用于以行(64字節(jié))為單位對擦除過的Flash區(qū)域進(jìn)行寫入。鑒于Flash編程的兩個寄存器的具體含義與用法及基本編程步驟在參考文獻(xiàn)[1]~[3]均可查到,限于篇幅,本文略。下面給出可供讀者直接使用的MC68HC908GP32的Flash存儲器編程子程序。