世纪电源网社区logo
社区
Datasheet
标题
返回顶部
原创

简易使用STM32 FLASH模拟EEPROM

[复制链接]
查看: 1650 |回复: 2
1
BingSun
  • 积分:10963
  • |
  • 主题:54
  • |
  • 帖子:1975
积分:10963
LV10
总工程师
  • 2020-7-4 12:35:44
因为STM32系列芯片没有内置EEPROM,所以很多人都喜欢利用FLASH模拟EEPROM。
经过半天的编程调试,把它简化为两个函数:
1、存入一个数据。
void Write_Flash_data(u8 addr,u16 data);//
2、读出来个数据。
u16 Read_Flash_data(u8 addr);  //

应用示例:
如DMX512设备地址更改为100,并把它存入FLASH:
Write_Flash_data(dmx_addr,100);//
如读取DMX512设备地址:
X = Read_Flash_data(dmx_addr);//

需要注意的是STM32 FLASH在写之前需擦除再写,而且必须一次最小擦除1页,1页大小通常为1K或2K(与容量大小有关)
如果FLASH是128K以下,那么每页大小是1K,由于STM32只能用半字节,所以每页只能存512个数据。

另外一个很重要的问题是,如果擦除完当前页,突然断电了,那么数据就不会更新到LASH,也就造成数据丢失。
为保证这种意外发生后,数据得以保存,使用两页来存储数据,这里使用第40页与41页,两页内容一样,互为备份。

MCU上电时检验两页数据是否正常,如果是首次上电会加载默认参数到FLASH中。


收藏收藏
songyuanbin
  • 积分:215
  • |
  • 主题:0
  • |
  • 帖子:11
积分:215
LV3
助理工程师
  • 2020-7-7 10:09:12
  • 倒数2
 
好想法,还有后续吗
BingSun
  • 积分:10963
  • |
  • 主题:54
  • |
  • 帖子:1975
积分:10963
LV10
总工程师
最新回复
  • 2020-7-8 10:15:13
  • 倒数1
 
已经完了,把程序封装成为像操作EEPROM一样简单。
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号