creep 发表于 2015-6-3 21:47:29

【STM32F303开发】+ 内部Flash模拟EEPROM

本帖最后由 creep 于 2015-6-3 22:24 编辑

今天刚拿到开发板,写个测试程序熟悉下芯片结构。
对于ST的很多MCU内部都没有EEPROM,比如我接触到的F1/F3/F4,如果想保存一些简单的参数比如产品SN号,固件版本号等信息就可以使用内部FALSH模拟EEPROM来做,简单方便实惠。
我使用F303RE的内部Flash的Main memory的第255页(最后一页)2K字节的大小来模拟EEPROM,这个根据自己的需要来选择,尽量别和代码存放的地方相冲突。

不同的FLASH访问的操作最小单位不同,比如F103和F303都只能以16 bits操作,但是F429可以8bits/16bits/32bits访问,这要特别注意。F303的库函数提供了16bits和32bits的写Flash函数,其中的32bits函数是分2次操作,每次写16bits,可以根据要保存的数据类型分别调用。


访问内部flash需要一定的操作步骤,比如:解锁FLASH,擦除相应的页,写相应的页,锁FLASH,只要按照对应的步骤即可.
写完之后可以查看对应的FLASH空间已经有了我们写的数据了,这个数据掉电之后还是存在的。

读出写的数据发送到串口查看。





creep 发表于 2015-6-4 10:30:39

ts2000 发表于 2015-6-4 10:12
EEPROM是有擦写次数限制了。还是用外部的EEPROM好点

对于产品序列号,固件版本号这些参数,只会在出厂烧写一次,以后都是读取来显示。和读写CODE一样,所以不存在频繁擦写的问题。如果真的需要频繁修改,那就要另外的考虑了。

叶♂子 发表于 2018-7-5 14:59:16

用内部的Flash开辟一个空间做为SN等数据储存是一件不错的选择,但是我建议还是不要这样设计。经过实际证明,操作内部的Flash有些时候会出现固件丢失的情况。这样反而得不偿失。

creep 发表于 2015-6-4 10:01:24

stary666 发表于 2015-6-4 09:57
l0系列的就有内部eerom

是的,L0系列内部是有EEPROM,我用过的F1/F3/F4好像都没有。按道理里面加点EEPROM应该不难,不知道ST是怎么考虑的。

发表于 2015-6-3 21:50:07

没有代码吗?我做过F1的和F0的,没做过F3的,可以学习下~~~~~~

creep 发表于 2015-6-3 21:51:16

xnmc2013 发表于 2015-6-3 21:50
没有代码吗?我做过F1的和F0的,没做过F3的,可以学习下~~~~~~

已经更新了,

风子 发表于 2015-6-3 22:14:12

谢谢分享

Paderboy 发表于 2015-6-3 23:17:07

多谢分享,学习了

莫林2020 发表于 2015-6-4 09:06:42

应该都是差不多的吧

creep 发表于 2015-6-4 09:22:28

莫林2020 发表于 2015-6-4 09:06
应该都是差不多的吧

是的F1和F3系列的一样,F4的和这个有点区别。

米兰的无线电 发表于 2015-6-4 09:34:50

这个不错,谢谢分享

JackieLaura 发表于 2015-6-4 09:37:40

不错的教程,先收藏了,留着以后用,谢谢楼主分享

stary666 发表于 2015-6-4 09:57:26

l0系列的就有内部eerom

小小超 发表于 2015-6-4 10:12:56

EEPROM是有擦写次数限制了。还是用外部的EEPROM好点

苏浅叶 发表于 2015-6-4 11:10:21

金币已给,去看看吧:lol

creep 发表于 2015-6-4 11:17:59

苏浅叶 发表于 2015-6-4 11:10
金币已给,去看看吧

谢谢!!!:lol:lol:lol
页: [1] 2 3
查看完整版本: 【STM32F303开发】+ 内部Flash模拟EEPROM