做猩芯的程序猿 发表于 2013-6-19 23:39:38

程序操作Flash功能当EEPROM是否可行

看到海尔的7P系列芯片有程序操作Flash的功能,请教小海该功能能否当成E2用?使用时有什么要注意的地方,换句话就是跟使用E2有什么区别

zhvdoo 发表于 2013-6-20 13:34:07

7P系统 193,194,195都支持 Flash 自擦写的。
配置字里FR_EN 需要打开。很多产品项目中都用到这个功能,用下来都蛮好的。
唯一让我不爽的就是程序里的ROM地址是15位的,用烧录器读ROM内容,显示是8位地址显示。需要自己对应一下。
还有就是程序代码空间不要与存储的位置重叠,不然写操作一下,程序就死机了。

海尔_小海 发表于 2013-6-24 14:03:51

海尔单片机FLASH存储器可以替换EEPROM使用,使用注意事项:
1、FLASH读写操作功能一定要把配置字的FREN(FLASH读写擦除使能位打开)。
2、FLASH写之前一定要先执行擦除操作,由于FLASH工艺的原因,FLASH擦除只支持页擦除(每页128个WORDS),在执行擦除过程中主频需要暂停20ms。
   这样客户在对FLASH写数据的时间点选择上需要考虑到主频暂停20ms的特点(在主频暂停期间IO口状态保持不变,和主频相关的外围模块会暂停)。

int3 发表于 2013-6-24 17:16:05

本帖最后由 int3 于 2013-6-24 17:26 编辑


//****************************************Copyright (c)**************************************************
//**                                    海尔7P系列EEPROM程序                              
//**                                    INT3
//**                                        QQ:263132814
//**--------------文件信息-------------------------------------------------------------------
#define                nop()                __Asmnop
#define                nop8()                nop();nop();nop();nop();nop();nop();nop();nop()
//********************************************
//写ROM:将DD写入DR对应的单元
////COM(0X8C擦除,0X84写),DR是地址,DD是数据
//********************************************
void write_eeprom(u8 com,u16 DR,u16 DD)
{
        FRA=DR;                   //ROM单元地址
        ROMD=DD;                   //数据
        CLR_WDT();                 //清看门狗   
        GIE_GIEH=0;                //关中断
        MTRG=0;                        //为了解决C编译平台的BANK切换
        ROMCL=com;                //命定
        ROMCH=0x55;                //               
        nop8();                        //
        ROMCH=0xAA;                //
        nop8();                        //
        MTRG=1;                        //开始启动
        while(MTRG);                //检测是否完成
        ROMCH=0;                //
        CLR_WDT();                //
        GIE_GIEH=1;                //开中断
}
//********************************************
//读ROM,结果保存在ROMDH,ROMDL中
//********************************************
u16 read_eeprom(u16 DR)
{
        FRA=DR;                        //ROM地址
        ROMCL=0X81;                //命定
        while(MRTRG);                //启动                       
        return ROMD;
}

做猩芯的程序猿 发表于 2013-6-26 22:52:48

谢啦,2楼3楼4楼,用了一下,貌似还不错哦{:victory:}{:victory:}

laujc 发表于 2013-6-26 23:30:27

做猩芯的程序猿 发表于 2013-6-26 22:52 static/image/common/back.gif
谢啦,2楼3楼4楼,用了一下,貌似还不错哦

一般FLash是有擦写次数的,注意读一下datasheet

做猩芯的程序猿 发表于 2013-6-27 08:04:51

int3 发表于 2013-6-24 17:16 static/image/common/back.gif
//****************************************Copyright (c)******************************************** ...

都在谢谢里

yat 发表于 2013-6-27 08:50:44

mark 海尔单片机Flash用作EEPROM

做猩芯的程序猿 发表于 2013-6-27 21:17:36

laujc 发表于 2013-6-26 23:30 static/image/common/back.gif
一般FLash是有擦写次数的,注意读一下datasheet

大概可擦写是多少次?

laujc 发表于 2013-6-27 21:33:32

看规格书,一般是标称1000次

海尔_小海 发表于 2013-6-28 10:54:07

做猩芯的程序猿 发表于 2013-6-27 21:17 static/image/common/back.gif
大概可擦写是多少次?

海尔FLASH单片机擦写次数介绍:
全温度范围内可以实现的擦写次数至少为20000次。

gdrc 发表于 2013-6-29 17:07:40

内置EEPROM功能能简化电路设计,不错。

fshunj 发表于 2013-6-29 17:52:03

用软件实现,读-改-写回.

LDCH88 发表于 2013-7-2 16:52:02

海尔_小海 发表于 2013-6-24 14:03 static/image/common/back.gif
海尔单片机FLASH存储器可以替换EEPROM使用,使用注意事项:
1、FLASH读写操作功能一定要把配置字的FREN(FLA ...

这个20ms,是否影响PWM,比如PWM刚好输出高电平,碰到这个时间,就一直高电平20ms,直到写完成?

海尔_小海 发表于 2013-7-3 10:35:10

LDCH88 发表于 2013-7-2 16:52 static/image/common/back.gif
这个20ms,是否影响PWM,比如PWM刚好输出高电平,碰到这个时间,就一直高电平20ms,直到写完成? ...

会影响外围模块工作的,因为主频停振。所以PWM如果输出高电平,那么一直保持高电平直至FLASH擦除完成,恢复正常工作。
页: [1]
查看完整版本: 程序操作Flash功能当EEPROM是否可行