找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2863|回复: 19
收起左侧

Flash模拟EEPROM擦除时间太长

  [复制链接]
ID:1108479 发表于 2024-6-20 11:32 | 显示全部楼层 |阅读模式
大家好,

用的是STM32 MCU,为了省成本,用了内部Flash模拟EEPROM,Flash最小擦除单位是扇区,一个扇区大小是128K。

用一个扇区模拟EEPROM,当整个扇区写满后,擦除一次。但是规格书上写的是擦除一个128K的扇区需要耗时1~2s,这个时间太长了!

肯定影响到系统实时性了。

有什么办法可以解决吗?看来还得用单独的EEPROM芯片了!
回复

使用道具 举报

ID:1109793 发表于 2024-6-20 16:56 | 显示全部楼层
秒还是毫秒?STM32不会用,STC也不用2秒吧
回复

使用道具 举报

ID:1108479 发表于 2024-6-20 17:25 | 显示全部楼层
xiaobendan001 发表于 2024-6-20 16:56
秒还是毫秒?STM32不会用,STC也不用2秒吧

秒,确实是1~2s, 规格书上写的,很奇怪很多用大容量的Flash都是怎么用的?
回复

使用道具 举报

ID:123289 发表于 2024-6-20 19:44 | 显示全部楼层
怀疑读书不准确,当为ms级。将你读的书贴出来看看。
回复

使用道具 举报

ID:192020 发表于 2024-6-20 20:38 | 显示全部楼层
要擦128K这么多?单位是不是有问题
回复

使用道具 举报

ID:1034262 发表于 2024-6-20 21:22 | 显示全部楼层
xiaobendan001 发表于 2024-6-20 16:56
秒还是毫秒?STM32不会用,STC也不用2秒吧

STC8系列EEPROM扇区擦除几个ms。
回复

使用道具 举报

ID:57657 发表于 2024-6-21 06:25 | 显示全部楼层
看你程序使用了多少字节EEPROM,使用数据磨损均匀算法写满再擦。
回复

使用道具 举报

ID:1108479 发表于 2024-6-21 09:33 | 显示全部楼层
qq475878026 发表于 2024-6-20 20:38
要擦128K这么多?单位是不是有问题

ST的高端MCU,STM32H743, 2M Flash, 最小擦除粒度确实是128K。
回复

使用道具 举报

ID:1108479 发表于 2024-6-21 09:37 | 显示全部楼层
yzwzfyz 发表于 2024-6-20 19:44
怀疑读书不准确,当为ms级。将你读的书贴出来看看。

用的是STM32H743,高端MCU ,内部2M flash,最小擦除粒度是128K,擦除时间如下图,上面的单位是s (不确定有没有看错)。附件规格书你也可以看一下
fl.jpg

STM32H743数据手册.pdf

4.85 MB, 下载次数: 2

回复

使用道具 举报

ID:1108479 发表于 2024-6-21 09:43 | 显示全部楼层
npn 发表于 2024-6-21 06:25
看你程序使用了多少字节EEPROM,使用数据磨损均匀算法写满再擦。

这个我知道,其实我问的是擦除时间长影响实时性的问题
回复

使用道具 举报

ID:744809 发表于 2024-6-21 10:10 | 显示全部楼层
可以在程序初始化的时候擦除,就不会影响后面的实时性,当然启动时间也有要求的话,就没办法了
回复

使用道具 举报

ID:161164 发表于 2024-6-21 10:52 | 显示全部楼层
可以按页擦除啊,一页只有1k
3.3.3 Embedded Flash memory

2024-06-21_104923.png
2024-06-21_104936.png



回复

使用道具 举报

ID:123289 发表于 2024-6-22 00:11 | 显示全部楼层
擦128K是秒级,擦一页不需要这么多时间。
回复

使用道具 举报

ID:1108479 发表于 2024-6-22 09:17 | 显示全部楼层
lkc8210 发表于 2024-6-21 10:52
可以按页擦除啊,一页只有1k
3.3.3 Embedded Flash memory

估计没看我发的STM32H743的规格书,这个MCU没有页的概念,只有扇区概念,所以擦除单位只能按扇区来擦除,一个扇区是128K。所以这样是不是无解了?不行的话,就用EEPROM了,国产的一个也没几个钱
5555.jpg

回复

使用道具 举报

ID:1108479 发表于 2024-6-22 09:17 | 显示全部楼层
yzwzfyz 发表于 2024-6-22 00:11
擦128K是秒级,擦一页不需要这么多时间。

这颗MCU没有页而概念,只有扇区,一个扇区是128K,所以只能按照128K扇区擦除
回复

使用道具 举报

ID:624769 发表于 2024-6-22 20:13 | 显示全部楼层
据说,STM是非常高级的芯片,这玩艺难道还是单线程?你发了擦除指令之后,只能象“落后的51”一样,等他完成了才能获得时钟权限么?不能先干别的事?
回复

使用道具 举报

ID:123036 发表于 2024-6-22 22:37 | 显示全部楼层
188610329 发表于 2024-6-22 20:13
据说,STM是非常高级的芯片,这玩艺难道还是单线程?你发了擦除指令之后,只能象“落后的51”一样,等他完 ...

STM32H743双bank把他分分应该不影响程序跑起来。
回复

使用道具 举报

ID:828160 发表于 2024-6-23 15:41 | 显示全部楼层
lkc8210 发表于 2024-6-21 10:52
可以按页擦除啊,一页只有1k
3.3.3 Embedded Flash memory

这个不是H7xx的芯片吧
回复

使用道具 举报

ID:844772 发表于 2024-7-1 11:39 | 显示全部楼层
我理解你的问题是,需要不断读取Flash,但擦除时会停止取指操作,MCU就像是卡了,但你给的手册 P33 的 Figure 4. STM32H743xI/G bus matrix ,看图它分为flash A 和flash B,我理解如果读取FLASHA时,可以对FLASHB进行擦除操作,在擦除的几秒时间内,SysTick_Handler()中断服务函数,uwTick记数器变化应该正常的。我的建议你应该理解吧?
回复

使用道具 举报

ID:1108479 发表于 2024-7-1 11:54 | 显示全部楼层
188610329 发表于 2024-6-22 20:13
据说,STM是非常高级的芯片,这玩艺难道还是单线程?你发了擦除指令之后,只能象“落后的51”一样,等他完 ...

我不太明白,擦除Flash的时候,CPU还能干别的事吗?不是要等擦除完成吗?难道擦除Flash的时候还能像DMA一样操作?如果能这样,那就好办了
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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