娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月06日(星期二)

正在發生

2020年05月06日 | 關于Msp430 Flash型單片機內部Flash的操作

發布者:科技革新者 來源: eefocus關鍵字:Msp430  Flash型  單片機  內部Flash 手機看文章 掃描二維碼
隨時隨地手機看文章

1 Msp430Flash型單片機內部Flash存儲器介紹

MSP430的Flash存儲器是可位、字節、字尋址和編程的存儲器。該模塊由一個集成控制器來控制編程和擦除的操作。控制器包括三個寄存器,一個時序發生器及一個提供編程、擦除電壓的電壓發生器。


Msp430的Flash存儲器的特點有:

1)產生內部編程電壓

2)可位、字節、字編程,可以單個操作,也可以連續多個操作

3)超低功耗操作

4)支持段擦除和多段模塊擦除


2 Flash存儲器的分割

Msp430 Flash存儲器分成多個段。可對其進行單個字節、字的寫入,也可以進行連續多個字、字節的寫入操作,但是最小的擦除單位是段。


Flash 存儲器被分割成兩部分:主存儲器和信息存儲器,兩者在操作上沒有什么區別。兩部分的區別在于段的大小和物理地址的不同。


以Msp430F149為例,信息存儲器有兩個128字節的段,即segmentA和segmentB,主存儲器有多個512字節的段。Msp430F149內部Flash的地址為0x1000H~0xFFFFH,計60K。信息段SegA的起始地址為0x1080H,信息段SegB的起始地址為0x1000H。


3 Flash存儲器的操作

在默認狀態下,處于讀操作模式。在讀操作模式中,Flash存儲器不能被擦除和寫入,時序發生器和電壓發生被關閉,存儲器操作指向ROM區。


Msp430 Flash存儲器在系統編程ISP(in-system programmable)不需要額外的外部電壓。CPU能夠對Flash直接編程。Flash存儲器的寫入/擦除通過BLKWRT、WRT、MERAS、ERASE等位確定。


3.1 擦除

Flash存儲器各位的缺省值為1,每一位都可以單獨編程為0,但只有擦除操作才能將其恢復為1。擦除操作的最小單位是段。通過erase和meras位設置可選擇3種擦除模式。

MERAS

ERASE

擦除模式

0

1

段擦除

1

0

多段擦除(所有主存儲器的段)

1

1

整體擦除(LOCKA=0時,擦除所有主存儲器和信息存儲器的段;主存儲器的段只有當LOCKA=0時可以擦除)

擦除操作開始于對擦除的地址范圍內的任意位置執行一次空寫入。空寫入的目的是啟動時序發生器和擦除操作。在空寫入操作之后,BUSY位自動置位,并保持到擦除周期結束。BUSY、MERAS、ERASE在擦除周期結束后自動復位。


3.2 寫入

寫入模式由WRT和BLKWRT位進行設置。

BLKWRT(塊寫入模式選擇)

WRT(寫模式選擇位)

寫入模式

0

1

單字節、單字寫入

1

1

塊寫入

所有的寫入模式使用一系列特有的寫入命令,采用塊寫入的速度大約是單個寫入的2倍,因為電壓發生器在塊寫入完成器件均能保持。對于這兩種寫入模式,任何能修改目的操作數的指令均能用于修改地址。一個Flash字不能再擦除器件進行兩次以上的寫入。


當啟動寫入操作時,BUSY置位,寫入結束時復位。


4 操作編程

4.1 Flash擦除

對Flash要寫入數據,必須先擦除相應的段,且對Flash存儲器的擦除必須是整段進行的,可以一段一段擦,也可以多段一起擦除。擦除操作的順序如下:

1)選擇適當的時鐘源和分頻因子;

2)清除LOCK位

3)判斷BUSY位,只有當BUSY=0時才可以執行下一步

4)使能段操作,設置ERASE、MERAS位等(如果是擦除一段,則ERASE=1,如果擦除多段,則MERAS=1,如果擦除整個Flash,則ERASE=1,MERAS=1)

5)對擦除的地址范圍內的任意位置作一次空寫入,以啟動擦除操作

6)在擦除周期內,時鐘源始終有效,不修改分頻因子

7)操作完成后,置位LOCK


根據上述操作順序,編寫程序代碼如下:

void FlashErase(unsigned int adr)

{

  uchar *p0;

  FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//選擇時鐘源,分頻

  FCTL3 = FWKEY;//清除LOCK

  while(FCTL3 & BUSY);//如果出于忙,則等待

  FCTL1 = FWKEY + ERASE;//使能段操作

  p0 = (unsigned char *)adr;//數值強制轉換成指針

  *p0 = 0;            //向段內任意地址寫0,即空寫入,啟動擦除操作

  FCTL1 = FWKEY;

  FCTL3 = FWKEY + LOCK;

  while(FCTL3 & BUSY);

}


4.2 寫入

對Flash的寫入數據可以是單字、單字節,也可以是連續多個字或字節(即塊操作)。編程寫入操作的順序如下:

1)選擇適當的時鐘源和分頻因子;

