MSP430-Flash讀寫操作總結(jié)_第1頁
MSP430-Flash讀寫操作總結(jié)_第2頁
MSP430-Flash讀寫操作總結(jié)_第3頁
MSP430-Flash讀寫操作總結(jié)_第4頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-精選文檔 -MSP430X14X Flash讀寫操作總結(jié)開發(fā)平臺: IAR Embedded Workbench、MSP430F149開發(fā)板作者:譚貝貝Flash 簡介Flash 分為主存儲區(qū)和信息存儲區(qū),主存儲區(qū)有8 個512byte 的片段,信息存儲區(qū)有兩個 128byte 的片段。Flash默認(rèn)為讀取模式。在對 Flash 進行編程或者擦除時不允許讀寫,如果需要 CPU 在這期間進行操作,可以把代碼段放在 RAM 中進行。Flash 操作注意事項在讀寫的過程中電壓不能小于2.7V 否則擦除和讀寫的結(jié)果 將 不 可 預(yù) 測 。 Flash的 可 操 作 時 鐘 頻 率 為257KHZ-4

2、76KHZ。如果頻率不符合要求,則結(jié)果不可預(yù)測。在擦除先需要關(guān)閉中斷和看門狗,在擦除的過程中如果產(chǎn)生了中斷, 則會在重新使能中斷后產(chǎn)生一個中斷請求。Flash只能從 1 寫為 0 ,不能從從0 寫為 1,所以需要擦除??梢员徊脸淖钚∧K是片段,tAllErase=tMass可編輯-精選文檔 -Erase = 5297/fFTG, tSeg Erase = 4819/fFTG。Flash ERASEMSP430X14X的擦除模式可以從Flash 或者 RAM 中進行。從 Flash 中擦除從 Flash 中擦除的過程中所有的定時都會被Flash 控制,CPU 被掛起。擦除完成后需要一個假寫入C

3、PU 才能復(fù)位。從 Flash 擦除時有可能把后面 CPU 需要執(zhí)行的代碼擦除。 如果發(fā)生這樣的情況,在擦除后 CPU 的執(zhí)行狀況將不可預(yù)測。Flash 中擦除流程圖可編輯-精選文檔 -從 RAM 中擦除從 RAM 中擦除時 CPU 不會被掛起, 可以繼續(xù)執(zhí)行代碼。必須檢測 BUSY 位以判斷擦除是否結(jié)束,如果在擦除的過程中(即 BUSY=1 時)訪問 Flash ,這是一個違規(guī)的訪問,ACCVIFG 會置位,而擦除的結(jié)果也將不可預(yù)測。RAM中擦除流程圖可編輯-精選文檔 -Flash WriteMSP430X14X有兩種寫入模式, 分為段寫入( byte/wordwrite ),和塊寫入( B

4、lockWrite ),塊寫入要快得多,但是操作麻煩,在擦除的過程中不能有一個 Flash word(low + high byte) ,則會發(fā)生損壞。 CPU 不能在 BUSY=1 時訪問 Flash ,否則 ACCFIG 將置位寫入將不可預(yù)測。1.Byte/Word writeByte/Word寫入可以從Flash 或者 RAM 初始化,當(dāng)從Flash 中初始化時,所有的定時都會被Flash 控制, CPU 被掛起。寫完后CPU 將繼續(xù)執(zhí)行后面的代碼。當(dāng)從 RAM中初始化時, BUSY 必須在CPU 訪問 Flash前置 0. 否則 ACCFIG 將被置位,寫入的結(jié)果將不可預(yù)測。在 Byt

5、e/Word寫模式下寫入總時間不能超過4ms, 如果超過了,當(dāng)再想這塊任何地址寫入數(shù)據(jù)時必須先擦除。可編輯-精選文檔 -Byte/Word寫入流程圖可編輯-精選文檔 -從 RAM中執(zhí)行 Byte/Word寫入塊寫入塊寫入時沒一小塊不能超過 t_cpt=4ms, 塊寫入只能從 RAM 中進行,在塊寫入的過程中 WAIT 位要置 0,當(dāng)想 Flash 中寫入數(shù)據(jù)時, 需要先檢查 WAIT 位是否為 1.當(dāng)前塊寫完后 BLKWRT 要清 0.可編輯-精選文檔 -流程圖可編輯-精選文檔 -在 擦 除 或 者 寫 入 的 過 程 中 訪 問Flash, 見 下 表Flash 的寄存器FCTL1 ,選擇擦

