stm32的FLASH分為主存儲(chǔ)塊、信息塊和閃存存儲(chǔ)器接口寄存器等 3 部分組成。
主存儲(chǔ)塊用于保存具體的程序代碼和用戶數(shù)據(jù)。起始地址0x08000000,b0和b1接GND從這里開始執(zhí)行程序。
信息塊用于負(fù)責(zé)由stm32出廠時(shí)放置2KB的啟動(dòng)程序(BootLoader)和512B的用戶配置信息區(qū)。啟動(dòng)程序代碼,是用來存儲(chǔ)ST 自帶的啟動(dòng)程序,b0接3.3v,b1接GND運(yùn)行的就是這部分代碼 ,用作串口下載代碼。
閃存存儲(chǔ)器接口寄存器,該部分用于控制閃存讀寫等,是整個(gè)閃存模塊的控制機(jī)構(gòu) 。在執(zhí)行閃存寫操作時(shí),任何對(duì)閃存的讀操作都會(huì)鎖住總線,在寫操作完成后讀操作才能正確地進(jìn)行;既在進(jìn)行寫或擦除操作時(shí),不能進(jìn)行代碼或數(shù)據(jù)的讀取操作。對(duì)主存儲(chǔ)器和信息塊的寫入由內(nèi)嵌的閃存編程/擦除控制器(FPEC)管理 。
主存儲(chǔ)器是以頁為單位劃分的。stm32根據(jù)FLASH主存儲(chǔ)塊容量、頁面的不同,系統(tǒng)存儲(chǔ)器的不同,分為小容量、中容量、大容量、互聯(lián)型,共四類產(chǎn)品。
小容量產(chǎn)品:主存儲(chǔ)塊1-32KB, 每頁1KB。系統(tǒng)存儲(chǔ)器2KB
中容量產(chǎn)品:主存儲(chǔ)塊64-128KB, 每頁1KB。系統(tǒng)存儲(chǔ)器2KB
大容量產(chǎn)品:主存儲(chǔ)塊256KB以上, 每頁2KB。系統(tǒng)存儲(chǔ)器2KB
互聯(lián)型產(chǎn)品:主存儲(chǔ)塊256KB以上, 每頁2KB。系統(tǒng)存儲(chǔ)器18KB
對(duì)Flash的寫入操作要遵循“先擦除后寫入”的原則。Flash編程操作都是以頁為單位寫入,寫入的操作必須要以32位字或16位半字寬度數(shù)據(jù)為單位,允許跨頁寫。
FLASH 最快訪問速度≤24Mhz ,CPU使用 72Mhz的主頻操作FLASH需要加入等待時(shí)間。
閃存的編程和擦除
STM32 的閃存編程是由 FPEC(閃存編程和擦除控制器)模塊處理的,包含 7 個(gè)
32 位寄存器:
FPEC 鍵寄存器(FLASH_KEYR)
選擇字節(jié)鍵寄存器(FLASH_OPTKEYR)
閃存控制寄存器(FLASH_CR)
閃存狀態(tài)寄存器(FLASH_SR)
閃存地址寄存器(FLASH_AR)
選擇字節(jié)寄存器(FLASH_OBR)
寫保護(hù)寄存器(FLASH_WRPR)
FPEC 鍵寄存器(FLASH_KEYR)包含3個(gè)鍵值
RDPRT=0X000000A5
KEY1=0X45670123
KEY2=0XCDEF89AB
stm32復(fù)位以后, FPEC(閃存編程和擦除控制器)模塊被保護(hù),無法操作閃存控制寄存器(FLASH_CR);將特定序列寫入到FPEC 鍵寄存器(FLASH_KEYR)才可以操作 FPEC(閃存編程和擦除控制器)模塊,寫保護(hù)解除。
stm32閃存編程必須寫入半字(16bit),無法寫入其他類型數(shù)據(jù)。閃存控制寄存器(FLASH_CR)中PG=1,在一個(gè)閃存地址寫入一個(gè)半字將啟動(dòng)一次編程 。在編程過程中閃存狀態(tài)寄存器(FLASH_SR)中BSY =1 ,任何讀寫閃存的操作都會(huì)使 CPU暫停,直到此次閃存編程結(jié)束。 flash中被寫入的地址必須是擦除掉的(0xffff)。
FLASH編程操作
1.檢查 FLASH_CR 的 LOCK 是否解鎖,如果沒有則先解鎖
2.檢查 FLASH_SR 寄存器的 BSY 位,以確認(rèn)沒有其他正在進(jìn)行的編程操作
3.設(shè)置 FLASH_CR 寄存器的 PG 位為’ 1’
4.在指定的地址寫入要編程的半字
5.等待 BSY 位變?yōu)椤?nbsp;0’
6.讀出寫入的地址并驗(yàn)證數(shù)據(jù)
FLASH分為頁擦除和整片擦除。
頁擦除
1. 檢查 FLASH_CR 的 LOCK 是否解鎖,如果沒有則先解鎖
2. 檢查 FLASH_SR 寄存器的 BSY 位,以確認(rèn)沒有其他正在進(jìn)行的閃存操作
3. 設(shè)置 FLASH_CR 寄存器的 PER 位為’ 1’
4. 用 FLASH_AR 寄存器選擇要擦除的頁
5. 設(shè)置 FLASH_CR 寄存器的 STRT 位為’ 1’
6. 等待 BSY 位變?yōu)椤?nbsp;0’
7. 讀出被擦除的頁并做驗(yàn)證
上一篇:STM32F030用IAR+JLINK在線調(diào)試無法下載FLASH問題
下一篇:STM32F030 USART2配置函數(shù) 波特率不對(duì)導(dǎo)致無法進(jìn)入中斷
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 光電融合突破算力邊界:曦智科技2025 WAIC發(fā)布多維度創(chuàng)新成果
- 阿里黑科技落地!夸克AI眼鏡全球首發(fā),高德、淘寶、支付寶都能用
- 化繁為簡(jiǎn), 適配復(fù)雜磁場(chǎng)環(huán)境,MT73xx 3D雙路輸出霍爾鎖存器賦能車規(guī)電機(jī)精準(zhǔn)控制
- 9.5億美元收購恩智浦MEMS傳感器業(yè)務(wù),意法半導(dǎo)體 在傳感器領(lǐng)域的地位再升級(jí)
- 高性能電動(dòng)滑板車 BLDC 電機(jī)驅(qū)動(dòng)器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計(jì)算+AI推理”一體化設(shè)計(jì),PLC協(xié)議解析與缺陷檢測(cè)的實(shí)時(shí)聯(lián)動(dòng)
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實(shí)時(shí)疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計(jì)
- 多模態(tài)融合感知的“語義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢(shì)”多模態(tài)交互設(shè)計(jì)
- 年末芯幣競(jìng)價(jià)最后一期——RIGOL 數(shù)字示波器
- 搶樓有禮|英飛凌天貓店有驚喜
- 西門子電子書下載《PCB 制造流程 - 通過數(shù)字化轉(zhuǎn)型進(jìn)行優(yōu)化》
- 學(xué)習(xí)有禮,分享也有禮!跟著小梅哥,一起intel SoC FPGA走起!
- TI汽車方案拼圖,你敢挑戰(zhàn)嗎?
- 有獎(jiǎng)直播|多款MSP430™片上Sigma-Delta ADC助力高精度信號(hào)檢測(cè)應(yīng)用 報(bào)名中
- 有獎(jiǎng)直播 | 與英飛凌一同革新您的電動(dòng)汽車溫控系統(tǒng):集成熱管理系統(tǒng)(低壓側(cè))
- 快充僅是第三代半導(dǎo)體應(yīng)用“磨刀石”
- VCSEL激光LiDAR成自動(dòng)駕駛汽車必備
- 為海浪能采集實(shí)現(xiàn)重大工程突破
- 高通公司聯(lián)合富士康工業(yè)互聯(lián)網(wǎng)推出高性能AI邊緣智能盒子
- 貿(mào)澤備貨Laird Connectivity堅(jiān)固型OC69421多頻段全向天線
- 劍指自動(dòng)駕駛技術(shù)和骨科機(jī)器人,亞馬遜、天智航為何押注機(jī)器人賽道?
- STM32的PWM極性和模式
- stm32PWM精確控制脈沖個(gè)數(shù)
- stm32 pwm的原理及主要參數(shù)的意義
- stm32定時(shí)器的pwm1模式和pwm2模式的區(qū)別