找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2977|回復(fù): 19
收起左側(cè)

Flash模擬EEPROM擦除時(shí)間太長

  [復(fù)制鏈接]
ID:1108479 發(fā)表于 2024-6-20 11:32 | 顯示全部樓層 |閱讀模式
大家好,

用的是STM32 MCU,為了省成本,用了內(nèi)部Flash模擬EEPROM,F(xiàn)lash最小擦除單位是扇區(qū),一個(gè)扇區(qū)大小是128K。

用一個(gè)扇區(qū)模擬EEPROM,當(dāng)整個(gè)扇區(qū)寫滿后,擦除一次。但是規(guī)格書上寫的是擦除一個(gè)128K的扇區(qū)需要耗時(shí)1~2s,這個(gè)時(shí)間太長了!

肯定影響到系統(tǒng)實(shí)時(shí)性了。

有什么辦法可以解決嗎?看來還得用單獨(dú)的EEPROM芯片了!
回復(fù)

使用道具 舉報(bào)

ID:1109793 發(fā)表于 2024-6-20 16:56 | 顯示全部樓層
秒還是毫秒?STM32不會(huì)用,STC也不用2秒吧
回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-6-20 17:25 | 顯示全部樓層
xiaobendan001 發(fā)表于 2024-6-20 16:56
秒還是毫秒?STM32不會(huì)用,STC也不用2秒吧

秒,確實(shí)是1~2s, 規(guī)格書上寫的,很奇怪很多用大容量的Flash都是怎么用的?
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2024-6-20 19:44 | 顯示全部樓層
懷疑讀書不準(zhǔn)確,當(dāng)為ms級(jí)。將你讀的書貼出來看看。
回復(fù)

使用道具 舉報(bào)

ID:192020 發(fā)表于 2024-6-20 20:38 | 顯示全部樓層
要擦128K這么多?單位是不是有問題
回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2024-6-20 21:22 | 顯示全部樓層
xiaobendan001 發(fā)表于 2024-6-20 16:56
秒還是毫秒?STM32不會(huì)用,STC也不用2秒吧

STC8系列EEPROM扇區(qū)擦除幾個(gè)ms。
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2024-6-21 06:25 | 顯示全部樓層
看你程序使用了多少字節(jié)EEPROM,使用數(shù)據(jù)磨損均勻算法寫滿再擦。
回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-6-21 09:33 | 顯示全部樓層
qq475878026 發(fā)表于 2024-6-20 20:38
要擦128K這么多?單位是不是有問題

ST的高端MCU,STM32H743, 2M Flash, 最小擦除粒度確實(shí)是128K。
回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-6-21 09:37 | 顯示全部樓層
yzwzfyz 發(fā)表于 2024-6-20 19:44
懷疑讀書不準(zhǔn)確,當(dāng)為ms級(jí)。將你讀的書貼出來看看。

用的是STM32H743,高端MCU ,內(nèi)部2M flash,最小擦除粒度是128K,擦除時(shí)間如下圖,上面的單位是s (不確定有沒有看錯(cuò))。附件規(guī)格書你也可以看一下
fl.jpg

STM32H743數(shù)據(jù)手冊(cè).pdf

4.85 MB, 下載次數(shù): 2

回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-6-21 09:43 | 顯示全部樓層
npn 發(fā)表于 2024-6-21 06:25
看你程序使用了多少字節(jié)EEPROM,使用數(shù)據(jù)磨損均勻算法寫滿再擦。

這個(gè)我知道,其實(shí)我問的是擦除時(shí)間長影響實(shí)時(shí)性的問題
回復(fù)

使用道具 舉報(bào)

ID:744809 發(fā)表于 2024-6-21 10:10 | 顯示全部樓層
可以在程序初始化的時(shí)候擦除,就不會(huì)影響后面的實(shí)時(shí)性,當(dāng)然啟動(dòng)時(shí)間也有要求的話,就沒辦法了
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2024-6-21 10:52 | 顯示全部樓層
可以按頁擦除啊,一頁只有1k
3.3.3 Embedded Flash memory

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



回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2024-6-22 00:11 | 顯示全部樓層
擦128K是秒級(jí),擦一頁不需要這么多時(shí)間。
回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-6-22 09:17 | 顯示全部樓層
lkc8210 發(fā)表于 2024-6-21 10:52
可以按頁擦除啊,一頁只有1k
3.3.3 Embedded Flash memory

估計(jì)沒看我發(fā)的STM32H743的規(guī)格書,這個(gè)MCU沒有頁的概念,只有扇區(qū)概念,所以擦除單位只能按扇區(qū)來擦除,一個(gè)扇區(qū)是128K。所以這樣是不是無解了?不行的話,就用EEPROM了,國產(chǎn)的一個(gè)也沒幾個(gè)錢
5555.jpg

回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-6-22 09:17 | 顯示全部樓層
yzwzfyz 發(fā)表于 2024-6-22 00:11
擦128K是秒級(jí),擦一頁不需要這么多時(shí)間。

這顆MCU沒有頁而概念,只有扇區(qū),一個(gè)扇區(qū)是128K,所以只能按照128K扇區(qū)擦除
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2024-6-22 20:13 | 顯示全部樓層
據(jù)說,STM是非常高級(jí)的芯片,這玩藝難道還是單線程?你發(fā)了擦除指令之后,只能象“落后的51”一樣,等他完成了才能獲得時(shí)鐘權(quán)限么?不能先干別的事?
回復(fù)

使用道具 舉報(bào)

ID:123036 發(fā)表于 2024-6-22 22:37 | 顯示全部樓層
188610329 發(fā)表于 2024-6-22 20:13
據(jù)說,STM是非常高級(jí)的芯片,這玩藝難道還是單線程?你發(fā)了擦除指令之后,只能象“落后的51”一樣,等他完 ...

STM32H743雙bank把他分分應(yīng)該不影響程序跑起來。
回復(fù)

使用道具 舉報(bào)

ID:828160 發(fā)表于 2024-6-23 15:41 | 顯示全部樓層
lkc8210 發(fā)表于 2024-6-21 10:52
可以按頁擦除啊,一頁只有1k
3.3.3 Embedded Flash memory

這個(gè)不是H7xx的芯片吧
回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2024-7-1 11:39 | 顯示全部樓層
我理解你的問題是,需要不斷讀取Flash,但擦除時(shí)會(huì)停止取指操作,MCU就像是卡了,但你給的手冊(cè) P33 的 Figure 4. STM32H743xI/G bus matrix ,看圖它分為flash A 和flash B,我理解如果讀取FLASHA時(shí),可以對(duì)FLASHB進(jìn)行擦除操作,在擦除的幾秒時(shí)間內(nèi),SysTick_Handler()中斷服務(wù)函數(shù),uwTick記數(shù)器變化應(yīng)該正常的。我的建議你應(yīng)該理解吧?
回復(fù)

使用道具 舉報(bào)

ID:1108479 發(fā)表于 2024-7-1 11:54 | 顯示全部樓層
188610329 發(fā)表于 2024-6-22 20:13
據(jù)說,STM是非常高級(jí)的芯片,這玩藝難道還是單線程?你發(fā)了擦除指令之后,只能象“落后的51”一樣,等他完 ...

我不太明白,擦除Flash的時(shí)候,CPU還能干別的事嗎?不是要等擦除完成嗎?難道擦除Flash的時(shí)候還能像DMA一樣操作?如果能這樣,那就好辦了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表