中颖EEPROM存储器的操作原则

描述

    EEPROM(Electrically Erasable Programmable readonly memory)是指带电可编程只读存储器。是一种掉电后数据不丢失的存储芯片。

  中颖Flash型MCU都集成有EEPROM,EEPROM用来存放用户数据。EEROM大小可以通过option(代码选项)选择0~4K不等。EEPROM按照扇区进行划分,每个扇区的大小512字节(较早的产品,每个扇区大小256字节),最多支持8个扇区。

  中颖的EEPROM编程/擦除次数:至少100000次

  中颖的EEPROM数据保存年限:至少10年

  中颖EEPROM的操作原则:

  1 必须关闭所有中断

  如果在操作EEPROM期间,不关闭中断,可能会导致程序跑飞或者其它异常情况;中颖MCU要求对于EEPROM的擦除和编程,需要按照规定关闭所有中断(EA=0),等到编程完成后再打开中断。

  2 如何访问EEPROM

  中颖芯片对于EEPROM的读、擦和写都是通过寄存器FLASHCON的FAC位置1来操作。当FAC=0时,MOVC指令或者SSP功能访问Main Block区域;当FAC=1时,MOVC指令或者SSP功能访问类EEPROM区域或信息存储区。

A7HBank0

7

6

5

4

3

2

1

0

FLASHCON

-

-

-

-

-

-

 

FAC

/

-

-

-

-

-

-

/

/

复位值

(POR/WDT/LVR/PIN)

-

-

-

-

-

-

0

0

 

位编号

位符号

说明

7-1

-

保留位

0

FAC

访问控制

0MOVC指令或者SSP功能访问Main  Block区域

1MOVC指令或者SSP功能访问类EEPROM区域或信息存储区

  3 操作EEPROM前,清WDT

  在对EEPROM的操作前,清WDT,保证操作期间不溢出

  4 抗干扰

  同时,为了抗干扰,防止误操作,EEPROM编程可以参考如下例程:

 uchar ssp_flag

voidEEPromSectorErase(UCHAR nAddrH)// 扇区擦除

{                                                                                                    

     ssp_flag= 0xA5;

_push_(IEN0);//中断控制压栈

     IEN0&=0x7F;//关总中断   

         FLASHCON = 0x01;  //访问EEPROM

RSTSTAT = 0;    //WDT                                                      

         XPAGE= nAddrH<<1 ;                                                  

 

         IB_CON1   = 0xE6;  

         IB_CON2   = 0x05;

         IB_CON3   = 0x0A;

         IB_CON4   = 0x09;

 

         if(ssp_flag!=0xA5)//增加flag判断,增强抗干扰

                   goto Error;

         IB_CON5   = 0x06;

         _nop_();                              

         _nop_();

         _nop_();

         _nop_();  

Error:

         ssp_flag= 0;

         IB_CON1= 0x00;

         IB_CON2= 0x00;

         IB_CON3= 0x00;

         IB_CON4= 0x00;

         IB_CON5= 0x00;

        

         FLASHCON= 0x00;//切回FLASH

    _pop_(IEN0);//恢复总中断

}

 

voidEEPromByteProgram(UCHAR nAddrH,UCHAR nAddrL, UCHAR nData)  // 扇区编程

{

         ssp_flag= 0x5A;

    _push_(IEN0); //中断控制压栈

    IEN0&=0x7F;//关总中断     

         FLASHCON= 0x01; //访问EEPROM

         RSTSTAT = 0;    //WDT

         XPAGE= nAddrH;                                                  

         IB_OFFSET= nAddrL;

         IB_DATA= nData;  // 烧写内容

 

         IB_CON1   = 0x6E;

         IB_CON2   = 0x05;

         IB_CON3   = 0x0A;

         IB_CON4   = 0x09;

 

         if(ssp_flag!=0x5A) //增加flag判断,增强抗干扰

                   goto Error;

         IB_CON5   = 0x06;

         _nop_();                            

         _nop_();

         _nop_();

         _nop_();

Error:

         ssp_flag= 0;

         IB_CON1= 0x00;

         IB_CON2= 0x00;

         IB_CON3= 0x00;

         IB_CON4= 0x00;

         IB_CON5= 0x00;

        

    FLASHCON= 0x00; //切回FLASH

    _pop_(IEN0); //恢复总中断

 

 

 

原文标题:中颖8位MCU EEPROM使用注意事项

文章出处:【微信公众号:中颖电子】欢迎添加关注!文章转载请注明出处。
审核编辑:汤梓红


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分