在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430F149的存儲器結(jié)構(gòu)及FLASH讀寫

        MSP430F149的存儲器結(jié)構(gòu)及FLASH讀寫

        作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
        1 概述

        1.1 FLASH特點(diǎn)

        本文引用地址:http://www.biyoush.com/article/201611/322341.htm

        寫操作只能將1改寫為0,不能將0改寫成1。FLASH擦除后所有單元變?yōu)?,擦除操作只能針對整個段。FLASH在擦除前不能被改寫。

        1.2 MSP430F149存儲器編址方式

        MSP430F149的ROM為60K+256B的FLASH,RAM為2K。MSP430存儲器采用馮諾依曼結(jié)構(gòu),RAM和ROM合在一起編址。MSP430F149內(nèi)部集成有FLASH控制器,可以簡化對FLASH的操作。

        64K的尋址空間分為RAM、FLASH。

        RAM分兩塊:

        1、寄存器(0000H-01FFH),存放特殊寄存器、設(shè)備寄存器、變量與堆棧。

        2、數(shù)據(jù)RAM(01FFH-),存放各種變量、中間結(jié)果、堆棧。

        FLASH分兩塊:

        1、主FLASH 一般用于存放程序代碼。

        2、信息FLASH(InfoFlash)用作掉電后保存少量數(shù)據(jù)。分為InfoA(0X1080-0X10FF)和InfoB(0X1000-0X1080),每段各128B。

        1.3 操作

        三種操作:讀取、擦除(只能針對段擦除)、寫入(可以寫入單個字節(jié))。

        2使用方法

        2.1 程序架構(gòu)

        讀取FLASH方法和讀取RAM方法相同。寫和擦除FLASH要進(jìn)行如下配置:

        配置寄存器

        制定指針地址

        寫數(shù)據(jù)/復(fù)制數(shù)據(jù)

        配置寄存器

        2.2 參數(shù)配置

        主要配置三個寄存器FCTL1,F(xiàn)CTL2,F(xiàn)CTL3。

        1、配置FLASH控制器時鐘。時鐘要求控制在250-470Khz之間。

        FCTL2 = FWKEY + FSSEL0 + FN0; //2分頻

        2、用指針指向地址Unsigned char *ptr= (unsigned char *) 0x1080;

        3、進(jìn)入寫模式或擦除模式FCTL1=FWKEY+WRT;或FCTL1=FWKEY+ERASE

        4、清除鎖定位 FCTL3=FWKEY;

        5、寫數(shù)據(jù) *ptr=0x30;或擦除*ptr=0;

        6、退出寫狀態(tài),恢復(fù)鎖存

        FCTL1=FWKEY;

        FCTL3=FWKEY+LOCK;

        2.3 說明

        上電FLASH默認(rèn)狀態(tài)是讀。為防止錯誤操作,F(xiàn)LASH的三個寄存器FCTLX都采用了密碼核對機(jī)制FWKEY。

        上電時FLASH的InfoFLASH區(qū)域值均為1,可直接進(jìn)行寫操作,但此后的寫操作必須先擦除才能正確寫入。

        MSP430系列單片機(jī)FLASH擦寫典型次數(shù)是10萬次,最低保證1萬次。產(chǎn)品設(shè)計(jì)初期要規(guī)劃好FLASH的壽命,盡量不讓某些需要頻繁改動的數(shù)據(jù)保存在FLASH中,這些數(shù)據(jù)可保存在RAM中,在斷電前才存入FLASH中。

        3相關(guān)寄存器

        1、FCTL2

        FWKEY Bits

        15-8

        FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC

        will be generated.

        FSSELx Bits

        7−6

        Flash controller clock source select

        00 ACLK

        01 MCLK

        10 SMCLK

        11 SMCLK

        FNx Bits

        5-0

        Flash controller clock divider. These six bits select the divider for the flash

        controller clock. The divisor value is FNx + 1. For example, when FNx=00h,

        the divisor is 1. When FNx=03Fh the divisor is 64.

        FCTL2 = FWKEY + FSSEL0 + FN0;

        2、FCTL1

        FWKEY

        Bits

        15-8

        FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC

        will be generated.

        MERAS

        ERASE

        Bit 2

        Bit 1

        Mass erase and erase. These bits are used together to select the erase mode.

        MERAS and ERASE are automatically reset when EMEX is set.

        MERAS ERASE Erase Cycle

        0 0 No erase

        0 1 Erase individual segment only

        1 0 Erase all main memory segments

        1 1 Erase all main and information memory segments

        WRT Bit 6 Write. This bit is used to select any write mode. WRT is automatically reset

        when EMEX is set.

        0 Write mode is off

        1 Write mode is on

        3、FCTL3

        FWKEYx Bits

        15-8

        FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC

        will be generated.

        LOCK Bit 4 Lock. This bit unlocks the flash memory for writing or erasing. The LOCK bit

        can be set anytime during a byte/word write or erase operation and the

        operation will complete normally. In the block write mode if the LOCK bit is set

        while BLKWRT=WAIT=1, then BLKWRT and WAIT are reset and the mode

        ends normally.

        0 Unlocked

        1 Locked

        4 實(shí)例

        4.1 上電后向InfoFLASH某單元寫入一個字節(jié)數(shù)據(jù)

        1、配置FLASH控制器時鐘。時鐘要求控制在250-470Khz之間。

        FCTL2 = FWKEY + FSSEL0 + FN0; //2分頻

        2、用指針指向地址Unsigned char *ptr= (unsigned char *) 0x1080;

        3、進(jìn)入寫模式FCTL1=FWKEY+WRT;

        4、清除鎖定位 FCTL3=FWKEY;

        5、寫數(shù)據(jù) *ptr=0x30;

        6、退出寫狀態(tài),恢復(fù)鎖存

        注意FLASH操作期間不允許中斷,所以寫FLASH時要對全局中斷允許進(jìn)行操作。

        代碼如下:

        WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

        FCTL2 = FWKEY + FSSEL0 + FN0; // MCLK/2 for Flash Timing Generator

        unsigned char *ptr=(unsigned char *)0x1080;

        FCTL1=FWKEY+WRT;

        FCTL3=FWKEY;

        _DINT();

        *ptr=0x30;

        while(FCTL3&BUSY);

        _EINT();

        FCTL1=FWKEY;

        FCTL3=FWKEY+LOCK;

        4.2 向FLASH的InfoA中連續(xù)寫入128B數(shù)據(jù)

        說明:通過FCTL1將FLASH設(shè)為段擦除模式后,只要向某個段內(nèi)任何存儲單元寫入0即可進(jìn)行擦除操作。

        void write_SegA (char value)

        {

        char *Flash_ptr; // Flash pointer

        unsigned int i;

        Flash_ptr = (char *) 0x1080; // Initialize Flash pointer

        FCTL1 = FWKEY + ERASE; // Set Erase bit

        FCTL3 = FWKEY; // Clear Lock bit

        *Flash_ptr = 0; // Dummy write to erase Flash segment

        FCTL1 = FWKEY + WRT; // Set WRT bit for write operation

        for (i=0; i<128; i++)

        {

        *Flash_ptr++ = value; // Write value to flash

        }

        FCTL1 = FWKEY; // Clear WRT bit

        FCTL3 = FWKEY + LOCK; // Set LOCK bit

        }



        評論


        技術(shù)專區(qū)

        關(guān)閉