msp430超低功耗單片機原理與應用部門已加密311編程_第1頁
msp430超低功耗單片機原理與應用部門已加密311編程_第2頁
msp430超低功耗單片機原理與應用部門已加密311編程_第3頁
msp430超低功耗單片機原理與應用部門已加密311編程_第4頁
msp430超低功耗單片機原理與應用部門已加密311編程_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 3.11 Flash編程主要內容 嵌入式系統中存儲器介紹 嵌入式系統中常用存儲器分類 Flash 存儲器介紹 變量的物理存儲 MSP430存儲器介紹 Flash 存儲器讀寫操作 Flash 存儲器分段結構 Flash 存儲器寄存器嵌入式系統中常用存儲器分類RAM 存儲器掉電后數據丟失靜態RAM(SRAM)動態RAM(DRAM)ROM 存儲器掉電后數據不會丟失PROMEPROMEEPROMFlash存儲器電擦寫、讀寫速度快,掉電后數據不會丟失NandFlashNorFlashFlash特點在對Flash存儲器進行寫操作時,可以以字節或字為單位進行寫操作,但對Flash存儲器進行擦除操作時,必須

2、以段為單位進行擦除。換句話說,即使要改變存儲器中某個地址處的字節內容,也必須首先將該字節所在的段先擦除,然后再將該地址的字節內容寫入,由于擦除操作會擦掉整段的內容,所以建議將有用的內容先保存到RAM中,然后再進行擦除操作。擦除后Flash存儲器的值為邏輯1。每一位可以單獨通過編程,從1變到0,但是要將其重新編程從0到1需要擦除操作。 變量的物理存儲 全局變量或常量放在Flash里,局部變量放在RAM區域中,程序段放在flash中,程序開始運行時,放到RAM中運行,從flash的主存儲區第一段開放存放程序和全局變量,這個存放位置是可以設定的,所以想利用Flash空間進行讀寫時,必須繞開操作程序存

3、儲段。MSP430 Flash存儲器特征 內部的編程電壓發生器 可字節、字(2個字節)、 長字(4個字節)編程 超低功耗運作 段擦除、扇區擦除和全部擦除 邊沿0、邊沿1讀模式 在程序運行時對別的塊進行擦除操作。 FLASH模塊邏輯圖模塊邏輯圖FLASH結構 Flash存儲器分為主存儲區、信息存儲區和引導加載存儲器(BSL)。 每個主存儲區段大小為512 個字節。 有四個信息存儲段,A到D。每個信息存儲段包含128個字節,并且可以單獨擦除。 引導加載存儲器(BSL)包含4個段,A到D。每個引導加載段有512個字節,并且可以單獨擦除。通過引導加載程序(BSL)對FLASH存儲器編程 每個MSP43

4、0 Flash型芯片都包含一個引導加載區(BSL)。BSL允許用戶使 用UART串行接口對Flash存儲器或RAM進行讀取或編程操作。用戶自定義的 256 位口令可以保護通過BSL對Flash 存儲器的訪問。MSP430F663x系列單片機的存儲器結構圖Flash特性 (1/2) Flash存儲器通過BLKWRT,WRT,MERAS和ERASE 位選擇寫入/擦除模式: 字節/字/長字(32位)寫入 塊寫入 段擦除 扇區擦除(針對主存儲區) 主存擦除(所有的主存儲扇區) 當擦除扇區時讀(除了從當前的扇區讀) Flash特性 (2/2)MERASERASE擦除模式 0 1 段擦除 10空寫地址選擇

5、的扇區擦除(一個扇區) 11主存擦除(所有的存儲扇區,信息存儲區A到D以及引導裝載段A到D不被擦除) 從Flash存儲區啟動擦除操作 從RAM區啟動擦除操作 Flash存儲器寫操作 可以通過WRT和BLKWRT位來選擇寫模式從FLASH存儲器中啟動字/字節寫入從RAM區中啟動字/字節寫入從FLASH存儲器中啟動長字寫入 從RAM區啟動長字寫入Flash存儲寄存器寄存器名稱縮寫訪問初始狀態偏移地址Flash存儲控制寄存器1 FCTL1讀/寫9600h0000hFlash存儲控制寄存器3FCTL3讀/寫9658h0004hFlash存儲控制寄存器4FCTL4 讀/寫9600h0006h中斷使能1

6、IE1 讀/寫0000h000Ah中斷標志1IFG1 讀/寫0000h 000Ch MSP430F5xx6xx系列單片機的Flash存儲寄存器如下表所列。基地址可以在具體芯片的數據手冊里面找到,下表給出偏移地址。 配置和訪問Flash存儲控制器 FCTLx寄存器是一個16位的,具有密碼保護的讀/寫寄存器。讀或寫訪問時必須使用字指令,寫操作時高字節內必須包括寫入密碼0A5h。對任何FCTLx寄存器寫入0A5h以外的其他值,將引起密鑰錯誤,KEYV標志將置位,產生一個PUC系統復位。讀取任何FCTLx寄存器高字節的結果為096h。 在擦除或字節/字/雙字寫入操作期間,對FCTL1的寫操作都是非法操

