打印
[国产单片机]

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

[复制链接]
4511|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用了下这个Flash模拟EE功能,挺方便的,不用外接EE了。
这个EE有防掉电的功能,蛮好!不怕写数据的时候掉电。
目前已进行了200万次擦写,数据都正确。
敲黑板,划重点:附件工程含源码,改一改,还可以用在其它的MCU上。哈哈~

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


上干货

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

1.    适用芯片
u  HC32L110系列
u  HC32F003系列
u  HC32F005系列

2.    功能特点
u  通过软件算法使用片内FLASH存储器实现可配置大小的EE存储区,默认为32字节。
u  EE存储区(32字节)的数据擦写次数不少于600万次。
u  EE存储区写入操作为原子操作,写数据时断电不会造成数据混乱。
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。


HDEE5使用说明.pdf

145.8 KB

HDEE5 Demo.zip

88.72 KB

相关帖子

沙发
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板块 都打不开..

使用特权

评论回复
5
rgjinxuan| | 2018-8-7 08:46 | 只看该作者
别吹 误导人家

使用特权

评论回复
6
gx_huang| | 2018-8-7 08:53 | 只看该作者
是呀,我们都是工程师,不要拿消费品广告手法来忽悠我们。
这么说来,空间换寿命,我说擦写寿命1万万,可以吗?
我的SSD擦写寿命接近无穷大,可以吗?1个480G的只存1个扇区的数据。

使用特权

评论回复
7
smartpower|  楼主 | 2018-8-7 21:53 | 只看该作者
当MCU没有用完所有和程序存储空间时,用空余的空间当个【小EE】来用,有什么不对吗?
难道你的每个项目都能刚好用完程序存储空间?

使用特权

评论回复
8
smartpower|  楼主 | 2018-8-7 21:59 | 只看该作者
供应需要的同行。
使用条件:Flash有剩余空间,项目内需要小量存储数据,不愿意接外接EE。
大神请绕道。

使用特权

评论回复
9
smartpower|  楼主 | 2018-8-18 20:15 | 只看该作者
2K字节模拟32字节的理论有效次数为:Flash擦写次数 * 2048/32 = 10万 * 64 = 640万次。


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



使用特权

评论回复
10
linqing171| | 2018-8-19 22:44 | 只看该作者
以前测试flash的时候,发现过一个现象,做了压力测试后,过了。
可是过十几分钟,里面的内容就丢了。重新烧进去,还是只能**十几分钟。
后来用台湾某厂家的EEPROM也是这个现象,而且是逐位变化的,几秒丢一位。

使用特权

评论回复
11
Blueriderr| | 2018-8-27 14:58 | 只看该作者
围观

使用特权

评论回复
12
richwen| | 2018-9-6 16:19 | 只看该作者
学习中

使用特权

评论回复
13
dandadudou| | 2018-12-14 11:45 | 只看该作者
linqing171 发表于 2018-8-19 22:44
以前测试flash的时候,发现过一个现象,做了压力测试后,过了。
可是过十几分钟,里面的内容就丢了。重新烧 ...

寿命到了,漏电

使用特权

评论回复
14
qq542731976| | 2022-6-2 09:59 | 只看该作者
谢谢分享!

使用特权

评论回复
15
渔夫的烟斗| | 2022-7-27 13:29 | 只看该作者
这个是IAR?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

442

帖子

11

粉丝