STM32關於操作內部FLASH整理

2021-08-17 22:22:57 字數 3037 閱讀 8078

stm32的flash分為主儲存塊、資訊塊和快閃儲存器儲存器介面暫存器等

3 部分組成。

主儲存塊用於儲存具體的程式**和使用者資料。起始位址0x08000000,b0和b1接gnd從這裡開始執行程式。

資訊塊用於負責由stm32出廠時放置2kb的啟動程式(bootloader)和512b的使用者配置資訊區。啟動程式**,是用來儲存

快閃儲存器儲存器介面暫存器,該部分用於控制快閃儲存器讀寫等,是整個快閃儲存器模組的控制機構 。

在執行快閃儲存器寫操作時,任何對快閃儲存器的讀操作都會鎖住匯流排,在寫操作完成後讀操作才能正確地進行;既在進行寫或擦除操作時,不能進行**或資料的讀取操作。對主儲存器和資訊塊的寫入由內嵌的快閃儲存器程式設計

/擦除控制器

(fpec)

管理 。

主儲存器是以頁為單位劃分的。stm32根據flash主儲存塊容量、頁面的不同,系統儲存器的不同,分為小容量、中容量、大容量、互聯型,共四類產品。

小容量產品:主儲存塊1-32kb,     每頁1kb。系統儲存器2kb

中容量產品:主儲存塊64-128kb,   每頁1kb。系統儲存器2kb

大容量產品:主儲存塊256kb以上,  每頁2kb。系統儲存器

2kb互聯型產品:主儲存塊256kb以上,  每頁2kb。系統儲存器18kb

對flash的寫入操作要遵循「先擦除後寫入」的原則。flash程式設計操作都是以頁為單位寫入,寫入的操作必須要以32位字或16位半字寬度資料為單位,允許跨頁寫。

flash

最快訪問速度≤

24mhz ,cpu使用

72mhz

的主頻操作flash需要加入等待時間。

快閃儲存器的程式設計和擦除

stm32

的快閃儲存器程式設計是由

fpec

(快閃儲存器程式設計和擦除控制器)模組

處理的,包含 7 個

32 位暫存器:

fpec 鍵暫存器(flash_keyr)

選擇位元組鍵暫存器(flash_optkeyr)

快閃儲存器控制暫存器(flash_cr)

快閃儲存器狀態暫存器(flash_sr)

快閃儲存器位址暫存器(flash_ar)

選擇位元組暫存器(flash_obr)

寫保護暫存器(flash_wrpr)

fpec

鍵暫存器

(flash_keyr)包含3個鍵值

rdprt

=0x000000a5

key1=0x45670123

key2=0xcdef89ab

stm32復位以後,

fpec

(快閃儲存器程式設計和擦除控制器)模組被保護,無法操作快閃儲存器控制暫存器

(flash_cr);將特定序列寫入到fpec 

鍵暫存器

(flash_keyr)才可以操作

fpec

(快閃儲存器程式設計和擦除控制器)模組,寫保護解除。

stm32快閃儲存器程式設計必須寫入半字(16bit),無法寫入其他型別資料。快閃儲存器控制暫存器

(flash_cr)中pg=1,在乙個快閃儲存器位址寫入乙個半字將啟動一次程式設計 。在程式設計過程中快閃儲存器狀態暫存器

(flash_sr)中

bsy =1

,任何讀寫快閃儲存器的操作都會使

cpu暫停,直到此次快閃儲存器程式設計結束。 flash中被寫入的位址必須是擦除掉的(0xffff)。

flash程式設計操作

1.檢查

flash_cr

的 lock

是否解鎖,如果沒有則先解鎖

2.檢查

flash_sr

暫存器的

bsy

位,以確認沒有其他正在進行的程式設計操作

3.設定

flash_cr

暫存器的

pg 位為』 1』

4.在指定的位址寫入要程式設計的半字

5.等待

bsy

位變為』 0』

6.讀出寫入的位址並驗證資料

flash分為頁擦除和整片擦除。

頁擦除

1. 檢查

flash_cr

的 lock

是否解鎖,如果沒有則先解鎖

2. 檢查

flash_sr

暫存器的

bsy

位,以確認沒有其他正在進行的快閃儲存器操作

3. 設定

flash_cr

暫存器的

per

位為』 1』

4. 用

flash_ar

暫存器選擇要擦除的頁

5. 設定

flash_cr

暫存器的

strt

位為』 1』

6. 等待

bsy

位變為』 0』

7. 讀出被擦除的頁並做驗證

STM32內部Flash的操作函式

1.iap遠端更新機制說明 3.stm32內部flash的操作函式 stm32 操作內部flash的函式介面 include inflash.h include stm32f10x flash.h 功 能 不檢查的寫入內部flash param1 起始位址 param2 要寫入的資料指標 param...

stm32 讀寫內部Flash

stm32的flash分為主儲存塊和資訊塊。主儲存塊用於儲存具體的程式 和使用者資料,資訊塊用於負責由stm32出廠是放置2kb的啟動程式 bootloader 和512b的使用者配置資訊區。主儲存塊是以頁為單位劃分的,一頁大小為1kb。範圍為從位址0x08000000開始的128kb內。對flas...

STM32 內部結構

為了進一步明確stm32103系列mcu的內部資源。我們可以從兩份資料著手學習。乙份是 stm32中文資料 乙份是 stm32f103中文資料 您的英文水平如果還可以,那麼您就使用原版的英文資料。但是因為中文資料是廠家提供的。那我們基本可以放心使用了。我們檢視 stm32中文資料 的第二節 儲存器和...