7、作,ACCVIFG將置位。在塊寫入模式下,WAIT = 1 時,允許對FCTL1進行寫操作,但是當WAIT = 0 時,對FCTL1的寫操作為非法操作,ACCVIFG置位。 當BUSY = 1 時,對FCTL2的任何寫入操作是非法操作。 當BUSY = 1 時,可以讀FCTLx寄存器。讀操作不會產生非法訪問。 寫入或者擦除期間訪問Flash存儲器 當BUSY = 1時,從RAM區啟動寫入或擦除操作,CPU可能不會在任何Flash 位置進行寫操作。否則,將發生非法訪問,ACCVIFG位置位,結果不可預料。 當寫操作從Flash存儲器內啟動時,在寫周期完成后(BUSY = 0),CPU將繼續取下一

8、指令。 當寫操作完成且BUSY = 0 時,Flash控制器才允許CPU取出操作代碼,繼續執行代碼。位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 0 1 字節/字寫 1 0 長字寫 1 1 長字塊寫 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 智能寫位。假如該位置位,編程時間會縮短了。

9、編程質量必須由邊沿讀模式檢查確認。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器1 (FCTL1)位76543210功能BLKWRWRTSWRT保留保留MERASERASE 保留 沒有擦除操作 0 0 段擦除 0 1 扇區擦除 1 0 全部擦除(包括主FLASH和信息段) 1 1 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY鎖信息A段。對該位寫1能改變該位狀態。寫0無效。 0

10、 信息A、B、C、D、被解鎖。 1 信息A段被寫保護。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY0 解鎖 1 鎖定鎖。該位對FLASH的寫和擦除操作進行解鎖。該位可以字/字節寫的任意時刻置位。在快寫模式中,當BLKWRT=WAIT=1,LOCK置位的話,BLKWRT和WAIT會立即復位,該模式正常終止。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器3 (FCTL3)位76

11、543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY 非法訪問中斷標志 1 沒有中斷產生 2 中斷產生 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY FCTLx密碼寫入正確 0 FCTLx密碼寫入不正確 1 Flash安全鍵值出錯。該位指示了一個不正確的FCTLx安全鍵值被寫入到flash控制寄存器中,KEYV會置位。并觸發PUC。KEYV位必須被軟件復位。 位1514131211109 8功能FRKE

12、Y 讀密碼是96h,寫時必須為A5h FLASH控制寄存器3 (FCTL3)位76543210功能保留LOCKA保留 LOCKWAITACCVIFKEYV BUSY 不忙 0 忙 1 忙標志位。該位指示是否Flash正忙于當前的擦除或者編程。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 信息段鎖定。如果該位置位,信息存儲區不能在段擦除模式下擦除,也不能夠被寫入。位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLAS

13、H控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 0 邊沿1讀模式禁止 1 邊沿1讀模式使能 邊沿讀1模式。該位使能邊沿讀1模式。僅僅當從Flash存儲區讀時,邊沿讀1位才是有效的。在存取周期內,邊沿模式自動關閉。如果MRG1和MRG0都置位,則MRG1有效MRG0被忽略。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 0 邊沿0讀模式禁止 1 邊沿0讀模式使能 邊沿讀0模式。該位使能邊沿讀0模式。僅僅

14、當從Flash存儲區讀時,邊沿讀0位才是有效的。在存取周期內,邊沿模式自動關閉。如果MRG1和MRG0都置位,則MRG1有效,MRG0被忽略。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器4 (FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 編程錯誤期間變化的電壓。該位被軟件置位,只能被軟件清除。如果在編程期間DVCC改變很大,該位置位指示一個無效的結果。如果VPE置位,則ACCVIFG位置位。 位1514131211109 8功能FRKEY 讀密碼是96h,寫時必須為A5h FLASH控制寄存器4 (

15、FCTL4)位76543210功能LOCKINFO保留MRG1MRG0保留VPE 信息段鎖定。如果該位置位,信息存儲區不能在段擦除模式下擦除,也不能夠被寫入。示例1 實現對SegD進行擦除和寫入數據操作,將value值寫入SegD的指定地址。 本實驗用兩種編程方式實現: 直接操作寄存器 使用官方庫函數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; / 關閉看門狗 While(FCTL3 & BUSY); / 判斷是否處于忙碌狀態 FCTL3 = FWKEY; / 清除LOCK標志 FCTL1 = FWKEY+ERASE; / 置位ERASE位,選擇段擦除 *FLASH_ptrD = 0; / 空寫操作,地址可以為段范圍內的任意值 FCTL1 = FWKEY+BLKWRT; / 寫允許,長字 *FLASH_ptrD = value; / 寫FLASH While(FCTL3 & BUSY); / 判斷是否處于忙碌狀態 FCTL1 = FWKE

17、Y; / 清除WRT位 FCTL3 = FWKEY+LOCK; / 置位LOCK標志 示例1:庫函數編程(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; / 關閉看門狗定時器 WDT_hold(_MSP430_BASEADDRESS_WDT_A_); 示例1:

18、庫函數編程(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長字Flash_write32( _MSP430_BASEADDRESS_FLASH_, &value, (unsigned long *)(FLASH_ptrD), 1 );示例2 (1/2) 實現不同Seg之間的數據拷貝,首先把遞增的數據寫入SegC,然后實現將SegC的數據拷貝至SegD。 本實驗用兩種編程方式實現: 直接操作寄存器 使用官方庫函數driverlib示例2 (2/2)#define NumToWrite 128/ 初始化FLASH信息段SegC與SegD的指針uint8_t *FLASH_ptrC = (uint8_

溫馨提示

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

評論

0/150

提交評論