新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C8051F35X單片機內部Flash存儲器的擦寫方法

        C8051F35X單片機內部Flash存儲器的擦寫方法

        作者: 時間:2010-04-14 來源:網絡 收藏

        2 的鎖定與解鎖
        操作之前,必須按順序向鎖定和關鍵碼寄存器(FLKEY)寫入正確的關鍵碼,該關鍵碼禁止對知識產權信息(以程序或常數形式存儲在Flash中)進行未經授權訪問或防止用戶無意修改程序代碼以及因系統條件異常導致代碼改變。寫關鍵碼時必須按順序寫,否則Flash寫入或擦除操作被禁止,直到下一次系統復位。存儲在Flash用戶空間的最后一個字節的安全鎖定字節保護Flash,使其不被非保護代碼或通過硬件接口讀寫或擦除。使用安全鎖定字節時有以下關鍵點:1)將Flash安全字節中的位設置為0,保護Flash不通過JTAG接口被訪問;2)采用軟件設置一個軟件讀訪問限制,保護存儲器不被讀取;3)已被軟件訪問保護的Flash存儲器也應用Flash安全字節進行保護。使其不通過JTAG接口訪問;4)在保護Flash時,包含Flash安全字節的Flash頁也應保護;5)如果最終用戶無需訪問Flash,可通過簡單鎖定整個Flash存儲器保護其不通過JTAG訪問。

        3 Flash數據擦除
        采用軟件MOVX指令對Flash存儲器編程,在使用MOVX指令前,先允許Flash寫操作,其過程為:1)將程序存儲寫允許位PSWE(PSCTL.0)設置為邏輯“1”,這將使MOVX操作指向目標Flash存儲器;2)按順序向Flash鎖定寄存器(FLKEY)寫入Flash關鍵碼,PSWE位將保持置位狀態,直到被軟件清除。
        在采用軟件修改Flash內容前,PSWE必須置為邏輯“l”;而在軟件擦除Flash存儲器前,PSWE位和PSEE位都必須置為邏輯“1”。寫入Flash存儲器操作可清除數據位,但不能使數據位置“1”,只有擦除操作能將Flash中的數據位置為“l”。所以在寫入新值前,必須先擦除待編程地址。Flash存儲器是以512字節的扇區為單位構成的,一次擦除操作將擦除整個扇區(將扇區內的所有字節置為OXFF)。
        擦除一個扇區的步驟如下:1)禁止中斷;2)置“l”程序存儲器擦除允許位(PSCTL中的PSEE),以允許Flash扇區移除:3)置“1”程序存儲器寫允許位(PSCTL中的PSWE),允許Flash寫入;4)向FLKEY寫第1個關鍵碼:0XA5;5)向FLKEY寫第2個關鍵碼:0XFl;6)用MOVx指令向待擦除頁內的任何一個地址寫入1個數據字節;7)清除PSWE和PSEE位;8)重新允許中斷。

        4 Flash數據寫入
        Flash存儲器可一次寫1個字節,也可一次寫1組字節,寄存器PFEOCN中的FLBWE位為一次Flash寫操作可寫入1個或2個字節。當FLBWE清零時,每次Flash寫操作寫入1個字節;當FLBWE位置為“1”時,每次Flash寫操作寫入2個字節(塊寫)。塊寫時間與單字節寫的時間相同,在向Flash存儲器寫入大量數據時可節省時間。在單字節寫Flash時,分別寫入字節數據,每個MOVX寫指令執行一次Flash寫操作。C805lF35X的Flash存儲器寫入程序代碼如下:


        5 Flash數據讀取
        由于Flash讀操作采用MOVC指令實現,因此用于讀操作的Flash指針必須是CODE類型。由于Flash寫操作是用MOVX指令實現的,所以寫入或擦除操作的Flash指針必須是XDATA類型。對于的Flash存儲器讀取數據程序代碼如下:

        存儲器相關文章:存儲器原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泗水县| 天柱县| 西乌| 新兴县| 沂源县| 务川| 毕节市| 安远县| 勐海县| 常州市| 庐江县| 南靖县| 军事| 北京市| 哈巴河县| 鹿泉市| 鲜城| 扎囊县| 乐昌市| 西平县| 萝北县| 龙江县| 吴忠市| 黔江区| 铁岭市| 南开区| 望谟县| 遂川县| 合阳县| 铜鼓县| 白河县| 牙克石市| 四平市| 滨州市| 赫章县| 苗栗县| 怀仁县| 大洼县| 肇源县| 宁化县| 青岛市|