MSP430Flash讀寫操作總結(jié)_第1頁
MSP430Flash讀寫操作總結(jié)_第2頁
MSP430Flash讀寫操作總結(jié)_第3頁
MSP430Flash讀寫操作總結(jié)_第4頁
MSP430Flash讀寫操作總結(jié)_第5頁
已閱讀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-476KHZ。如果頻率不符合要求,則結(jié)果不可預(yù)測。在擦除先需要關(guān)閉中斷和看

2、門狗,在擦除的過程中如果產(chǎn)生了中斷,則會在重新使能中斷后產(chǎn)生一個中斷請求。Flash只能從1寫為0,不能從從0寫為1,所以需要擦除??梢员徊脸淖钚∧K是片段,tAll Erase = tMass Erase = 5297/fFTG, tSeg Erase = 4819/fFTG。Flash ERASEMSP430X14X的擦除模式可以從Flash或者RAM中進行。從Flash中擦除從Flash中擦除的過程中所有的定時都會被Flash控制,CPU被掛起。擦除完成后需要一個假寫入CPU才能復(fù)位。從Flash擦除時有可能把后面CPU需要執(zhí)行的代碼擦除。如果發(fā)生這樣的情況,在擦除后CPU的執(zhí)行狀況將

3、不可預(yù)測。Flash中擦除流程圖從RAM中擦除從RAM中擦除時CPU不會被掛起,可以繼續(xù)執(zhí)行代碼。必須檢測BUSY位以判斷擦除是否結(jié)束,如果在擦除的過程中(即BUSY=1時)訪問Flash,這是一個違規(guī)的訪問,ACCVIFG會置位,而擦除的結(jié)果也將不可預(yù)測。RAM中擦除流程圖Flash WriteMSP430X14X有兩種寫入模式,分為段寫入(byte/word write),和塊寫入(Block Write),塊寫入要快得多,但是操作麻煩,在擦除的過程中不能有一個Flash word(low + high byte),則會發(fā)生損壞。CPU不能在BUSY=1時訪問Flash,否則ACCFIG將

4、置位寫入將不可預(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ù)測。在Byte/Word 寫模式下寫入總時間不能超過4ms,如果超過了,當(dāng)再想這塊任何地址寫入數(shù)據(jù)時必須先擦除。Byte/Word 寫入流程圖從RAM中執(zhí)行Byte/Word 寫入塊寫入塊寫入時沒一小塊不能超過t_cpt=4ms,塊寫入只能從RAM中進行,在塊寫入的過程中

5、WAIT位要置0,當(dāng)想Flash中寫入數(shù)據(jù)時,需要先檢查WAIT位是否為1.當(dāng)前塊寫完后BLKWRT要清0.流程圖在擦除或者寫入的過程中訪問Flash,見下表Flash的寄存器FCTL1,選擇擦除和寫入模式的寄存器FRKEY/FWKEY 高八位為密碼讀的密碼為96h,寫的密碼為A5h。BLKWRT塊寫入模式選擇位,可以自動被EMEX置位WRT字寫入模式選擇位,可任意自動被EMEX置位MERASE和ERASE,擦除模式選擇位FCTL2時鐘選擇寄存器FWKEYx密碼位FSSELx時鐘選擇位FNx分頻比 分頻值等于FN+1兩個例子#include <msp430x14x.h>#inclu

6、de "BoardConfig.h"void Write_A(uchar value);void Copy_A2B(void);void main( void )/ Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;BoardConfig(0xb8);FCTL2 = FWKEY + FSSEL0 + FN0; /Select sourceuchar value = 0;for(;)Write_A(value+); /Write data to segment ACopy_A2B();

7、/Copy data from segment A to segment B_NOP();void Write_A(uchar value)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 =

8、FWKEY; /Clear WRTFCTL3 = FWKEY + LOCK; /Set LOCK/Copy data from B 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+ =

9、 *Flash_ptrA+;FCTL1 = FWKEY;FCTL3 = FWKEY + LOCK;再來個塊寫入的(TI例程)/*/ MSP430F14x Demo - Flash In-System Programming, BlockWrite/ Description: This program first copies the FlashWrite routine to RAM, then/ erases flash seg A, then it increments all values in seg A using the 64/ byte block write mode./ As

10、sumed default MCLK = DCO 800 kHz./ Minimum RAM requirement = 512 bytes/ * Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash */ MSP430F149/ -/ /| XIN|-/ | | |/ -|RST XOUT|-/ | |/ H. Grewal / L. Westlund/ Texas Instruments Inc./ Jun 2006/ Built with IAR Embedded Workbench Version: 3.30A/*

11、#include <msp430x16x.h>/ Global variableschar value = 0; / 8-bit value to write to segment Achar* Flash_ptr; / Flash pointerchar* RAM_ptr; / RAM pointerchar* END_ptr; / End of FlashWrite routine/ Function prototypesvoid FlashWrite();void CopyRoutine();void End_of_FlashWrite();void main(void)WD

12、TCTL = WDTPW + WDTHOLD; / Stop watchdog timer_DINT(); / Diable InterruptsCopyRoutine(); / Copy FlashWrite routine to RAM_EINT(); / Enable Interruptswhile(1) / Repeat foreverFlash_ptr = (char *) 0x1000; / Initialize Flash pointerFCTL2 = FWKEY + FSSEL1 + FN0; / MCLK/2 for Flash Timing GeneratorFCTL1 =

13、 FWKEY + ERASE; / Set Erase bitFCTL3 = FWKEY; / Clear Lock bit*Flash_ptr = 0; / Dummy write to erase Flash segmentwhile(!(FCTL3 & WAIT); / WAIT until Flash is readyasm("CALL #300h"); / Execute FlashWrite from RAM/ Inline Assemblyvalue+; / Increment value_NOP(); / SET BREAKPOINT HEREvoi

14、d CopyRoutine()Flash_ptr = (char*)FlashWrite; / Set pointer to FlashWrite routineRAM_ptr = (char*)0x0300; / Set pointer to RAMEND_ptr = (char*)End_of_FlashWrite; / Set pointer to End_of_FlashWritewhile(END_ptr != Flash_ptr) / Check for end of FlashWrite*RAM_ptr = *Flash_ptr; / Copy word to RAMFlash_

15、ptr+; / Increment Flash pointerRAM_ptr+; / Increment RAM pointervoid FlashWrite()volatile int i; / Use as write counterFlash_ptr = (char*)0x1000; / Initialize Flash pointerwhile(FCTL3 & BUSY); / Check Flash BUSY bitFCTL1 = FWKEY + BLKWRT + WRT; / Enable block-write operationfor(i = 0; i < 64; i+)*Flash_ptr = value; / Write value to flashFlash_ptr+; / Double-increment Flash pointerwhile(!(FCTL3

溫馨提示

  • 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

提交評論