OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7071|回复: 16

有人有stm32F2读写内部Flash的库吗

[复制链接]

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-4-17 14:29:36 | 显示全部楼层 |阅读模式
1金钱
类似原子哥那个F1读写内部Flash的,有F2版本的不。有的话可以分享一下不

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-4-18 01:31:54 | 显示全部楼层
可以去ST官方找找参考例程
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-18 09:26:43 | 显示全部楼层
源文件的flash.c里面不是有读FLASH的函数吗。。。这个是最可靠的,读一个字。
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-18 11:11:23 | 显示全部楼层
candylife9 发表于 2018-4-18 09:26
源文件的flash.c里面不是有读FLASH的函数吗。。。这个是最可靠的,读一个字。

并不是这个问题。。。。。
原子哥在F103的读写Flash的程序里,是进行了数据处理的。
比方说,某个地址已经被写了数据了。如果想要继续写这个地址就需要擦除操作,
然后要计算擦除的起始以及结束page,而且还要将被擦除数据除外,page的数据读出再重新写入,以免破坏其它数据。。。
总之没那么简单
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-18 11:11:42 | 显示全部楼层
正点原子 发表于 2018-4-18 01:31
可以去ST官方找找参考例程

我试试看
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-18 11:13:30 | 显示全部楼层
正点原子 发表于 2018-4-18 01:31
可以去ST官方找找参考例程

原子哥,我发现F2好坑。只能擦写sector
而且256K的Flash,有一个sector是128KB的。
这叫我怎么缓冲数据?不可能声明一个128KB的数组的啊,这不是扯淡么
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-18 13:41:16 | 显示全部楼层
本帖最后由 candylife9 于 2018-4-18 13:43 编辑
a3748622 发表于 2018-4-18 11:11
并不是这个问题。。。。。
原子哥在F103的读写Flash的程序里,是进行了数据处理的。
比方说,某个地址 ...

这个也是调用了flash.c里面的几个函数,只是加了些自己的逻辑。但是实际的FLASH应用都很简单,不需要你判断是不是已经写过了,或者保护不需要擦除的数据之类的,而是要写直接擦了写一遍就可以了。不然的话就不适合用内部FLASH了,因为为了方便,在内部FLASH中保存一个独立的参数,哪怕是一个字节,一般都会分配一个PAGE(1K),擦除也只能按PAGE擦除,参数多了就应该用EEPROM来做。
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-18 13:45:48 | 显示全部楼层
a3748622 发表于 2018-4-18 11:13
原子哥,我发现F2好坑。只能擦写sector
而且256K的Flash,有一个sector是128KB的。
这叫我怎么缓冲数据 ...

原子的例程只是为了教大家怎么使用FLASH,而不是说适合用到实际的项目中。
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-18 13:46:15 | 显示全部楼层
candylife9 发表于 2018-4-18 13:41
这个也是调用了flash.c里面的几个函数,只是加了些自己的逻辑。但是实际的FLASH应用都很简单,不需要你判 ...

是的,F1确实是这样。。。。但这个是F2啊,内部Flash扇区不一样的,而且它不支持page擦除
回复

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-18 16:27:45 | 显示全部楼层
a3748622 发表于 2018-4-18 13:46
是的,F1确实是这样。。。。但这个是F2啊,内部Flash扇区不一样的,而且它不支持page擦除

那就更不能用于存储大量独立参数,如果你将这些参数存储到一起,那就需要大量内存来临时保存这些参数。如果你把这些参数分sector存储,就太浪费FLASH资源。所以
回复

使用道具 举报

3

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-3-5
在线时间
59 小时
发表于 2018-4-18 16:32:18 | 显示全部楼层
说F2坑的显然是还不知道选型是什么意思
看了205的手册,和楼主所描述的Flash相关特性如下:
• 128 bits wide data read
• Byte, half-word, word and double word write
• Sector and mass erase
所以定义128K的数组也没有用,因为并不支持扇区或者页写
如果觉得浪费空间,为何不用16K和64K的扇区,“A main memory block divided into 4 sectors of 16 Kbytes, 1 sector of 64 Kbytes,
and 7 sectors of 128 Kbytes”7楼的方法没有问题,或者干脆外接SPI Flash或者EEPROM,这个也不慢
不清楚楼主的应用场景,所以我只能说在硬件接口的前提之下,去选择最合适的方式
希望可以帮到你
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-19 14:28:59 | 显示全部楼层
动次打次歌 发表于 2018-4-18 16:32
说F2坑的显然是还不知道选型是什么意思
看了205的手册,和楼主所描述的Flash相关特性如下:
• 128  ...

怎么就不支持扇区擦写了呢。。。。。
Sector and mass erase,意思是扇区和整个芯片的擦除

方法我已经找到了,类似IAP,程序存储在后面扇区,前面一个16K扇区存数据。
至于外接Flash什么的,看来你们老板很大方,1000个产品要1000个Flash。。。。

至于选型,原本的F103就支持page擦除,后来改F2了。至于为什么要改,是因为后期的
某些原因。所以,请不要臆断别人好吗。。。。。。
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-19 14:34:42 | 显示全部楼层
candylife9 发表于 2018-4-18 16:27
那就更不能用于存储大量独立参数,如果你将这些参数存储到一起,那就需要大量内存来临时保存这些参数。如 ...

我说的坑并不是你所表达的这个点啊。

我存储用的参数就几个而已,但是存储很频繁,所以我要做一个动态平衡方案。
怎么就做不到用自身Flash存储呢?除了代码我还多出了好几十KB空间呢。

回复

使用道具 举报

3

主题

144

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-3-5
在线时间
59 小时
发表于 2018-4-20 09:30:01 | 显示全部楼层
a3748622 发表于 2018-4-19 14:28
怎么就不支持扇区擦写了呢。。。。。
Sector and mass erase,意思是扇区和整个芯片的擦除

我没有说擦写哦,我说的是写
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
 楼主| 发表于 2018-4-20 10:17:07 | 显示全部楼层
动次打次歌 发表于 2018-4-20 09:30
我没有说擦写哦,我说的是写

是不支持扇区写啊。。。。
反正F2这Flash是有点蛋疼,可以擦除page的话管理起来方便多了。
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-5-21 14:04:49 | 显示全部楼层
VFS 虚拟扇区管理 了解一下

基于NANDFLASH的虚拟扇区管理.pdf

2.6 MB, 下载次数: 36

基于虚拟扇区的FLASH存储管理技术.pdf

158.95 KB, 下载次数: 14

我的简书:https://www.jianshu.com/u/3e9efbf4a8c2
回复

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
发表于 2020-11-19 11:08:48 | 显示全部楼层
流年丶 发表于 2019-5-21 14:04
VFS 虚拟扇区管理 了解一下

你这个很666啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 13:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表