中颖8位MCU EEPROM使用注意事项

cathy的头像
cathy 发布于:周三, 11/30/2022 - 18:20 ,关键词:

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区域或信息存储区。

1.png

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_();  

 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); //恢复总中断

来源:中颖电子(作者:丁晓明)

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 377