jlink读取flash(Jlink读取芯片内部EEPROM)

jlink读取flash(Jlink读取芯片内部EEPROM)本篇文章的具体内容 1 初步认识 Flash 2 Flash 写入多个数 3 读取 Flash 中存储的数值 一 初步认识 FLASH 如果想要实现掉电存储 首要的任务就是找到一个地方可以存放这些数据 当这些数据发生改变的时候 把数据存放进去 并且保证上电后不会被擦除 这么一来 等在次上电之后 通过读取掉电前存储的数据 实现掉电存储功能 可以存放数据的地方可分为在两种片上 flash 和片外 flash 常见的片上闪存有 EEPROM 片外的存储芯片有 W25QXXX




本篇文章的具体内容:
1. 初步认识Flash
2. Flash写入多个数
3. 读取Flash中存储的数值

一、初步认识FLASH

如果想要实现掉电存储,首要的任务就是找到一个地方可以存放这些数据,当这些数据发生改变的时候,把数据存放进去,并且保证上电后不会被擦除。这么一来,等在次上电之后,通过读取掉电前存储的数据,实现掉电存储功能。

可以存放数据的地方可分为在两种片上flash和片外flash,常见的片上闪存有EEPROM,片外的存储芯片有W25QXXX。本篇文章使用的是直接在FLASH中存储。根据不同的芯片类型,闪存的大小都是不一样的。如下图(其他博客截取来的):

stm32cubemx掉电保存_嵌入式


主控芯片的内存一般可分为8块:存放初始化程序的固化部分、数据段、代码段、堆空间、栈空间等。掉电存储数据的地方在第0块中的某个位置(0X0800 0000 ~0X0808 0000,这个的大小对应芯片闪存大小)只要存放的数据不超出这个范围,一切都好说。

二、FLASH写入数据

通过对上面的了解,大概知道了存放的位置。之后就可以向这个位置里面为所欲为啦?当然不是。下面以STM32标准库为例,你需要在工程里面加入stm32f10x_flash.c文件,这个文件抱恨了很多对flash操作的方法,我们只需要调用这些方法才可以为所欲为。(膜拜驱动大佬)。
怎么实现为所欲为呢?一般有两种:读和写。
写入:检查状态–>解锁–>擦除–>写入–>上锁–>完事。
读取:解锁–>读取–>上锁–>完事。

有了这个函数之后,在封装一个函数,把想要存储的变量数据对应放到一个数组里面,然后将整一个数组写到flash中,实现最终的写入功能。

三、读取FLASH中存储的数据

通过上面的写入函数,就可以把数据写入到flash中了,之后找到同一个地址,将数据读取出来,读取的长度和写进去的长度一致,之后将数据存到一个数组当中,再将数组的值对应赋值给保存进来的时的变量,就可以实现读取功能。

最后,只需要在主程序中的适当位置,调用闪存写入函数(一般是当数据发生改变时写入)。但尽量减少写入的次数,flash的读写次数在十万次左右。
STM32实现掉电保存功能的详细工程点击即可跳转下载。


编程小号
上一篇 2025-02-28 08:11
下一篇 2025-02-07 18:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/43814.html