[STM32H7] STM32H750内部flash读写

[复制链接]
 楼主| flycamelaaa 发表于 2023-6-14 14:48 | 显示全部楼层 |阅读模式
请教下,STM32H750XBHx我看资料内置flash为128K,并且flash擦除的最小单元也是128K。这样的话我有数据要保存应该怎样处理好呢?写数据时是要将程序部分一起擦除再写回去吗?这样会不会有风险?
两只袜子 发表于 2023-6-15 14:00 | 显示全部楼层
可以考虑外扩存储芯片或者换个多扇区的H7系列芯片。
工程师犹饿死 发表于 2024-7-30 18:19 | 显示全部楼层
考虑使用外部存储器(如EEPROM、外部Flash等)来存储数据。这可以避免频繁擦写内部Flash,从而减少对程序运行的影响和Flash的磨损。
工程师犹饿死 发表于 2024-7-30 18:19 | 显示全部楼层
如果数据量较小且需要频繁更新,可以在运行时将数据存储在内部RAM中,但这仅适用于掉电不丢失数据的需求。
抹茶妹妹 发表于 2024-7-30 18:51 | 显示全部楼层
STM32H750XBHx 系列 MCU 内置的 128KB 闪存确实具有一些限制,尤其是在数据保存方面。
我爱台妹mmd 发表于 2024-7-31 23:17 | 显示全部楼层
由于闪存擦除的最小单元是128KB,这意味着每次擦除操作都会影响到整个闪存扇区,包括程序和数据。
范德萨发额 发表于 2024-8-16 14:32 | 显示全部楼层
如果你在Flash中保存数据,而数据和程序共用同一个扇区,那么每次写数据时都需要先擦除整个扇区,然后再将程序和数据一起写回去。在这一过程中,任何意外(如电源断电、复位等)都有可能导致程序和数据的丢失。
狄克爱老虎油 发表于 2024-8-17 23:01 来自手机 | 显示全部楼层
外扩芯片就可以吗
grfqq325 发表于 2024-8-28 12:07 | 显示全部楼层
虽然内置的 Flash 是 128KB,并且最小擦除单元是 128KB,但这并不意味着你在写入数据时必须擦除整个 Flash 区块。
Clyde011 发表于 2025-3-18 08:23 | 显示全部楼层
你用的启动方式是什么?如果程序跑在外部Flash,那内部Flash可以当作数据存储区,否则写入时要特别注意避免影响程序运行。
公羊子丹 发表于 2025-3-18 08:24 | 显示全部楼层
STM32H750的Flash确实是128K的单独一个扇区,写数据要小心处理,你考虑过用外部Flash或者EEPROM存储数据吗?
周半梅 发表于 2025-3-18 08:25 | 显示全部楼层
直接擦除128K扇区确实会有风险,特别是如果你的代码也存储在这个区域里。你是打算把数据存在哪里?
帛灿灿 发表于 2025-3-18 08:27 | 显示全部楼层
如果一定要写入内部Flash,可以考虑用双缓冲或者外部存储方案,不然每次写数据都要擦除整个扇区,风险确实挺大。
童雨竹 发表于 2025-3-18 08:28 | 显示全部楼层
STM32H7系列有AXI总线,支持外部QSPI Flash,或许用外部Flash存数据会更合适?
万图 发表于 2025-3-18 08:29 | 显示全部楼层
你的数据是频繁更新的吗?如果只是偶尔写入,或许可以提前分区,把程序和数据分开放?
Bblythe 发表于 2025-3-18 08:31 | 显示全部楼层
128K的擦除单元确实挺大,程序和数据共用的话有一定风险。你考虑过用外部存储还是必须使用内部Flash?
Wordsworth 发表于 2025-3-18 08:33 | 显示全部楼层
你试过使用RAM缓存数据,等数据积累到一定量再一次性写入Flash吗?这样可以减少擦写次数。
Pulitzer 发表于 2025-3-18 08:35 | 显示全部楼层
你是用HAL库操作Flash还是直接使用寄存器?STM32H7的Flash操作和F4/F7还是有些不同的。
Uriah 发表于 2025-3-18 08:37 | 显示全部楼层
有没有尝试使用Wear Leveling技术?如果数据存储频率较高,可以分块存储,避免Flash过早损坏。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

824

主题

4298

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

824

主题

4298

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部