打印
[STM32N6]

如何在STM32中实现Flash的块擦除和写入?

[复制链接]
443|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我爱台妹mmd|  楼主 | 2025-2-28 23:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32如何高效地进行Flash块擦除和写入操作,并避免重复擦写?

使用特权

评论回复
沙发
公羊子丹| | 2025-3-1 07:35 | 只看该作者
STM32的Flash写入前需要先擦除,特别是NOR Flash结构的MCU,写入前不擦除可能会导致数据错误,你是要存配置数据还是固件升级?

使用特权

评论回复
板凳
周半梅| | 2025-3-1 07:37 | 只看该作者
Flash的擦写次数是有限的,比如10万次左右,频繁擦写容易导致Flash寿命缩短,你是有高频率写入的需求吗?

使用特权

评论回复
地板
帛灿灿| | 2025-3-1 07:38 | 只看该作者
如果只是写少量数据,可以用EEPROM仿真技术,不需要每次都擦除整个块,你的应用场景适合这种方式吗?

使用特权

评论回复
5
童雨竹| | 2025-3-1 07:39 | 只看该作者
使用Flash写入时要确保CPU频率符合Flash编程要求,比如某些型号需要降低时钟才能正确写入,否则可能会写入失败或者异常。

使用特权

评论回复
6
万图| | 2025-3-1 07:41 | 只看该作者
不同型号的STM32 Flash擦除粒度不同,比如F4系列是按扇区擦除,而G0系列是按页擦除,你用的N6系列是多大容量的Flash?

使用特权

评论回复
7
Wordsworth| | 2025-3-1 07:42 | 只看该作者
如果你是做Bootloader升级,建议使用双分区(A/B)方案,避免升级过程中断导致固件损坏,这种方式你考虑过吗?

使用特权

评论回复
8
Bblythe| | 2025-3-1 07:43 | 只看该作者
写入Flash时要注意对齐问题,比如某些STM32型号要求4字节或8字节对齐,没对齐可能会引发HardFault,你有遇到类似问题吗?

使用特权

评论回复
9
Pulitzer| | 2025-3-1 07:44 | 只看该作者
擦除Flash可能会影响MCU运行,尤其是在中断较多的情况下,建议在关键操作前禁用中断或者使用IWDG防止意外死机。

使用特权

评论回复
10
Uriah| | 2025-3-1 07:46 | 只看该作者
如果想提高写入效率,可以使用DMA方式写入Flash,而不是CPU主动写入,这样可以减少CPU占用率,适合大数据量存储。

使用特权

评论回复
11
Clyde011| | 2025-3-1 07:47 | 只看该作者
ST官方的HAL库提供了HAL_FLASH_Program()和HAL_FLASHEx_Erase()函数,CubeMX也可以自动生成代码,你是打算用HAL库还是直接操作寄存器?

使用特权

评论回复
12
失物招領| | 2025-3-16 01:22 | 只看该作者
你可以按照一页一页的方式写,就是数据攒成一页再写

使用特权

评论回复
13
她已醉| | 2025-3-16 02:32 | 只看该作者
我记得一般flash读写是不是一次4页的操作啊

使用特权

评论回复
14
将爱藏于深海| | 2025-3-16 03:42 | 只看该作者
避免重复擦写的话,我觉得你就得组包才行

使用特权

评论回复
15
温室雏菊| | 2025-3-16 04:33 | 只看该作者
这个咋说呢,你先了解一下flash的操作结构,就应该差不多知道了

使用特权

评论回复
16
春日负喧| | 2025-3-16 05:32 | 只看该作者
高效的话,一般就是对擦除是一次四页擦除,写也是一页一页写就比较好了

使用特权

评论回复
17
捧一束彼岸花| | 2025-3-16 06:34 | 只看该作者
这种只要是数据是FF好像都可以直接写吧

使用特权

评论回复
18
风凉| | 2025-3-16 07:29 | 只看该作者
RAM中维护一个缓冲区,将数据先写入缓冲区,待缓冲区满或需要保存时再进行Flash写入操作

使用特权

评论回复
19
西洲| | 2025-3-16 08:23 | 只看该作者
尽量将多次写入操作合并为一次批量写入,减少擦写次数

使用特权

评论回复
20
白马过平川| | 2025-3-16 09:23 | 只看该作者
Flash擦除的最小单位是页或扇区,避免擦除整个Flash块。在写入前,确保目标区域已被擦除

使用特权

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

本版积分规则

70

主题

643

帖子

0

粉丝