新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于STC單片機EEPROM的應用總結

        關于STC單片機EEPROM的應用總結

        作者: 時間:2016-12-01 來源:網絡 收藏
        當在程序運行的過程中你希望修改某個變量并且此變量的值在掉電以后不丟失,那么你就可以采用將變量數據寫入EEPROM的方式來實現。
        什么是EEPROM,即Electrically Erasable ProgrammableRead_Only Memory首先它是一種存儲器,并且可以通過高電壓來進行反復擦寫的存儲器。具有掉電數據不丟失的特點。比如常用的24C系列,93C系列的器件。一般這種器件采用I2C的方式與單片機進行通訊,對于這種通訊方式及器件的應用另作總結。這里主要總結一下,STC12C5204AD芯片內部包含的EEPROM的應用方法。
        STC12C5201AD系列單片機內部集成了EEPROM是與程序空間分開的,利用ISP/IAP技術可將內部dataflash當EEPROM,擦寫10萬次以上。
        EEPROM可分為若干個扇區,每個扇區包含512字節。
        使用時建議同一次修改的數據放在同一個扇區,不是同一次修改的數據放在不同的扇區,不一定要用滿。數據存儲器的擦除操作是按扇區進行的。
        在程序中可對EEPROM進行字節讀寫/字節編程/扇區擦除操作。在工作電壓Vcc偏低時,建議不要進行EEPROM/IAP操作。以免發生數據錯誤。
        應用的步驟
        1、聲明與EEPROM相關的寄存器
        2、編寫EEPROM初始化函數
        3、編寫字節擦除函數
        4、編寫字節編程函數
        5、編寫字節讀取函數
        6、在需要讀取EEPROM字節內容時直接調用字節讀取函數即可
        7、在需要進行寫EEPROM字節時,先調用字節擦除函數,將字節內容擦除成FFH后,在調用字節編程函數,將數據寫入到EEPROM的地址單元中。
        與EEPROM應用相關的寄存器

        本文引用地址:http://www.104case.com/article/201612/324568.htm
        符號
        描述
        地址
        位地址及符號
        復位值
        IAP_DATA
        ISP/IAP flash data register
        C2H
        1111 1111B
        IAP_ADDRH
        ISP/IAPflashaddress high
        C3H
        0000 0000B
        IAP_ADDRL
        ISP/IAP flash address low
        C4H
        IAP_CMD
        ISP/IAP flash command register
        C5H
        MS1
        MS0
        IAP_TRIG
        ISP/IAP flash command trigger
        C6H
        xxxxxxxxxB
        IAP_CONTR
        ISP/IAP control register
        C7H
        IAPEN
        SWBS
        SWRST
        CMD_FAIL
        WT2
        WT1
        WT0
        0000X000B
        PCON
        Power control
        87H
        SOMD
        SMOD0
        LVDF
        POF
        GF1
        GF0
        PD
        IDL
        00110000B

        1、IAP_DATA:ISP/IAP數據寄存器
        ISP/IAP操作時的數據寄存器。
        ISP/IAP從FlASH讀出的數據存放此處,向flash寫的數據也需要放在此處。
        2、IAP_ADDRH和IAP_ADDRL :IAP/ISP地址寄存器
        3、IAP_CMD:ISP/IAP命令寄存器

        MS1
        MS0
        命令/操作模式選擇
        0
        0
        Standby 待機模式,無ISP操作
        0
        1
        從用戶程序區對“data flash /EEprom區”進行字節讀
        1
        0
        從用戶的應用程序區對“data flash/eeprom區”進行字節編寫
        1
        1
        從用戶的應用程序區對“dataflash/eeprom區”進行扇區擦除

        4、IAP_TRIG:ISP/IAP命令觸發寄存器
        在IAPEN(IAP_CONTR.7)=1時,對IAP——trig先寫入5AH,在寫入A5H,ISPIAP命令才會生效
        ISPIAP操作完成后,IAP地址高8位寄存器IAP_ADDRH、IAP地址低8位寄存器IAP_ADDRL 和IAP命令寄存器IAP_CMD的內容不變。如果接下來要對下一個地址的數據進行IAP/ISP操作,需手動將該地址的高8位和低8位分別寫入IAP_ADDRH和IAP_ADDRL寄存器。
        每次IAP操作時,都要對IAP_TRIG先寫入5AH,再寫入A5H,ISP/IAP命令才會生效。
        5、IAP_CONTR:ISPIAP控制寄存器

        SFR name
        Address
        Bit
        B7
        B6
        B5
        B4
        B3
        B2
        B1
        B0
        IAP_CONTR
        C7H
        Name
        IAPEN
        SWBS
        SWRST
        CMD_FAIL
        _
        WT2
        WT1
        WT0

        IAPEN:ISP/IAP功能允許位:0:禁止IAP讀/寫/擦除 data flash /eeprom
        1:允許IAP讀/寫/擦除 dataflash/eeprom
        SWBW:軟件選擇從用戶應用程序區啟動(送0),還是從系統ISP監控程序啟動(送1)。
        要與SWRST直接配合使用才可以實現
        SWRST:0:不操作;1:產生軟件系統復位,硬件自動復位。
        CMD_FAIL:如果送了ISP/IAP命令,并對IAP_TRIG送5AH/A5H觸發失敗,則為1,需由軟件清零。
        在用戶應用程序區(AP區)軟件復位并從用戶應用程序區(AP區)開始執行程序。
        MOV IAP_CONTR,#00100000B;SWBS=0(選擇AP區),SWRST=1(軟復位)
        在用戶應用程序區(AP區)軟件復位并從系統ISP監控程序區開始執行程序
        MOV IAP_CONTR,#01100000B;SWBS=1(選擇ISP區),SWRST=1(軟復位)
        在系統ISP監控程序區軟件復位并從用戶應用程序區(AP區)開始執行程序
        MOV IAP_CONTR,#00100000B;SWBS=0(選擇AP區)SWRST=1(軟復位)
        在系統ISP監控程序區軟件復位并從系統ISP監控程序區開始執行程序。
        MOV IAP_CONTR,#01100000B;SWBS=1(選擇ISP區),SWRST=1(軟復位)
        設置等待時間

        設置等待時間
        CPU等待時間(多少個CPU工作時鐘)
        WT2
        WT1
        WT0
        Read/讀
        (2個時鐘)
        Program/編程(=55us)
        Sector erase
        扇區擦除
        =21us
        Recommended system clock
        跟等待參數對應的推薦系統時鐘
        1
        1
        1
        2個時鐘
        55個時鐘
        21012個時鐘
        <=1MHz
        1
        1
        0
        2個時鐘
        110個時鐘
        42024個時鐘
        <=2MHz
        1
        0
        1
        2個時鐘
        165個時鐘
        63036個時鐘
        <=3MHz
        1
        0
        0
        2個時鐘
        330個時鐘
        126072個時鐘
        <=6MHz
        0
        1
        1
        2個時鐘
        660個時鐘
        252144個時鐘
        <=12MHz
        0
        1
        0
        2個時鐘
        1100個時鐘
        420240個時鐘
        <=20MHz
        0
        0
        1
        2個時鐘
        1320個時鐘
        504288個時鐘
        <=24MHz
        0
        0
        0
        2個時鐘
        1760個時鐘
        672348個時鐘
        <=30MHz

        12c系列單片機內部EEPROM選型一覽表

        型號
        字節數(eeprom)
        扇區數
        起始扇區首地址
        結束扇區末尾地址
        STC12C5201AD/PWM
        2K
        4
        0000h
        07ffh
        STC12C5202AD/PWM
        2k
        4
        0000h
        07ffh
        STC12C5203AD/PWM
        2k
        4
        0000h
        07ffh
        STC12C5204AD/PWM
        1k
        2
        0000h
        03ffh
        STC12C5205AD/PWM
        1k
        2
        0000h
        03ffh


        上一頁 1 2 3 下一頁

        關鍵詞: STC單片機EEPRO

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 佛坪县| 象州县| 台北县| 华安县| 浦东新区| 呼和浩特市| 富裕县| 历史| 邯郸市| 马关县| 藁城市| 伊春市| 民县| 饶平县| 东兰县| 沾益县| 西和县| 凉城县| 黑龙江省| 宁化县| 辉南县| 同心县| 林芝县| 谷城县| 花垣县| 胶州市| 观塘区| 洪雅县| 洪泽县| 兴海县| 上栗县| 肃宁县| 沙坪坝区| 洞头县| 许昌市| 马龙县| 南郑县| 陆良县| 陕西省| 英超| 班玛县|