單片機內部的FLASH除了存儲固件以外,經常將其分成多個區域,用來存儲一些參數或存儲OTA升級的待更新的固件,這時就會涉及到單片機內部FLASH的編程和擦除操作,STM32不同系列的單片機內部FLASH特性和扇區大小都不太一樣,如果不注意這些細節,那就等著爬坑吧
1、FLASH的分區以及扇區大小
FLASH擦除是按照扇區擦的,所以這個很重要,在工程中全局搜索 FLASH_PAGE_SIZE 宏就可以查看該芯片的頁(扇區)大小,改宏在 stm32xxx_hal_flash.h中有定義
2、FLASH擦拭后的狀態
F1和F4系列的芯片FLASH在擦除后會是0xFFFFFFFF,而L1系列的芯片FLASH在擦除后是0x00000000!!!!!
3、FLASH的編程速度
L1芯片內部FLASH編程速度比F1慢50倍!!!所以在使用L1芯片寫入數據時相對于F1慢是正常的
2、STM32 F1、F4、L1系列內部FLASH分區及大小
1、STM32F1系列
對于F1系列的芯片大容量產品的FLASH主存儲器每頁大小為2K,如【下圖】,而中容量和小容量的產品每頁大小只有1K
2、STM32F4系列
分為2個Bank,每個Bank分為12個扇區,前4個扇區為16KB大小,第五個扇區是64KB大小,剩下的7個扇區都是128K大小
3、STM32L1系列
3、STM32 F1、F4、L1系列內部FLASH編程時間
信息參考對應芯片的數據手冊的 Electrical characteristics 章節
1、STM32F1系列
可以看出F1系列內部FLASH頁擦除時間最大為40ms,半字寫入的時間為52.2us,比如按字寫入1024字節數據,需要26.8ms,還是比較快的
2、STM32F4系列
可以看出F4系列內部不同扇區擦除時間也不一樣的,字寫入的時間為16us,比如按字寫入1024字節數據,只需要4ms,非常快
3、STM32L1系列
可以看出L1系列內部FLASH頁擦除和編程的時間都是3.28ms,比如按字寫入1024字節數據,需要840ms,非常慢;但是擦除是比較快的
編輯:hfy
-
單片機
+關注
關注
6067文章
44992瀏覽量
650610 -
FlaSh
+關注
關注
10文章
1679瀏覽量
151865 -
存儲器
+關注
關注
38文章
7653瀏覽量
167437 -
STM32
+關注
關注
2293文章
11032瀏覽量
365073
發布評論請先 登錄
評論