我在程式里面擬定在片內flash地址0x08001000~0x0800101F(32bytes, 256bits)寫一個uint64_t pData[4] = {0x1020304050607080, 0x0102030405060708, 0x1112131415161718, 0x1213141516171819};然后將pData[0] = 0x2122232425262728, 再將陣列pData[4]寫到0x08001000~0x0800101F,然后flash就掛掉了。
當然,在寫操作中是執行了擦除操作的。我的寫操作流程是:unlock_bank1-->erase sector0-->program 256bits-->lock_bank1
如果這個陣列的值不變,那么我可以寫任意次;一旦這個陣列的值發生了變化,那么再次寫入到同一flash地址空間就會理解掛掉。
我不清楚是自己在寫flash之后沒有將片內flash的什么狀態恢復,還是說我在資料發生變化后再次執行寫操作的時候,擦除動作是將整個flash擦除掉了,還是flash處于某個狀態導致了我寫出錯。
所以我希望有遇到過這種問題的小伙伴和大佬們能夠提供意見和幫助,也希望有官方技術支持能夠驗證一下提供方案,畢竟如果H750的片內flash只支持寫一次的話,除了放一個bootloader外還有什么意義。
望解,謝謝!
uj5u.com熱心網友回復:
ECC錯誤。不可以重復寫。uj5u.com熱心網友回復:
STM32H750的FLash扇區只有一個扇區,大小為 128KB,你的操作中unlock_bank1-->erase sector0-->program 256bits-->lock_bank1為什么擦除的是扇區0?
正常的邏輯應該說擦除扇區1吧?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/129168.html
標籤:單片機/工控