2)清除LOCK位

3)判斷BUSY位,只有當BUSY=0時才可以執行下一步操作

4)使能寫入功能,設置WRT、BLKWRT(如果寫入單字或單字節則WRT=1,如果是塊寫入,或者是多字、多字節連續寫入則WRT=1,BLKWRT=1);

5)判斷BUSY位,只有當BUSY=0時才可以執行下一步操作

6)寫入數據

7)判忙,完了之后清除WRT,置位LOCK


根據上述操作順序,編寫程序代碼如下:

//write single byte

//Adr 為要編程的地址,沒有奇偶地址要求、DataB為要編程的字節數據

void FlashWB(unsigned char Adr,unsigned char DataB)

{

  FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//MCLK  16*FN4 + 8*FN3

  FCTL3 = FWKEY;

  FCTL1 = FWKEY + WRT; 

  while(FCTL3 & BUSY);

  *((unsigned int *)Adr)=DataB;//數值強制轉換成指針,指向地址數據Adr所表示的內存單元

                               //將數據字DataW賦值給內存單元

  FCTL1 = FWKEY;

  FCTL3 = FWKEY + LOCK;

  while(FCTL3 & BUSY); 

}

//write single word

//Adr 為要編程的地址,應該是偶地址、DataW為要編程的字數據

void FlashWW(unsigned int Adr,unsigned int DataW)

{

  FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//MCLK  16*FN4 + 8*FN3

  FCTL3 = FWKEY;

  FCTL1 = FWKEY + WRT; 

  while(FCTL3 & BUSY);

  *((unsigned int *)Adr)=DataW;//數值強制轉換成指針,指向地址數據Adr所表示的內存單元

                               //將數據字DataW賦值給內存單元

  FCTL1 = FWKEY;

  FCTL3 = FWKEY + LOCK;

  while(FCTL3 & BUSY);

}

/*************************************************

//向FLASH信息區寫入指定數量的字節數據

//unsigned char *pc_byte 信息區數據指針

//unsigned char *Datain :讀出數據存放數據數組,8位長

//unsigned char count :讀操的數量,范圍0-127

**************************************************/

void FlashWrite(uchar *pc_byte,uchar *Datain,uint count)

{

  FCTL2 = FWKEY + FSSEL_1 + FN3 + FN4;//MCLK  16*FN4 + 8*FN3

  FCTL3 = FWKEY;

  FCTL1 = FWKEY + WRT; 

  while(FCTL3 & BUSY);                //如果處于忙狀態,則等待

 

  while(count--)

  {

    while(FCTL3 & BUSY);

    *pc_byte++ = *Datain++;

  }

 

  FCTL1 = FWKEY;

  FCTL3 = FWKEY + LOCK;

  while(FCTL3 & BUSY); 

}


注意:在對字寫入和字節寫入的時候,用于指向信息區數據指針類型的區別,字寫入時候為*((unsigned int *)Adr),字節寫入時候為*((unsigned char *)Adr)。


4.3 讀取

根據查看的書籍資料和網絡資料得出,內部Flash的讀取操作沒有順序的要求,一般Flash默認的操作方式即為讀模式。讀取Flash的程序代碼如下:

/*************************************************

//向FLASH信息區讀出指定數量的字節數據

//unsigned char *pc_byte 信息區數據指針

//unsigned char *Dataout :讀出數據存放數據數組,8位長

//unsigned char count :讀操的數量,范圍0-127

**************************************************/

void FlashRead(uchar *pc_byte,uchar *Dataout,uint count)

{

  while(count--)

  {

    *Dataout = *pc_byte;

    Dataout++;

    pc_byte++;

  }

}


在網上查找資料的時候,好像看到過有位網友的博客說,內部Flash的地址是自動加1的,按照他的理解,函數中pc_byte++語句就沒有用處了,可是事實不然,我在調試過程中,發現并不能自動加1,pc_byte++語句還是有必要的。調用上述函數,可以通過這樣的方式FlashRead((uchar *)0x1000,a,4);即從0x1080地址處開始,連續讀取4個字節的數據,送給數組a。


5 小結

對Msp430 片內Flash的操作是通過對3個控制字中的相應位來完成的,只有控制位的正確組合,才能實現相應的功能。


同時在編程中注意靈活使用數組和指針,以及指向數組的指針等,可以達到靈活編程的目的,不過本文中給出的幾個程序段,基本上能夠實現對Msp430 Flash的擦除、寫入等操作。

關鍵字:Msp430  Flash型  單片機  內部Flash 引用地址:關于Msp430 Flash型單片機內部Flash的操作

上一篇:MSP430的JTAG接口和BSW接口
下一篇:MSP430 FLASH讀寫

推薦閱讀

