00. 目錄
01. FLASH簡介
-
STM32F1系列的FLASH包含程序存儲器、系統(tǒng)存儲器和選項(xiàng)字節(jié)三個部分,通過閃存存儲器接口(外設(shè))可以對程序存儲器和選項(xiàng)字節(jié)進(jìn)行擦除和編程
-
讀寫FLASH的用途:
利用程序存儲器的剩余空間來保存掉電不丟失的用戶數(shù)據(jù)
通過在程序中編程(IAP),實(shí)現(xiàn)程序的自我更新
-
在線編程(In-Circuit Programming – ICP)用于更新程序存儲器的全部內(nèi)容,它通過JTAG、SWD協(xié)議或系統(tǒng)加載程序(Bootloader)下載程序
-
在程序中編程(In-Application Programming – IAP)可以使用微控制器支持的任一種通信接口下載程序
STM32F10xxx內(nèi)嵌的閃存存儲器可以用于在線編程(ICP)或在程序中編程(IAP)燒寫。
在線編程(In-Circuit Programming – ICP)方式用于更新閃存存儲器的全部內(nèi)容,它通過JTAG、SWD協(xié)議或系統(tǒng)加載程序(Bootloader)下載用戶應(yīng)用程序到微控制器中。ICP是一種快速有效的編程方法,消除了封裝和管座的困擾。
與ICP方式對應(yīng),在程序中編程(In-Application Programming – IAP)可以使用微控制器支持的任一種通信接口(如I/O端口、USB、CAN、UART、I 2 C、SPI等)下載程序或數(shù)據(jù)到存儲器中。IAP允許用戶在程序運(yùn)行時重新燒寫閃存存儲器中的內(nèi)容。然而,IAP要求至少有一部分程序已經(jīng)使用ICP燒到閃存存儲器中。
閃存接口是在AHB協(xié)議上實(shí)現(xiàn)了對指令和數(shù)據(jù)的訪問,它通過對存儲器的預(yù)取緩存,加快了存儲器的訪問;閃存接口還實(shí)現(xiàn)了在所有工作電壓下對閃存編程和擦除所需的邏輯電路,這里還包括訪問和寫入保護(hù)以及選擇字節(jié)的控制。
02. 閃存模塊組織
03. FLASH基本結(jié)構(gòu)
04. FLASH解鎖
- FPEC共有三個鍵值:
RDPRT鍵 = 0x000000A5
KEY1 = 0x45670123
KEY2 = 0xCDEF89AB
- 解鎖:
復(fù)位后,F(xiàn)PEC被保護(hù),不能寫入FLASH_CR
在FLASH_KEYR先寫入KEY1,再寫入KEY2,解鎖
錯誤的操作序列會在下次復(fù)位前鎖死FPEC和FLASH_CR
- 加鎖:
設(shè)置FLASH_CR中的LOCK位鎖住FPEC和FLASH_CR
05. 使用指針訪問存儲器
?使用指針讀指定地址下的存儲器:
uint16_t Data = *((__IO uint16_t *)(0x08000000));
?使用指針寫指定地址下的存儲器:
*((__IO uint16_t *)(0x08000000)) = 0x1234;
?其中:
#define __IO volatile
06. 程序存儲器編程
編程過程
閃存頁擦除過程
閃存全擦除過程
07. 選項(xiàng)字節(jié)
?RDP:寫入RDPRT鍵(0x000000A5)后解除讀保護(hù)
?USER:配置硬件看門狗和進(jìn)入停機(jī)/待機(jī)模式是否產(chǎn)生復(fù)位
?Data0/1:用戶可自定義使用
?WRP0/1/2/3:配置寫保護(hù),每一個位對應(yīng)保護(hù)4個存儲頁(中容量)
08. 選項(xiàng)字節(jié)編程
?檢查FLASH_SR的BSY位,以確認(rèn)沒有其他正在進(jìn)行的編程操作
?解鎖FLASH_CR的OPTWRE位
?設(shè)置FLASH_CR的OPTPG位為1
?寫入要編程的半字到指定的地址
?等待BSY位變?yōu)?
?讀出寫入的地址并驗(yàn)證數(shù)據(jù)
09. 選項(xiàng)字節(jié)擦除
?檢查FLASH_SR的BSY位,以確認(rèn)沒有其他正在進(jìn)行的閃存操作
?解鎖FLASH_CR的OPTWRE位
?設(shè)置FLASH_CR的OPTER位為1
?設(shè)置FLASH_CR的STRT位為1
?等待BSY位變?yōu)?
?讀出被擦除的選擇字節(jié)并做驗(yàn)證
10. 器件電子簽名
?電子簽名存放在閃存存儲器模塊的系統(tǒng)存儲區(qū)域,包含的芯片識別信息在出廠時編寫,不可更改,使用指針讀指定地址下的存儲器可獲取電子簽名
?閃存容量寄存器:
基地址:0x1FFF F7E0
大?。?6位
?產(chǎn)品唯一身份標(biāo)識寄存器:
基地址: 0x1FFF F7E8
大?。?6位文章來源:http://www.zghlxwxcb.cn/news/detail-840572.html
11. 附錄
參考: 【STM32】江科大STM32學(xué)習(xí)筆記匯總文章來源地址http://www.zghlxwxcb.cn/news/detail-840572.html
到了這里,關(guān)于【STM32】STM32學(xué)習(xí)筆記-FLASH閃存(48)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!