




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 3.11 Flash編程主要內(nèi)容 嵌入式系統(tǒng)中存儲(chǔ)器介紹 嵌入式系統(tǒng)中常用存儲(chǔ)器分類 Flash 存儲(chǔ)器介紹 變量的物理存儲(chǔ) MSP430存儲(chǔ)器介紹 Flash 存儲(chǔ)器讀寫操作 Flash 存儲(chǔ)器分段結(jié)構(gòu) Flash 存儲(chǔ)器寄存器嵌入式系統(tǒng)中常用存儲(chǔ)器分類RAM 存儲(chǔ)器掉電后數(shù)據(jù)丟失靜態(tài)RAM(SRAM)動(dòng)態(tài)RAM(DRAM)ROM 存儲(chǔ)器掉電后數(shù)據(jù)不會(huì)丟失PROMEPROMEEPROMFlash存儲(chǔ)器電擦寫、讀寫速度快,掉電后數(shù)據(jù)不會(huì)丟失NandFlashNorFlashFlash特點(diǎn)在對(duì)Flash存儲(chǔ)器進(jìn)行寫操作時(shí),可以以字節(jié)或字為單位進(jìn)行寫操作,但對(duì)Flash存儲(chǔ)器進(jìn)行擦除操作時(shí),必須
2、以段為單位進(jìn)行擦除。換句話說(shuō),即使要改變存儲(chǔ)器中某個(gè)地址處的字節(jié)內(nèi)容,也必須首先將該字節(jié)所在的段先擦除,然后再將該地址的字節(jié)內(nèi)容寫入,由于擦除操作會(huì)擦掉整段的內(nèi)容,所以建議將有用的內(nèi)容先保存到RAM中,然后再進(jìn)行擦除操作。擦除后Flash存儲(chǔ)器的值為邏輯1。每一位可以單獨(dú)通過(guò)編程,從1變到0,但是要將其重新編程從0到1需要擦除操作。 變量的物理存儲(chǔ) 全局變量或常量放在Flash里,局部變量放在RAM區(qū)域中,程序段放在flash中,程序開(kāi)始運(yùn)行時(shí),放到RAM中運(yùn)行,從flash的主存儲(chǔ)區(qū)第一段開(kāi)放存放程序和全局變量,這個(gè)存放位置是可以設(shè)定的,所以想利用Flash空間進(jìn)行讀寫時(shí),必須繞開(kāi)操作程序存
3、儲(chǔ)段。MSP430 Flash存儲(chǔ)器特征 內(nèi)部的編程電壓發(fā)生器 可字節(jié)、字(2個(gè)字節(jié))、 長(zhǎng)字(4個(gè)字節(jié))編程 超低功耗運(yùn)作 段擦除、扇區(qū)擦除和全部擦除 邊沿0、邊沿1讀模式 在程序運(yùn)行時(shí)對(duì)別的塊進(jìn)行擦除操作。 FLASH模塊邏輯圖模塊邏輯圖FLASH結(jié)構(gòu) Flash存儲(chǔ)器分為主存儲(chǔ)區(qū)、信息存儲(chǔ)區(qū)和引導(dǎo)加載存儲(chǔ)器(BSL)。 每個(gè)主存儲(chǔ)區(qū)段大小為512 個(gè)字節(jié)。 有四個(gè)信息存儲(chǔ)段,A到D。每個(gè)信息存儲(chǔ)段包含128個(gè)字節(jié),并且可以單獨(dú)擦除。 引導(dǎo)加載存儲(chǔ)器(BSL)包含4個(gè)段,A到D。每個(gè)引導(dǎo)加載段有512個(gè)字節(jié),并且可以單獨(dú)擦除。通過(guò)引導(dǎo)加載程序(BSL)對(duì)FLASH存儲(chǔ)器編程 每個(gè)MSP43
4、0 Flash型芯片都包含一個(gè)引導(dǎo)加載區(qū)(BSL)。BSL允許用戶使 用UART串行接口對(duì)Flash存儲(chǔ)器或RAM進(jìn)行讀取或編程操作。用戶自定義的 256 位口令可以保護(hù)通過(guò)BSL對(duì)Flash 存儲(chǔ)器的訪問(wèn)。MSP430F663x系列單片機(jī)的存儲(chǔ)器結(jié)構(gòu)圖Flash特性 (1/2) Flash存儲(chǔ)器通過(guò)BLKWRT,WRT,MERAS和ERASE 位選擇寫入/擦除模式: 字節(jié)/字/長(zhǎng)字(32位)寫入 塊寫入 段擦除 扇區(qū)擦除(針對(duì)主存儲(chǔ)區(qū)) 主存擦除(所有的主存儲(chǔ)扇區(qū)) 當(dāng)擦除扇區(qū)時(shí)讀(除了從當(dāng)前的扇區(qū)讀) Flash特性 (2/2)MERASERASE擦除模式 0 1 段擦除 10空寫地址選擇
5、的扇區(qū)擦除(一個(gè)扇區(qū)) 11主存擦除(所有的存儲(chǔ)扇區(qū),信息存儲(chǔ)區(qū)A到D以及引導(dǎo)裝載段A到D不被擦除) 從Flash存儲(chǔ)區(qū)啟動(dòng)擦除操作 從RAM區(qū)啟動(dòng)擦除操作 Flash存儲(chǔ)器寫操作 可以通過(guò)WRT和BLKWRT位來(lái)選擇寫模式從FLASH存儲(chǔ)器中啟動(dòng)字/字節(jié)寫入從RAM區(qū)中啟動(dòng)字/字節(jié)寫入從FLASH存儲(chǔ)器中啟動(dòng)長(zhǎng)字寫入 從RAM區(qū)啟動(dòng)長(zhǎng)字寫入Flash存儲(chǔ)寄存器寄存器名稱縮寫訪問(wèn)初始狀態(tài)偏移地址Flash存儲(chǔ)控制寄存器1 FCTL1讀/寫9600h0000hFlash存儲(chǔ)控制寄存器3FCTL3讀/寫9658h0004hFlash存儲(chǔ)控制寄存器4FCTL4 讀/寫9600h0006h中斷使能1
6、IE1 讀/寫0000h000Ah中斷標(biāo)志1IFG1 讀/寫0000h 000Ch MSP430F5xx6xx系列單片機(jī)的Flash存儲(chǔ)寄存器如下表所列?;刂房梢栽诰唧w芯片的數(shù)據(jù)手冊(cè)里面找到,下表給出偏移地址。 配置和訪問(wèn)Flash存儲(chǔ)控制器 FCTLx寄存器是一個(gè)16位的,具有密碼保護(hù)的讀/寫寄存器。讀或?qū)懺L問(wèn)時(shí)必須使用字指令,寫操作時(shí)高字節(jié)內(nèi)必須包括寫入密碼0A5h。對(duì)任何FCTLx寄存器寫入0A5h以外的其他值,將引起密鑰錯(cuò)誤,KEYV標(biāo)志將置位,產(chǎn)生一個(gè)PUC系統(tǒng)復(fù)位。讀取任何FCTLx寄存器高字節(jié)的結(jié)果為096h。 在擦除或字節(jié)/字/雙字寫入操作期間,對(duì)FCTL1的寫操作都是非法操
7、作,ACCVIFG將置位。在塊寫入模式下,WAIT = 1 時(shí),允許對(duì)FCTL1進(jìn)行寫操作,但是當(dāng)WAIT = 0 時(shí),對(duì)FCTL1的寫操作為非法操作,ACCVIFG置位。 當(dāng)BUSY = 1 時(shí),對(duì)FCTL2的任何寫入操作是非法操作。 當(dāng)BUSY = 1 時(shí),可以讀FCTLx寄存器。讀操作不會(huì)產(chǎn)生非法訪問(wèn)。 寫入或者擦除期間訪問(wèn)Flash存儲(chǔ)器 當(dāng)BUSY = 1時(shí),從RAM區(qū)啟動(dòng)寫入或擦除操作,CPU可能不會(huì)在任何Flash 位置進(jìn)行寫操作。否則,將發(fā)生非法訪問(wèn),ACCVIFG位置位,結(jié)果不可預(yù)料。 當(dāng)寫操作從Flash存儲(chǔ)器內(nèi)啟動(dòng)時(shí),在寫周期完成后(BUSY = 0),CPU將繼續(xù)取下一
8、指令。 當(dāng)寫操作完成且BUSY = 0 時(shí),F(xiàn)lash控制器才允許CPU取出操作代碼,繼續(xù)執(zhí)行代碼。位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 0 1 字節(jié)/字寫 1 0 長(zhǎng)字寫 1 1 長(zhǎng)字塊寫 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 智能寫位。假如該位置位,編程時(shí)間會(huì)縮短了。
9、編程質(zhì)量必須由邊沿讀模式檢查確認(rèn)。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 沒(méi)有擦除操作 0 0 段擦除 0 1 扇區(qū)擦除 1 0 全部擦除(包括主FLASH和信息段) 1 1 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY鎖信息A段。對(duì)該位寫1能改變?cè)撐粻顟B(tài)。寫0無(wú)效。 0
10、 信息A、B、C、D、被解鎖。 1 信息A段被寫保護(hù)。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY0 解鎖 1 鎖定鎖。該位對(duì)FLASH的寫和擦除操作進(jìn)行解鎖。該位可以字/字節(jié)寫的任意時(shí)刻置位。在快寫模式中,當(dāng)BLKWRT=WAIT=1,LOCK置位的話,BLKWRT和WAIT會(huì)立即復(fù)位,該模式正常終止。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器3 (FCTL3)位76
11、543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY 非法訪問(wèn)中斷標(biāo)志 1 沒(méi)有中斷產(chǎn)生 2 中斷產(chǎn)生 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY FCTLx密碼寫入正確 0 FCTLx密碼寫入不正確 1 Flash安全鍵值出錯(cuò)。該位指示了一個(gè)不正確的FCTLx安全鍵值被寫入到flash控制寄存器中,KEYV會(huì)置位。并觸發(fā)PUC。KEYV位必須被軟件復(fù)位。 位1514131211109 8功能FRKE
12、Y 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY 不忙 0 忙 1 忙標(biāo)志位。該位指示是否Flash正忙于當(dāng)前的擦除或者編程。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 信息段鎖定。如果該位置位,信息存儲(chǔ)區(qū)不能在段擦除模式下擦除,也不能夠被寫入。位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLAS
13、H控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 0 邊沿1讀模式禁止 1 邊沿1讀模式使能 邊沿讀1模式。該位使能邊沿讀1模式。僅僅當(dāng)從Flash存儲(chǔ)區(qū)讀時(shí),邊沿讀1位才是有效的。在存取周期內(nèi),邊沿模式自動(dòng)關(guān)閉。如果MRG1和MRG0都置位,則MRG1有效MRG0被忽略。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 0 邊沿0讀模式禁止 1 邊沿0讀模式使能 邊沿讀0模式。該位使能邊沿讀0模式。僅僅
14、當(dāng)從Flash存儲(chǔ)區(qū)讀時(shí),邊沿讀0位才是有效的。在存取周期內(nèi),邊沿模式自動(dòng)關(guān)閉。如果MRG1和MRG0都置位,則MRG1有效,MRG0被忽略。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 編程錯(cuò)誤期間變化的電壓。該位被軟件置位,只能被軟件清除。如果在編程期間DVCC改變很大,該位置位指示一個(gè)無(wú)效的結(jié)果。如果VPE置位,則ACCVIFG位置位。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時(shí)必須為A5h FLASH控制寄存器4 (
15、FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 信息段鎖定。如果該位置位,信息存儲(chǔ)區(qū)不能在段擦除模式下擦除,也不能夠被寫入。示例1 實(shí)現(xiàn)對(duì)SegD進(jìn)行擦除和寫入數(shù)據(jù)操作,將value值寫入SegD的指定地址。 本實(shí)驗(yàn)用兩種編程方式實(shí)現(xiàn): 直接操作寄存器 使用官方庫(kù)函數(shù)driverlib示例1:操作寄存器void main(void) / 初始化FLASH信息段SegD的指針,該指針指向Flash地址0 x1800 unsigned long * FLASH_ptrD = (unsigned long *) 0 x1800; unsigned long valu
16、e = 0 x12345678; WDTCTL = WDTPW+WDTHOLD; / 關(guān)閉看門狗 While(FCTL3 & BUSY); / 判斷是否處于忙碌狀態(tài) FCTL3 = FWKEY; / 清除LOCK標(biāo)志 FCTL1 = FWKEY+ERASE; / 置位ERASE位,選擇段擦除 *FLASH_ptrD = 0; / 空寫操作,地址可以為段范圍內(nèi)的任意值 FCTL1 = FWKEY+BLKWRT; / 寫允許,長(zhǎng)字 *FLASH_ptrD = value; / 寫FLASH While(FCTL3 & BUSY); / 判斷是否處于忙碌狀態(tài) FCTL1 = FWKE
17、Y; / 清除WRT位 FCTL3 = FWKEY+LOCK; / 置位LOCK標(biāo)志 示例1:庫(kù)函數(shù)編程(1/2)/ 初始化FLASH信息段SegD的指針,該指針指向Flash地址0 x1800,可以試試把0 x1800改成0 x18000unsigned long * FLASH_ptrD = (unsigned long *) 0 x1800;unsigned long value = 0 x12345678;void main (void) unsigned int status; / 關(guān)閉看門狗定時(shí)器 WDT_hold(_MSP430_BASEADDRESS_WDT_A_); 示例1:
18、庫(kù)函數(shù)編程(2/2) / 擦除FLASH Info D段do Flash_segmentErase( _MSP430_BASEADDRESS_FLASH_, (unsigned int *)FLASH_ptrD ); status = Flash_eraseCheck( _MSP430_BASEADDRESS_FLASH_, (unsigned int *)FLASH_ptrD, 128 ); while (status = STATUS_FAIL);/ 寫FLASH長(zhǎng)字Flash_write32( _MSP430_BASEADDRESS_FLASH_, &value, (unsigned long *)(FLASH_ptrD), 1 );示例2 (1/2) 實(shí)現(xiàn)不同Seg之間的數(shù)據(jù)拷貝,首先把遞增的數(shù)據(jù)寫入SegC,然后實(shí)現(xiàn)將SegC的數(shù)據(jù)拷貝至SegD。 本實(shí)驗(yàn)用兩種編程方式實(shí)現(xiàn): 直接操作寄存器 使用官方庫(kù)函數(shù)driverlib示例2 (2/2)#define NumToWrite 128/ 初始化FLASH信息段SegC與SegD的指針uint8_t *FLASH_ptrC = (uint8_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)注行業(yè)發(fā)展熱點(diǎn)的2025年市場(chǎng)營(yíng)銷理論考試試題及答案
- 2025年醫(yī)學(xué)專業(yè)執(zhí)業(yè)考試試卷及答案
- 2025年心理測(cè)量與評(píng)估方法綜合考核試題及答案
- 2025年現(xiàn)代藝術(shù)與文化創(chuàng)新的考試試題及答案
- 2025年心理咨詢師資格考試試卷及答案
- 2025年水資源管理與保護(hù)課程考試卷及答案
- 2025年人工智能與機(jī)器學(xué)習(xí)基礎(chǔ)試卷及答案
- 北師大版(2024)七年級(jí)下冊(cè)英語(yǔ)期末復(fù)習(xí):Unit1~6語(yǔ)法練習(xí)100題(含答案)
- 2025年建筑設(shè)計(jì)基礎(chǔ)知識(shí)測(cè)試卷及答案
- 2025年建筑經(jīng)濟(jì)與管理綜合能力考試試卷及答案
- 安全輸液護(hù)理管理
- 2025化工安全考試題庫(kù)及答案
- T/CECS 10011-2022聚乙烯共混聚氯乙烯高性能雙壁波紋管材
- 2025屆江蘇省宿遷市名校八下數(shù)學(xué)期末檢測(cè)試題含解析
- 中南財(cái)經(jīng)政法大學(xué)《編譯原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 高考報(bào)考志愿協(xié)議書
- 玉環(huán)金鑫塑膠有限公司年產(chǎn)350萬(wàn)口不粘鍋生產(chǎn)線技改項(xiàng)目環(huán)境影響報(bào)告書
- 2025AI時(shí)代健康睡眠白皮書
- MicroLED顯示技術(shù)產(chǎn)業(yè)化項(xiàng)目可行性研究報(bào)告(范文模板)
- 2025浙江中考:生物必背知識(shí)點(diǎn)
- 2025年國(guó)家開(kāi)放大學(xué)《會(huì)計(jì)案例分析》形成性考核123答案+終結(jié)性考核答案
評(píng)論
0/150
提交評(píng)論