版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MC9S08系列單片機(jī)FLASH存儲器的在線編程,2006年7月黃國鈞北京理工大學(xué)飛思卡爾單片機(jī)及汽車電子開放實驗室(BFTC),在線編程的作用,1、在程序運(yùn)行過程中改變非易失存儲器Flash的數(shù)據(jù),可實現(xiàn)在線標(biāo)定。2、可重復(fù)擦寫十萬次以上3、掉電后數(shù)據(jù)仍然存在,用來保存一些參數(shù)或重要數(shù)據(jù),可靠性好。,Flash存儲器的兩種編程模式,1、寫入器模式,需要硬件支持,讓單片機(jī)進(jìn)入背景調(diào)試(BDM)狀態(tài),編程器常采用這種方式。
2、2、用戶模式,在用戶程序運(yùn)行的過程中對Flash進(jìn)行擦寫。我們需要的是用戶模式(例程見FlashProgram,內(nèi)有源代碼),與Flash相關(guān)的寄存器,1、HCS08系列MCU的Flash存儲器編程方式與HC08有很大差異2、S08與Flash相關(guān)的寄存器有6個3、普通08與Flash相關(guān)的寄存器只有2個,Flash時鐘分頻寄存器 FCDIV,地址0x1820。第7位只讀,=1表示復(fù)位后FCDIV已被改寫,可以對Flash
3、進(jìn)行擦寫。第6位設(shè)置Flash分頻,=1時鐘為總線時鐘的1/8,=0Flash分頻器時鐘輸入就是總線時鐘。低5位設(shè)置Flash時鐘分頻器的分頻因子。例程中賦FCDIV=0x13,Flash選項寄存器,地址0x1821,F(xiàn)OPT和NVOPT主要設(shè)置后門鎖與保密性,將Flash加密FOPT只讀,NVOPT可寫,復(fù)位后MCU自動將NVOPT的值給FOPT,地址0x1823只有第5位有定義,寫訪問鑰匙允許位,將Flash加密時用
4、例程中未使用,Flash配置寄存器 FCNFG,Flash保護(hù)寄存器,地址0x1824,F(xiàn)PROT與NVPROTFPROT只讀, NVPROT可寫,復(fù)位后MCU自動將NVPROT的值給FPROT第1位Flash保護(hù)禁止位,=1Flash不保護(hù)前7位在FPDIS=0時設(shè)置保護(hù)的區(qū)域,Flash狀態(tài)寄存器 FSTAT,地址0x1825,使用最頻繁第7位,F(xiàn)lash命令緩沖區(qū)空標(biāo)志位,=1可以接受新命令。第6位只讀,F(xiàn)lash命令
5、完成標(biāo)志位第5位侵害保護(hù)標(biāo)志位,=1表示試圖對保護(hù)區(qū)域進(jìn)行擦寫操作。第4位訪問出錯標(biāo)志位。第2位只讀,F(xiàn)lash空白標(biāo)志位,執(zhí)行空白檢測命令后有意義。,Flash命令寄存器 FCMD,地址0x1826,對Flash進(jìn)行訪問的命令字節(jié)0x05——空白檢測0x20——寫入一個字節(jié)的數(shù)據(jù)0x25——批量模式下寫入一個字節(jié)的數(shù)據(jù)0x40——頁擦除0x45——整體擦除,Flash編程的步驟,1、初始化,設(shè)置Flash時鐘,復(fù)位后
6、FCDIV_DIVLD =1才可對Flash擦寫2、清除錯誤標(biāo)識為,只有FSTAT_FACCERR=0才能繼續(xù)對Flash操作。3、等待Flash命令緩沖區(qū)空,直到FSTAT_FCBEF=1可以寫入新的命令。4、向Flash地址寫入數(shù)據(jù)。5、向FCMD中寫入命令字。6、檢測錯誤信息,F(xiàn)STAT的FPVIOL與FACCERR7、Flash命令完成標(biāo)志,F(xiàn)STAT_FCCF=1結(jié)束,需要注意的問題,1、擦寫過程的時序不能有錯誤
7、2、在擦寫前確保芯片F(xiàn)lash區(qū)域沒有被保護(hù)3、在擦寫過程中Flash區(qū)域被加高電壓,這時候?qū)lash區(qū)域數(shù)據(jù)的讀寫不穩(wěn)定,所以擦寫程序不能在Flash區(qū)域中運(yùn)行,必須在RAM中運(yùn)行擦寫程序,1、程序?qū)懞弥蟊仨毾螺d到單片機(jī)存儲器中才能運(yùn)行。2、我們通常使用的編程器是將程序下載到Flash中,然后運(yùn)行。3、在Flash擦下過程中必須把擦寫程序放到RAM中運(yùn)行,主程序必須設(shè)法將擦寫程序移動到RAM中,然后在RAM中運(yùn)行。,HCS0
8、8AW32的地址分配,所有的地址統(tǒng)一編排,0000-FFFF0000-006F、直接頁寄存器,通常放與基本功能,I/O口相關(guān)的寄存器0070-086F、RAM,共2K1800-185F、高端寄存器,一些特殊功能的寄存器8000-FFFF、非易失存儲器Flash,共32k,通常用戶程序就放在這里其余未定義,若訪問則會出錯,void FlashWrite(byte i_write); //Flash寫入子函數(shù)向Flash指定位置
9、寫入一個數(shù)i_writevoid FlashErase(void); // F lash 擦除子函數(shù),擦除Flash指定位置的數(shù)據(jù)void Delay_ms(int Time); //延遲函數(shù),延遲Time毫秒void Delay_us(int Time); //延遲函數(shù),延遲Time微秒void main(void) //主程序,調(diào)用上面的四個程序,Flash擦寫例程基本框架,把擦寫程序放到RAM中運(yùn)行,程序在運(yùn)行過程中必須把
10、擦寫程序(FlashErase,與FlashWrite)放到RAM中然后運(yùn)行采用函數(shù)指針,一個指向擦寫程序,另外一個指向RAM中地址將Flash擦寫函數(shù)數(shù)據(jù)復(fù)制到RAM中通過函數(shù)指針在調(diào)用RAM中的擦寫程序,復(fù)制擦除程序到RAM中并運(yùn)行的基本代碼,定義函數(shù)指針byte (*pointE_fun)(),(*pointE_fun_temp)();注意函數(shù)指針不能加減,定義指向他們地址的指針來達(dá)到復(fù)制程序的作用byte *poin
11、tE_add,*pointE_add_temp;函數(shù)指針前一個指向擦除函數(shù),后一個指向RAM中可以使用的地址,地址指針也一樣pointW_fun=FlashWrite;pointW_add=pointW_fun;pointW_add_temp=(byte*)0x0250;pointW_fun_temp=pointW_add_temp;,復(fù)制擦除程序到RAM中并運(yùn)行的基本代碼,將擦除子程序復(fù)制到RAM中for(i=0;i<
12、;=n_Erase;i++) { *(pointE_add_temp+i)=*(pointE_add+i); }此處n_Erase的具體值得看后面的FlashErase子程序占有的程序空間,通過查看項目文件夾的.map文件通過函數(shù)指針調(diào)用RAM中的擦除程序(*pointE_fun_temp();//在RAM中運(yùn)行擦除程序,查看擦除子程序的存儲空間,編譯及運(yùn)行,擦除程序的基本操作如上,F(xiàn)lash寫入的基本步驟與之完全一樣若
13、Flash區(qū)域非空白,則需要擦除以后才能寫入Flash擦寫程序在運(yùn)行過程中通過BDM模式無法在線調(diào)試,只有在編譯無誤后到下載到MCU中直接運(yùn)行即可,關(guān)于例程(FlashProgram),使用自己開發(fā)的S08最小系統(tǒng)(MC9S08AW32),所有的管腳都引出,其中PTA口帶有8個發(fā)光二極管以供顯示結(jié)合AD采集,將采來的數(shù)寫入Flash,并通過這個Flash地址的數(shù)據(jù)控制小燈的閃亮,程序運(yùn)行的基本過程,所有燈熄滅讀取指定Flash地
14、址的數(shù)據(jù),并用這個控制小燈的閃亮閃亮持續(xù)幾秒,所有燈滅,開始AD采集將AD采集的指寫入Flash(控制小燈閃亮的就是這個地址)無限循環(huán),AD采集并根據(jù)采來的值控制小燈顯示,程序結(jié)束所以在程序下一次運(yùn)行的時候小燈持續(xù)閃亮就是根據(jù)這次寫入Flash的數(shù)據(jù),掉點后數(shù)據(jù)依然存在,附:AD采集基本操作,S08與AD相關(guān)的寄存器有10個,支持28路AD,與AD相關(guān)的I/O口有16個,還可以設(shè)置比較函數(shù)可選擇8位或10位的AD采集,選擇10
15、位采集相應(yīng)寄存器高8位的后兩位才有意義這里使用最基本的操作,查詢方式采集,代碼如下,附: AD基本操作源代碼,AD1CFG=0x00;//8位AD采集,使用系統(tǒng)時鐘 AD1SC2=0x00;APCTL1=0x00;//AD0-7作為模擬信號輸入AD1SC1=0x21; //AD中斷禁止,從通道1采集,連續(xù)采集while(AD1SC1_COCO==0){ ;}//查詢AD轉(zhuǎn)換標(biāo)志位,沒有則等待 a=AD1RL;//將A
16、D采來的值賦給a,附: AD寄存器基本說明,AD1SC1—AD狀態(tài)與控制寄存器1,基本控制AD1SC2 —AD狀態(tài)與控制寄存器2,比較函數(shù)控制AD1R—AD數(shù)據(jù)寄存器,由高位AD1RH與低位AD1RL,8位AD采集時高位無效AD1CV—AD比較值寄存器,由高位AD1CVH與低位AD1CVL, 8位AD采集時高位無效AD1CFG —AD配置寄存器,設(shè)置AD采集的模式,比如8位或10位采集,AD時鐘等APCTL1 ,APCTL2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- MC9S08系列MCU的背景調(diào)試方式的研究與開發(fā).pdf
- mcs-51單片機(jī)存儲器結(jié)構(gòu)
- 第8章at89s51單片機(jī)外部存儲器的擴(kuò)展
- 基于Freescale MC9S12系列單片機(jī)開發(fā)板的設(shè)計.pdf
- MC9S12系列單片機(jī)程序下載系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于51單片機(jī)系統(tǒng)外置存儲器字庫系統(tǒng)的設(shè)計
- 外文翻譯--帶有只讀存儲器的單片機(jī)集成電路
- 外文翻譯---帶有只讀存儲器的單片機(jī)集成電路
- 單片機(jī)課程設(shè)計-iic總線式eeprom存儲器應(yīng)用設(shè)計
- 無線單片機(jī)flash燒錄器的設(shè)計
- 使用niosⅱide對flash存儲器編程的步驟啟動niosiiide。建立軟件
- 單片機(jī)編程
- 基于單片機(jī)MC9S12控制的固態(tài)軟起動器研究.pdf
- 基于FPGA的Flash存儲器測試系統(tǒng).pdf
- 基于mc9s12單片機(jī)和cpld的低壓鑄造控制器設(shè)計
- 基于Motorola MC68HC08系列單片機(jī)演示系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 27c系列存儲器
- 27c系列存儲器
- 用于Flash存儲器的電荷泵研究.pdf
- Flash存儲器總劑量效應(yīng)研究.pdf
評論
0/150
提交評論