找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2638|回复: 19
打印 上一主题 下一主题
收起左侧

Flash模拟EEPROM擦除时间太长

  [复制链接]
跳转到指定楼层
楼主
大家好,

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

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

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

有什么办法可以解决吗?看来还得用单独的EEPROM芯片了!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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级。将你读的书贴出来看看。
回复

使用道具 举报

5#
ID:192020 发表于 2024-6-20 20:38 | 只看该作者
要擦128K这么多?单位是不是有问题
回复

使用道具 举报

6#
ID:1034262 发表于 2024-6-20 21:22 | 只看该作者
xiaobendan001 发表于 2024-6-20 16:56
秒还是毫秒?STM32不会用,STC也不用2秒吧

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

使用道具 举报

7#
ID:57657 发表于 2024-6-21 06:25 | 只看该作者
看你程序使用了多少字节EEPROM,使用数据磨损均匀算法写满再擦。
回复

使用道具 举报

8#
ID:1108479 发表于 2024-6-21 09:33 | 只看该作者
qq475878026 发表于 2024-6-20 20:38
要擦128K这么多?单位是不是有问题

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

使用道具 举报

9#
ID:1108479 发表于 2024-6-21 09:37 | 只看该作者
yzwzfyz 发表于 2024-6-20 19:44
怀疑读书不准确,当为ms级。将你读的书贴出来看看。

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


STM32H743数据手册.pdf

4.85 MB, 下载次数: 2

回复

使用道具 举报

10#
ID:1108479 发表于 2024-6-21 09:43 | 只看该作者
npn 发表于 2024-6-21 06:25
看你程序使用了多少字节EEPROM,使用数据磨损均匀算法写满再擦。

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

使用道具 举报

11#
ID:744809 发表于 2024-6-21 10:10 | 只看该作者
可以在程序初始化的时候擦除,就不会影响后面的实时性,当然启动时间也有要求的话,就没办法了
回复

使用道具 举报

12#
ID:161164 发表于 2024-6-21 10:52 | 只看该作者
可以按页擦除啊,一页只有1k
3.3.3 Embedded Flash memory






回复

使用道具 举报

13#
ID:123289 发表于 2024-6-22 00:11 | 只看该作者
擦128K是秒级,擦一页不需要这么多时间。
回复

使用道具 举报

14#
ID:1108479 发表于 2024-6-22 09:17 | 只看该作者
lkc8210 发表于 2024-6-21 10:52
可以按页擦除啊,一页只有1k
3.3.3 Embedded Flash memory

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


回复

使用道具 举报

15#
ID:1108479 发表于 2024-6-22 09:17 | 只看该作者
yzwzfyz 发表于 2024-6-22 00:11
擦128K是秒级,擦一页不需要这么多时间。

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

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

18#
ID:828160 发表于 2024-6-23 15:41 | 只看该作者
lkc8210 发表于 2024-6-21 10:52
可以按页擦除啊,一页只有1k
3.3.3 Embedded Flash memory

这个不是H7xx的芯片吧
回复

使用道具 举报

19#
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记数器变化应该正常的。我的建议你应该理解吧?
回复

使用道具 举报

20#
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 单片机教程网

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