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

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用C語言編程操作SPMC75內(nèi)部Flash的方法

            用C語言編程操作SPMC75內(nèi)部Flash的方法

            作者: 時(shí)間:2011-10-21 來源:網(wǎng)絡(luò) 收藏
            1引言
              支持C語言幾乎是所有微控制器程序設(shè)計(jì)的一項(xiàng)基本要求,當(dāng)然系列單片機(jī)也不例外。μ'nSPTM 指令結(jié)構(gòu)的設(shè)計(jì)就著重考慮對C語言的支持,GCC就是一種針對μ'nSPTM 操作平臺的ANSI-C編譯器。但是在應(yīng)用中對于程序的設(shè)計(jì),特別是C和ASM混合使用的時(shí)候有些地方是需要注意的,在C中如何嵌入ASM也是一個(gè)不可回避的問題。

            2單片機(jī)FLASH硬件資源分析
              系列微控制器Flash分為兩區(qū):信息區(qū)和通用區(qū),在同一時(shí)間只能訪問其中的一區(qū)。信息區(qū)包含64個(gè)字,尋址空間為0x8000 ~ 0x803F。地址0x8000為系統(tǒng)選項(xiàng)寄存器P_System_Option。其他地址空間可由用戶自定義重要信息比如:版本控制、日期、版權(quán)、項(xiàng)目名稱等等。信息區(qū)的內(nèi)容只有在仿真或燒錄的狀態(tài)下才能改變。
              32k字的內(nèi)嵌Flash(embedded Flash)被劃分為16個(gè)頁,每頁2K字,每頁可分為8塊,這樣32K的Flash就可以分成128個(gè)塊。只有位于00F000 ~00F7FF區(qū)域的頁在自由運(yùn)行模式下可以設(shè)置為只讀或可讀可寫,其他頁均為只讀。SPMC75系列微控制器的32K字的內(nèi)嵌式閃存結(jié)構(gòu)入下圖2-1和圖2-2。

            圖2-1信息區(qū)結(jié)構(gòu)      圖2-2頁和幀結(jié)構(gòu)

            2.1 FLASH操作
            ◆ FLASH相關(guān)寄存器
              Flash有兩個(gè)控制寄存器:P_Flash_RW ($704D)和P_Flash_Cmd ($7555).。
              P_Flash_RW ($704D)是Flash訪問控制接口,用連續(xù)兩次寫操作進(jìn)行設(shè)置,這樣避免誤寫入。首先向該寄存器寫入$5a5a,然后在16個(gè)CPU時(shí)鐘周期內(nèi)再向該寄存器寫入設(shè)置字。

            表 2-1 Flash寄存器和系統(tǒng)寄存器

            地址

            寄存器

            名稱

            704Dh

            P_Flash_RW

            內(nèi)嵌 Flash 的訪問控制寄存器

            7555h

            P_Flash_Cmd

            內(nèi)嵌 Flash 的控制寄存器

              P_Flash_RW ($704D):內(nèi)嵌的Flash訪問控制寄存器
              P_Flash_RW ($704D)是Flash訪問控制接口,用連續(xù)兩次寫操作進(jìn)行設(shè)置,這樣避免誤寫入:首先向該寄存器寫入$5a5a,然后在16個(gè)CPU時(shí)鐘周期內(nèi)再向該寄存器寫入設(shè)置字。

            B15

            B14

            B13

            B12

            B11

            B10

            B9

            B8

            R

            R/W

            R

            R

            R

            R

            R

            R

            1

            0

            1

            1

            1

            1

            1

            1

            保留

            BK14WENB

            BK13WENB

            BK12WENB

            BK11WENB

            BK10WENB

            BK9WENB

            BK8WENB


            B7

            B6

            B5

            B4

            B3

            B2

            B1

            B0

            R

            R

            R

            R

            R

            R

            R

            R

            1

            1

            1

            1

            1

            1

            1

            1

            BK7WENB

            BK6WENB

            BK5WENB

            BK4WENB

            BK3WENB

            BK2WENB

            BK1WENB

            BK0WENB

              用控制寄存器將頁設(shè)置內(nèi)嵌FLASH為只讀或可讀可寫模式。

            類型 ( 默認(rèn) )

            描述

            B[15]

            保留

            B[14]

            R/W (0)

            Bank 14

            Frame 112~119

            F000h-F7FFh 訪問控制

            1= 只讀

            0= 讀 / 寫

            B[13:0]

            保留

              P_Flash_Cmd ($7555):內(nèi)嵌的Flash訪問控制寄存器
              用于處理Flash的指令,見表2-3

            B15

            B14

            B13

            B12

            B11

            B10

            B9

            B8

            W

            W

            W

            W

            W

            W

            W

            W

            0

            0

            0

            0

            0

            0

            0

            0

            FlashCtrl


            B7

            B6

            B5

            B4

            B3

            B2

            B1

            B0

            W

            W

            W

            W

            W

            W

            W

            W

            0

            0

            0

            0

            0

            0

            0

            0

            FlashCtrl

            表 2-2 指令功能和操作流程

            塊擦除

            單字寫模式

            連續(xù)多字寫模式

            第一步

            P_Flash_CMD = 0xAAAA

            第二步

            [ P_Flash_CMD ] = 0x5511

            [ P_Flash_CMD ] = 0x5533

            [ P_Flash_CMD ] = 0x5544

            第三步

            設(shè)置擦除地址

            寫數(shù)據(jù)

            寫數(shù)據(jù)

            第四步

            自動(dòng)等待 20ms 后結(jié)束

            自動(dòng)等待 40us 后結(jié)束

            自動(dòng)等待 40us

            未寫完則轉(zhuǎn)向第二步

            [ P_Flash_CMD ]= 0xFFFF à 操作結(jié)束令

            2.2 FLASH操作使用舉例
            ◆Flash塊擦除操作

            //擦除Flash的第14頁的第0塊
            P_Flash_CMD->W = 0xAAAA; //寫控制命令
            P_Flash_CMD->W = 0x5511; //寫入塊擦除命令
            //要檫除的塊任一地址寫入任意數(shù)據(jù),則擦除此塊
            P_WordAdr = (unsigned int *)0xF000;
            *P_WordAdr = 0x5555;

            ◆ Flash單字寫操作

            //擦除Flash的第14頁的第0塊
            //寫控制命令
            P_Flash_CMD->W = 0xAAAA;
            //寫入塊擦除命令
            P_Flash_CMD->W = 0x5511;
            //0xF000單元寫入數(shù)據(jù)0x5555
            P_WordAdr = (unsigned int *)0xF000;
            *P_WordAdr = 0x5555;

              Flash的特點(diǎn)是編程數(shù)據(jù)寫入時(shí)只能將1變成0,不能從0變成1。因此,用戶在對Flash編程之前,必須首先執(zhí)行Flash塊擦除或者頁擦除命令,這樣就可以將數(shù)據(jù)從0"擦除"為1。

            ◆ Flash連續(xù)寫操作
            采用連續(xù)編程模式向Flash的0xF000 到 0xF060地址空間連續(xù)寫入數(shù)據(jù)。

            // 寫數(shù)據(jù)到 0xF001~0xF060的連續(xù)單元中,設(shè)這段空間已經(jīng)擦//除過。
            P_WordAdr = (unsigned int *)0xF001;
            uiData = 11;
            P_Flash_CMD->W = 0xAAAA; //寫控制命令
            for(i = 1;i = 96;i ++)
            {
               P_Flash_CMD->W = 0x5544; //寫入連續(xù)數(shù)據(jù)寫命令
               *P_WordAdr = uiData; //寫入數(shù)據(jù)
               uiData ++;
               P_WordAdr ++;
            }
            P_Flash_CMD->W = 0xFFFF; //結(jié)束數(shù)據(jù)寫入操作



            評論


            相關(guān)推薦

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

            關(guān)閉