smartpower 发表于 2018-8-5 20:58

试了一下华大MCU的用内置Flash模拟EE的功能,还不错

用了下这个Flash模拟EE功能,挺方便的,不用外接EE了。
这个EE有防掉电的功能,蛮好!不怕写数据的时候掉电。
目前已进行了200万次擦写,数据都正确。
敲黑板,划重点:附件工程含源码,改一改,还可以用在其它的MCU上。哈哈~

----------------------------------------------------------------------


上干货

----------------------------------------------------------------------

1.    适用芯片uHC32L110系列uHC32F003系列uHC32F005系列
2.    功能特点u通过软件算法使用片内FLASH存储器实现可配置大小的EE存储区,默认为32字节。uEE存储区(32字节)的数据擦写次数不少于600万次。uEE存储区写入操作为原子操作,写数据时断电不会造成数据混乱。u用户只需要调用相应的读写函数即可实现对EE存储区数据的读取与写入。u快速备份区(32字节)适用于即将掉电时快速保存运行参数,仅需1.2ms即可保存32字节。u默认使用的数据存储区为4个Flash Page,即2K字节。u不使用快速备份区时,软件算法占用的ROM区为876字节(IAR最高优化)。u使用快速备份区时,软件算法占用的ROM区为1228字节(IAR最高优化)。

3.    EE存储区使用方法3.1在项目工程中添加HDEE5.C文件。3.2在程序的初始化阶段调用HDEE_Ini函数。3.3使用HDEE_Read函数读取EE存储区内的数据。3.4使用HDEE_Write函数将数据写入到EE存储区。
4.1 EE存储区初始化函数原型:void HDEE_Ini( void );      功能:初始化EE相关的数据存储区域。      参数:无。   条件:需要用户将系统时钟切换为4MHz。
4.2    EE存储区读取函数原型:uint8_t HDEE_Read(uint8_t EeAddr, uint8_t *pRdBuf , uint8_t RdCnt );      功能:按参数要求读取EE内的数据。      参数:EeAddr – 待读取的数据位于EE内的地址,范围为0-31。               pRdBuf – 读到的数据的存储指针。RdCnt– 需要读取的数据的字节数。返回:返回非0代表成功读取数据,返回0代表读取数据失败。
4.3    EE存储区存储函数原型:uint8_t HDEE_Write(uint8_t EeAddr, uint8_t *pWrBuf , uint8_t WrCnt );      功能:按参数要求将数据存储到EE。      参数:EeAddr – 待存储的数据位于EE内的目标地址,范围为0-31。               pWrBuf – 待存储的数据的指针。WrCnt– 待存储的数据的字节数。返回:返回非0代表成存储数据,返回0代表存储数据失败。
条件:需要用户将系统时钟切换为4MHz。

xyz549040622 发表于 2018-8-6 17:30

flash可以擦除200多万次?真的假的?

smartpower 发表于 2018-8-6 19:57

2K字节flash,模拟64字节的EE。空间换寿命

eydj2008 发表于 2018-8-7 08:02

官网的MCU板块 都打不开..

rgjinxuan 发表于 2018-8-7 08:46

别吹 误导人家

gx_huang 发表于 2018-8-7 08:53

是呀,我们都是工程师,不要拿消费品广告手法来忽悠我们。
这么说来,空间换寿命,我说擦写寿命1万万,可以吗?
我的SSD擦写寿命接近无穷大,可以吗?1个480G的只存1个扇区的数据。

smartpower 发表于 2018-8-7 21:53

当MCU没有用完所有和程序存储空间时,用空余的空间当个【小EE】来用,有什么不对吗?
难道你的每个项目都能刚好用完程序存储空间?

smartpower 发表于 2018-8-7 21:59

供应需要的同行。
使用条件:Flash有剩余空间,项目内需要小量存储数据,不愿意接外接EE。
大神请绕道。

smartpower 发表于 2018-8-18 20:15

2K字节模拟32字节的理论有效次数为:Flash擦写次数 * 2048/32 = 10万 * 64 = 640万次。


找了颗芯片,实测了该模拟出的EE的有效擦写次数。
第2580万9934次的时候失效了。
看来运气不错,这颗芯片比较强壮。



linqing171 发表于 2018-8-19 22:44

以前测试flash的时候,发现过一个现象,做了压力测试后,过了。
可是过十几分钟,里面的内容就丢了。重新烧进去,还是只能**十几分钟。
后来用台湾某厂家的EEPROM也是这个现象,而且是逐位变化的,几秒丢一位。

Blueriderr 发表于 2018-8-27 14:58

围观

richwen 发表于 2018-9-6 16:19

学习中

dandadudou 发表于 2018-12-14 11:45

linqing171 发表于 2018-8-19 22:44
以前测试flash的时候,发现过一个现象,做了压力测试后,过了。
可是过十几分钟,里面的内容就丢了。重新烧 ...

寿命到了,漏电

qq542731976 发表于 2022-6-2 09:59

谢谢分享!

渔夫的烟斗 发表于 2022-7-27 13:29

这个是IAR?
页: [1]
查看完整版本: 试了一下华大MCU的用内置Flash模拟EE的功能,还不错