![]() |
發布時間: 2024-6-20 11:32
正文摘要:大家好, 用的是STM32 MCU,為了省成本,用了內部Flash模擬EEPROM,Flash最小擦除單位是扇區,一個扇區大小是128K。 用一個扇區模擬EEPROM,當整個扇區寫滿后,擦除一次。但是規格書上寫的是擦除一個128K的扇 ... |
188610329 發表于 2024-6-22 20:13 我不太明白,擦除Flash的時候,CPU還能干別的事嗎?不是要等擦除完成嗎?難道擦除Flash的時候還能像DMA一樣操作?如果能這樣,那就好辦了 |
我理解你的問題是,需要不斷讀取Flash,但擦除時會停止取指操作,MCU就像是卡了,但你給的手冊 P33 的 Figure 4. STM32H743xI/G bus matrix ,看圖它分為flash A 和flash B,我理解如果讀取FLASHA時,可以對FLASHB進行擦除操作,在擦除的幾秒時間內,SysTick_Handler()中斷服務函數,uwTick記數器變化應該正常的。我的建議你應該理解吧? |
lkc8210 發表于 2024-6-21 10:52 這個不是H7xx的芯片吧 |
188610329 發表于 2024-6-22 20:13 STM32H743雙bank把他分分應該不影響程序跑起來。 |
據說,STM是非常高級的芯片,這玩藝難道還是單線程?你發了擦除指令之后,只能象“落后的51”一樣,等他完成了才能獲得時鐘權限么?不能先干別的事? |
yzwzfyz 發表于 2024-6-22 00:11 這顆MCU沒有頁而概念,只有扇區,一個扇區是128K,所以只能按照128K扇區擦除 |
擦128K是秒級,擦一頁不需要這么多時間。 |
可以按頁擦除啊,一頁只有1k 3.3.3 Embedded Flash memory ![]() ![]() |
可以在程序初始化的時候擦除,就不會影響后面的實時性,當然啟動時間也有要求的話,就沒辦法了 |
npn 發表于 2024-6-21 06:25 這個我知道,其實我問的是擦除時間長影響實時性的問題 |
qq475878026 發表于 2024-6-20 20:38 ST的高端MCU,STM32H743, 2M Flash, 最小擦除粒度確實是128K。 |
看你程序使用了多少字節EEPROM,使用數據磨損均勻算法寫滿再擦。 |
xiaobendan001 發表于 2024-6-20 16:56 STC8系列EEPROM扇區擦除幾個ms。 |
要擦128K這么多?單位是不是有問題 |
懷疑讀書不準確,當為ms級。將你讀的書貼出來看看。 |
xiaobendan001 發表于 2024-6-20 16:56 秒,確實是1~2s, 規格書上寫的,很奇怪很多用大容量的Flash都是怎么用的? |
秒還是毫秒?STM32不會用,STC也不用2秒吧 |