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