6、除和寫入模式的寄存器FRKEY/FWKEY高八位為密碼讀的密碼為96h ,寫的密碼為 A5h 。BLKWRT塊寫入模式選擇位,可以自動被EMEX 置位WRT 字寫入模式選擇位,可任意自動被EMEX 置位MERASE 和 ERASE,擦除模式選擇位可編輯-精選文檔 -FCTL2 時鐘選擇寄存器FWKEYx 密碼位FSSELx 時鐘選擇位FNx 分頻比分頻值等于FN+1兩個例子#include <msp430x14x.h>#include "BoardConfig.h"void Write_A(uchar value);可編輯-精選文檔 -void Copy_A2B

7、(void);void main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD; BoardConfig(0xb8);FCTL2 = FWKEY + FSSEL0 + FN0; /Select source uchar value = 0;for(;)Write_A(value+);/Write data to segment ACopy_A2B();/Copydatafromsegment A to segment B_NOP();void Write_A(uchar value)

8、可編輯-精選文檔 -uchar i;uchar *Flash_ptr;Flash_ptr = (uchar *)0x1080;FCTL1 = FWKEY + ERASE;/Set ERASE modeFCTL3 = FWKEY;/Clear LOCK*Flash_ptr = 0;/Dummy writeFCTL1 = FWKEY + WRT;for(i = 0;i < 128;i+)*Flash_ptr+ = value;/Write valueFCTL1 = FWKEY;/Clear WRTFCTL3 = FWKEY + LOCK;/Set LOCK/Copy data from B

9、to Avoid Copy_A2B(void)uchar *Flash_ptrA;uchar *Flash_ptrB;可編輯-精選文檔 -uint i;Flash_ptrA = (uchar *)0X1080;Flash_ptrB = (uchar *)0x1000;FCTL1 = FWKEY + ERASE;FCTL3 = FWKEY;*Flash_ptrB = 0;FCTL1 = FWKEY + WRT;for(i = 0;i < 128;i+)*Flash_ptrB+ = *Flash_ptrA+;FCTL1 = FWKEY;FCTL3 = FWKEY + LOCK;再來個塊寫入的

10、(TI 例程)/*可編輯-精選文檔 -/MSP430F14xDemo-FlashIn-SystemProgramming, BlockWrite/Description:ThisprogramfirstcopiestheFlashWrite routine to RAM, then/ erases flash seg A, then it increments all values in seg A using the 64/ byte block write mode./ Assumed default MCLK = DCO 800 kHz./ Minimum RAM requirement

11、 = 512 bytes/ * Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash */MSP430F149/-/|XIN|-/| |/-|RSTXOUT|-/|/可編輯-精選文檔 -/ H. Grewal / L. Westlund/ Texas Instruments Inc./ Jun 2006/ Built with IAR Embedded Workbench Version: 3.30A /*#include <msp430x16x.h>/ Global variablescharvalue=0;

12、/8-bitvalue to write to segment Achar*Flash_ptr;/Flashpointerchar* RAM_ptr;/ RAMpointerchar*END_ptr;/Endof FlashWrite routine/ Function prototypes void FlashWrite();可編輯-精選文檔 -void CopyRoutine();void End_of_FlashWrite();void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer_DINT();/DiableInte

13、rruptsCopyRoutine();/CopyFlashWrite routine to RAM_EINT();/EnableInterruptswhile(1)/RepeatforeverFlash_ptr=(char*) 0x1000;/InitializeFlash pointerFCTL2 = FWKEY + FSSEL1 + FN0;/ MCLK/2for Flash Timing Generator可編輯-精選文檔 -FCTL1 =FWKEY+ERASE;/SetErase bitFCTL3 =FWKEY;/ClearLock bit*Flash_ptr=0;/Dummywri

14、te to erase Flash segmentwhile(!(FCTL3 & WAIT);/ WAIT untilFlash is readyasm("CALL#300h");/ExecuteFlashWrite from RAM/ Inline Assemblyvalue+;/Increment value_NOP();/SETBREAKPOINT HEREvoid CopyRoutine()Flash_ptr=(char*)FlashWrite;/Set可編輯-精選文檔 -pointer to FlashWrite routineRAM_ptr=(char*

15、)0x0300;/Setpointer to RAMEND_ptr=(char*)End_of_FlashWrite;/Setpointer to End_of_FlashWritewhile(END_ptr!= Flash_ptr)/Checkfor end of FlashWrite*RAM_ptr =*Flash_ptr;/Copyword to RAMFlash_ptr+;/ IncrementFlash pointerRAM_ptr+;/Increment RAM pointervoid FlashWrite()volatileinti;/Useaswrite counter可編輯-精選文檔 -Flash_ptr=(char*)0x1000;/ InitializeFlash pointerwhile(FCTL3& BUSY);/CheckFlash BUSY bitFCTL1 = FWKEY + BLKWRT + WRT;/Enable block-write operationfor(i = 0; i < 64; i+)*Flash_ptr = value;/ Write valueto flashFlash_ptr+;/Double-increment Flash pointer

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論