2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MC9S08系列單片機(jī)FLASH存儲(chǔ)器的在線編程,2006年7月黃國鈞北京理工大學(xué)飛思卡爾單片機(jī)及汽車電子開放實(shí)驗(yàn)室(BFTC),在線編程的作用,1、在程序運(yùn)行過程中改變非易失存儲(chǔ)器Flash的數(shù)據(jù),可實(shí)現(xiàn)在線標(biāo)定。2、可重復(fù)擦寫十萬次以上3、掉電后數(shù)據(jù)仍然存在,用來保存一些參數(shù)或重要數(shù)據(jù),可靠性好。,Flash存儲(chǔ)器的兩種編程模式,1、寫入器模式,需要硬件支持,讓單片機(jī)進(jìn)入背景調(diào)試(BDM)狀態(tài),編程器常采用這種方式。

2、2、用戶模式,在用戶程序運(yùn)行的過程中對(duì)Flash進(jìn)行擦寫。我們需要的是用戶模式(例程見FlashProgram,內(nèi)有源代碼),與Flash相關(guān)的寄存器,1、HCS08系列MCU的Flash存儲(chǔ)器編程方式與HC08有很大差異2、S08與Flash相關(guān)的寄存器有6個(gè)3、普通08與Flash相關(guān)的寄存器只有2個(gè),Flash時(shí)鐘分頻寄存器 FCDIV,地址0x1820。第7位只讀,=1表示復(fù)位后FCDIV已被改寫,可以對(duì)Flash

3、進(jìn)行擦寫。第6位設(shè)置Flash分頻,=1時(shí)鐘為總線時(shí)鐘的1/8,=0Flash分頻器時(shí)鐘輸入就是總線時(shí)鐘。低5位設(shè)置Flash時(shí)鐘分頻器的分頻因子。例程中賦FCDIV=0x13,Flash選項(xiàng)寄存器,地址0x1821,F(xiàn)OPT和NVOPT主要設(shè)置后門鎖與保密性,將Flash加密FOPT只讀,NVOPT可寫,復(fù)位后MCU自動(dòng)將NVOPT的值給FOPT,地址0x1823只有第5位有定義,寫訪問鑰匙允許位,將Flash加密時(shí)用

4、例程中未使用,Flash配置寄存器 FCNFG,Flash保護(hù)寄存器,地址0x1824,F(xiàn)PROT與NVPROTFPROT只讀, NVPROT可寫,復(fù)位后MCU自動(dòng)將NVPROT的值給FPROT第1位Flash保護(hù)禁止位,=1Flash不保護(hù)前7位在FPDIS=0時(shí)設(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表示試圖對(duì)保護(hù)區(qū)域進(jìn)行擦寫操作。第4位訪問出錯(cuò)標(biāo)志位。第2位只讀,F(xiàn)lash空白標(biāo)志位,執(zhí)行空白檢測(cè)命令后有意義。,Flash命令寄存器 FCMD,地址0x1826,對(duì)Flash進(jìn)行訪問的命令字節(jié)0x05——空白檢測(cè)0x20——寫入一個(gè)字節(jié)的數(shù)據(jù)0x25——批量模式下寫入一個(gè)字節(jié)的數(shù)據(jù)0x40——頁擦除0x45——整體擦除,Flash編程的步驟,1、初始化,設(shè)置Flash時(shí)鐘,復(fù)位后

6、FCDIV_DIVLD =1才可對(duì)Flash擦寫2、清除錯(cuò)誤標(biāo)識(shí)為,只有FSTAT_FACCERR=0才能繼續(xù)對(duì)Flash操作。3、等待Flash命令緩沖區(qū)空,直到FSTAT_FCBEF=1可以寫入新的命令。4、向Flash地址寫入數(shù)據(jù)。5、向FCMD中寫入命令字。6、檢測(cè)錯(cuò)誤信息,F(xiàn)STAT的FPVIOL與FACCERR7、Flash命令完成標(biāo)志,F(xiàn)STAT_FCCF=1結(jié)束,需要注意的問題,1、擦寫過程的時(shí)序不能有錯(cuò)誤

7、2、在擦寫前確保芯片F(xiàn)lash區(qū)域沒有被保護(hù)3、在擦寫過程中Flash區(qū)域被加高電壓,這時(shí)候?qū)lash區(qū)域數(shù)據(jù)的讀寫不穩(wěn)定,所以擦寫程序不能在Flash區(qū)域中運(yùn)行,必須在RAM中運(yùn)行擦寫程序,1、程序?qū)懞弥蟊仨毾螺d到單片機(jī)存儲(chǔ)器中才能運(yùn)行。2、我們通常使用的編程器是將程序下載到Flash中,然后運(yùn)行。3、在Flash擦下過程中必須把擦寫程序放到RAM中運(yùn)行,主程序必須設(shè)法將擦寫程序移動(dòng)到RAM中,然后在RAM中運(yùn)行。,HCS0