未來不僅通過量子接口可以實現量子通信和量子互聯網的聯網,而且通信和網速將極大提高。?近日,清華大學交叉信息研究院段路明教授研究團隊宣布其在量子信息領域取得重要進展,首次實現25個量子接口之間的量子糾纏。該成果的研究論文已在4月20日出刊的美國《科學》雜志子刊《科學進展》刊載。?這項成果的發布意味著什么呢?即有了更高效率的量子接口,它...
據The Guardian報道, 世界各地氣象學家發出嚴厲警告,目前全球推廣的5G無線網絡系統可能會干擾用來監測大氣變化的精密衛星儀器。歐洲中期天氣預報中心(European Centre for Medium Range Weather Forecasts)的Tony McNally表示,5G的引入可能會造成預測數據靈敏度的下降,嚴重損害其預測大風暴的能力,甚至會導致生命的喪失。 這絕不...
PROTEUS仿真電路圖:仿真實驗結果展示:漢字取模過程(軟件下載鏈接在文末):第一步:打開液晶仿真排版軟件設定相關參數:輸入漢字:隨便找個位置將圖片保存:第二步:打開液晶漢字模提取軟件設定相關參數:將剛才保存的圖片打開并保存數據:C語言程序代碼:#include <reg51.h>#define LCDLCDDisp_Off 0x3e#define LCDLCDDisp_On 0x3f#define...
國內領先的MEMS器件設計公司蘇州芯鎂信電子科技有限公司(以下簡稱“芯鎂信”)宣布推出針對氫燃料電池汽車氫氣泄漏檢測的傳感器智能模塊GTM-71,該模塊突破行內響應時間T80小于2s,首次實現T90小于2s的快速響應時間,同時通過了CNAS的計量校準、ELV等認證。行業先行,氫能源隱藏巨大市場氫能源是終極的清潔能源,是中國新能源未來發展的重點領域。近年來...

史海拾趣

問答坊 | AI 解惑

愚想問一下高頻正弦波是如何產生的

哪位能告訴我,先謝謝了!!…

查看全部問答∨

18-泰克TDS220示波器使用指導書.doc

1 現以測漂移產生為例說明示波器使用基本操作規范及步驟:... 5 2 抖動產生測試操作步驟:... 7 3 相位瞬變測試操作步驟: 7…

查看全部問答∨

多種PLC系統設計與調試過程

(一)分析被控對象并提出控制要求     詳細分析被控對象的工藝過程及工作特點,了解被控對象機、電、液之間的配合,提出被控對象對 PLC控制系統的控制要求,確定控制方案,擬定設計任務書。     (二)確定輸入/輸出設備 ...…

查看全部問答∨

程序蒙太奇——Stellaris開發板網絡部分小記 (1)

喜歡看電影和影評的同學,一定聽說過“蒙太奇”這個術語。蒙太奇(montage)來自法文,大致意思就是,把幾件并行發生的事情,剪輯成片段,穿插著表現出來。格里菲斯導演的《黨同伐異》中,導演就巧妙地把時空相距甚遠的不同活動剪輯在一起,開創了 ...…

查看全部問答∨

誰有Keil uVision3的漢化補丁?

我安裝了Keil c51v8.02,但是英文的,很多地方看不大明白,需要一個漢化補丁將菜單漢化,在網上搜了很久都沒找到,希望大蝦們幫個忙,告訴我一個下載地址或是發到我的箱1060552279@qq.com,謝謝!…

查看全部問答∨

44B0裸機外部中斷問題 求助啊

平臺:44b0 調試軟件:Codewarrior for ARM 1.2(因為燒寫了U-BOOT,所以初始地址我設置為了0x0c008000) 在線調試器:J-LINK 工程包含文件:Init.s,Main.c Init.s:                  I ...…

查看全部問答∨

基于Multisim的多路報警系統設計

要求:使用51單片機,使用C語言編寫程序…

查看全部問答∨

那位大俠能提供ipaq 6900 SDK

進來想在6915上面寫一個用到GPRS的程序 急需6900系列sdk 不知道哪位大俠有,能給我用下么? mail:starmanwt@sina.com 先謝謝了…

查看全部問答∨

關于union的奇怪的問題

大家好,我遇到了一個從沒有想到的問題: union { ulong N; uchar B[4]; } K; 。。。。    K.N=37534852  //=0x02 3c bc 84 for (i=0;i…

查看全部問答∨

看了它們51的DIY,也發我一年之前做的一個小東西

功能主要如下: 1.具有中文顯示 2.具有鬧鐘功能,完全用51定時器實現,沒有用到時鐘芯片,經長期的校準,一天只差2分鐘。 3.帶有斷電存儲功能,利用at24c04實現 4.帶有溫度顯示,18b20,呵呵  …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 巴青县| 冷水江市| 阿勒泰市| 江阴市| 宝应县| 观塘区| 益阳市| 桓仁| 密山市| 横山县| 饶平县| 阿克陶县| 荣昌县| 桃江县| 张北县| 阳城县| 平度市| 静宁县| 化隆| 安顺市| 府谷县| 南投市| 涞源县| 上饶市| 确山县| 屏东县| 武乡县| 北辰区| 襄垣县| 长子县| 浙江省| 瑞丽市| 临泽县| 民乐县| 景东| 承德市| 大兴区| 普陀区| 延寿县| 阿鲁科尔沁旗| 象山县|