8、8AW32的地址分配,所有的地址統(tǒng)一編排,0000-FFFF0000-006F、直接頁寄存器,通常放與基本功能,I/O口相關(guān)的寄存器0070-086F、RAM,共2K1800-185F、高端寄存器,一些特殊功能的寄存器8000-FFFF、非易失存儲(chǔ)器Flash,共32k,通常用戶程序就放在這里其余未定義,若訪問則會(huì)出錯(cuò),void FlashWrite(byte i_write); //Flash寫入子函數(shù)向Flash指定位置

9、寫入一個(gè)數(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)用上面的四個(gè)程序,Flash擦寫例程基本框架,把擦寫程序放到RAM中運(yùn)行,程序在運(yùn)行過程中必須把

10、擦寫程序(FlashErase,與FlashWrite)放到RAM中然后運(yùn)行采用函數(shù)指針,一個(gè)指向擦寫程序,另外一個(gè)指向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ù)指針前一個(gè)指向擦除函數(shù),后一個(gè)指向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子程序占有的程序空間,通過查看項(xiàng)目文件夾的.map文件通過函數(shù)指針調(diào)用RAM中的擦除程序(*pointE_fun_temp();//在RAM中運(yùn)行擦除程序,查看擦除子程序的存儲(chǔ)空間,編譯及運(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個(gè)發(fā)光二極管以供顯示結(jié)合AD采集,將采來的數(shù)寫入Flash,并通過這個(gè)Flash地址的數(shù)據(jù)控制小燈的閃亮,程序運(yùn)行的基本過程,所有燈熄滅讀取指定Flash地

14、址的數(shù)據(jù),并用這個(gè)控制小燈的閃亮閃亮持續(xù)幾秒,所有燈滅,開始AD采集將AD采集的指寫入Flash(控制小燈閃亮的就是這個(gè)地址)無限循環(huán),AD采集并根據(jù)采來的值控制小燈顯示,程序結(jié)束所以在程序下一次運(yùn)行的時(shí)候小燈持續(xù)閃亮就是根據(jù)這次寫入Flash的數(shù)據(jù),掉點(diǎn)后數(shù)據(jù)依然存在,附:AD采集基本操作,S08與AD相關(guān)的寄存器有10個(gè),支持28路AD,與AD相關(guān)的I/O口有16個(gè),還可以設(shè)置比較函數(shù)可選擇8位或10位的AD采集,選擇10

15、位采集相應(yīng)寄存器高8位的后兩位才有意義這里使用最基本的操作,查詢方式采集,代碼如下,附: AD基本操作源代碼,AD1CFG=0x00;//8位AD采集,使用系統(tǒng)時(shí)鐘 AD1SC2=0x00;APCTL1=0x00;//AD0-7作為模擬信號(hào)輸入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采集時(shí)高位無效AD1CV—AD比較值寄存器,由高位AD1CVH與低位AD1CVL, 8位AD采集時(shí)高位無效AD1CFG —AD配置寄存器,設(shè)置AD采集的模式,比如8位或10位采集,AD時(shí)鐘等APCTL1 ,APCTL2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論