5、Flash存儲器(Flash)
5.1簡介
Flash存儲器連接在AHB總線上,由Flash控制器統一管理,可對存儲器執行取指、讀取、編程和擦除操作,并具有安全訪問機制和讀寫保護等功能。
沈陽芯碩科技有限公司是華大電子代理商,有技術問題可咨詢我們。
5.2Flash主要特性
l高達128 KB的用戶存儲空間
-塊大小:16 KB
-頁大小:512字節
l32-bits位寬讀取/寫入
l支持頁擦除、塊擦除、批量擦除
l可配置3種讀出保護等級(RDP)
l2塊可配置的代碼讀出保護區域(PCROP)
l2塊可配置的寫入保護區域(WRP)
l可配置大小的用戶安全存儲區域
5.3Flash功能描述
5.3.1Flash存儲器組成
Flash存儲器按32-bits位寬執行讀寫訪問,可存儲指令和數據。
Flash存儲器的組成如下:
lUser flash區:用于存儲用戶程序和數據,存儲空間為 128KB,分成8個
塊(Block),每個塊包含32個頁(Page),每頁512字節;
lSystem memory區:用于存儲 Bootloader和算法API,存儲空間為14KB;
lOption bytes區:用于存儲外設和存儲器保護配置的選項字節;
lEngineer區:用于存儲UID、TS/BGR校準值;
lOTP區:一次性可編程區域,共512字節。
5.3.2Flash讀取訪問等待周期
Flash存儲器連接在AHB總線上,讀取Flash時使用HCLK時鐘。當HCLK的 時鐘頻率超出Flash存儲器的工作頻率時,就會造成數據讀取錯誤,此時需要插入等待周期。 Flash訪問控制寄存器(FLASH_ACR)中的LATENCY[1:0]位域,用于配置Flash讀取訪問的等待周期,HCLK時鐘頻率與Flash讀取訪問等待周期的對應關系見 下表。
為保證Flash讀取訪問不出現異常或錯誤,當要改變HCLK的時鐘頻率時,必須按照特定步驟進行配置。
l提高HCLK頻率的配置步驟:
1) 通過配置FLASH_ACR寄存器中的LATENCY[1:0]位域,增大Flash
讀取訪問的等待周期;
2) 讀取LATENCY[1:0]位域,檢查等待周期已配置成功;
3) 提高HCLK頻率,可通過配置RCC時鐘配置寄存器(RCC_CFG)
中的SYSW[2:0]位域,切換更高頻率的時鐘源,或通過配置HPRE[2:0]
位域,減小系統時鐘的分頻值;
4) 配置SYSW[2:0]位域后,必須對RCC_CFG寄存器中的SYSWS[2:0]
位域進行檢查,確認系統時鐘已切換完成。
l降低HCLK頻率的配置步驟:
1) 降低HCLK頻率,可通過配置RCC時鐘配置寄存器(RCC_CFG)
中的SYSW[2:0]位域,切換更低頻率的時鐘源,或通過配置HPRE[2:0]
位域,增大系統時鐘的分頻值;
2) 配置SYSW[2:0]位域后,必須對RCC_CFG寄存器中的SYSWS[2:0]
位域進行檢查,確認系統時鐘已切換完成;
3) 通過FLASH_ACR寄存器中的LATENCY[1:0]位域,減小Flash讀取
訪問的等待周期;
4) 讀取LATENCY[1:0]位域,檢查等待周期已配置成功。
5.3.3Flash解鎖
為防止Flash被意外修改,增加了保護措施,必須向特定寄存器寫入密鑰,才能解鎖相關功能的配置權限。
5.3.3.1Flash控制寄存器解鎖
復位后,Flash控制寄存器(FLASH_CR)將處于寫保護鎖定狀態。要配置
FLASH_CR寄存器,需首先進行解鎖操作。
FLASH_CR寄存器的解鎖操作,必須嚴格按照以下步驟順序執行:
1) 向FLASH_CRKEY寄存器寫入密鑰 1:0xE57A 1A85;
2) 向FLASH_CRKEY寄存器寫入密鑰 2:0x7C6E 8391;
3) 檢查FLASH_CR寄存器中的LOCK位,當該位清0時,表明FLASH_CR寄存器已解鎖。解鎖完成后,才能對FLASH_CR寄存器進行配置。
注意:FLASH_CR寄存器中與選項字節相關的控制位(OBL_LAUNCH和OPTSTRT), 必須在 Flash選項字節解鎖后才能進行配置。密鑰必須嚴格按照順序寫入,如果出現以下情況,將產生總線錯誤同時觸發 HardFault中斷,直到再次復位后,才能重新對FLASH_CR寄存器進行解鎖:
l向FLASH_CRKEY寄存器寫入錯誤的密鑰值;
l解鎖順序錯誤,先向FLASH_CRKEY寄存器寫入密鑰2:0x7C6E 8391;
l解鎖后繼續向FLASH_CRKEY寄存器寫入任意值(包括密鑰)。
將FLASH_CR寄存器中的LOCK位重新置1,能恢復FLASH_CR寄存器的寫 保護鎖定狀態。通過復位,也能使FLASH_CR寄存器恢復成寫保護鎖定狀態。
注意:當FLASH_SR寄存器中的BSY位為1時,對FLASH_CR寄存器的寫入將無效,FLASH_SR寄存器中的PESERR標志將置1,Flash當前操作將繼續正常執行。
5.3.3.2Flash選項字節解鎖
復位后,Flash選項字節處于寫保護鎖定狀態,所有的選項字節加載寄存器、
FLASH_CR寄存器中的OBL_LAUNCH位和OPTSTRT位,都會被寫保護。要對選項字節進行更新,就先要進行解鎖操作。
Flash選項字節的解鎖操作,必須嚴格按照以下步驟順序執行:
1) 先解鎖Flash控制寄存器FLASH_CR(詳見:Flash控制寄存器解鎖);
2) 向FLASH_OPTKEY寄存器寫入密鑰 1:0x6A89 4D7B;
3) 向FLASH_OPTKEY寄存器寫入密鑰 2:0x7C31 1F5A;
4) 檢查FLASH_CR寄存器中的OPTLOCK位,當該位清0時,表明Flash選項字節已解鎖。解鎖完成后,才能對選項字節加載寄存器及其控制位(OBL_LAUNCH和OPTSTRT)進行配置。
密鑰必須嚴格按照順序寫入,如果出現以下情況,將產生總線錯誤同時觸發
HardFault中斷,直到再次復位后,才能重新對Flash選項字節進行解鎖:
l向FLASH_OPTKEY寄存器寫入錯誤的密鑰值;
l解鎖順序錯誤,先向FLASH_OPTKEY寄存器寫入密鑰2:0x7C31 1F5A;
l解鎖后繼續向FLASH_OPTKEY寄存器寫入任意值(包括密鑰);
l在對FLASH_CR寄存器解鎖前,向FLASH_OPTKEY寄存器寫入任意值
(包括密鑰)。 將FLASH_CR寄存器中的OPTLOCK位重新置1,能恢復Flash選項字節的寫保護鎖定狀態。通過復位,也能使Flash選項字節恢復成寫保護鎖定狀態。當 FLASH_CR寄存器恢復成寫保護鎖定狀態時(LOCK位置1),Flash選項字節也會被恢復成寫保護鎖定狀態,OPTLOCK位將自動置1。
5.3.3.3Flash掉電控制位解鎖
復位后,Flash訪問控制寄存器(FLASH_ACR)中的PDEN位將處于寫保護鎖定狀態,該位用于控制Flash的掉電。要配置 PDEN位,就要先進行解鎖操作。PDEN位的解鎖操作,必須嚴格按照以下步驟順序執行:
1) 先解鎖FLASH控制寄存器FLASH_CR(詳見:Flash控制寄存器解鎖);
2) 向FLASH_PDKEY寄存器寫入密鑰 1:0x57D9 3AB6;
3) 向FLASH_PDKEY寄存器寫入密鑰 2:0x9A2D 827C;
4) 檢查FLASH_CR寄存器中的PDLOCK位,當該位清0時,表明PDEN位已解鎖。解鎖完成后,可對PDEN位進行配置。密鑰必須嚴格按照順序寫入,如果出現以下情況,將產生總線錯誤同時觸發 HardFault中斷,直到再次復位后,才能重新對PDEN位進行解鎖操作:
l向FLASH_PDKEY寄存器寫入錯誤的密鑰值;
l解鎖順序錯誤,先向FLASH_PDKEY寄存器寫入密鑰2:0x9A2D 827C;
l解鎖后繼續向FLASH_PDKEY寄存器寫入任意值(包括密鑰);
l在對FLASH_CR寄存器解鎖前,向FLASH_PDKEY寄存器寫入任意值(包括密鑰)。 將FLASH_CR寄存器中的PDLOCK位重新置1,能恢復PDEN位的寫保護鎖定狀態。另外通過復位,也能使 PDEN位恢復成寫保護鎖定狀態。當FLASH_CR寄存器恢復成寫保護鎖定狀態時(LOCK位置1),PDEN位也會被恢復成寫保護鎖定狀態,PDLOCK位將自動置1。
5.3.4Flash功耗管理
為進一步降低系統功耗,當程序僅在SRAM中運行時,通過將 Flash訪問控制 寄存器(FLASH_ACR)中的PDEN位置1,能使Flash進入Power Down狀態。在配置PDEN位前,要先進行解鎖操作,解鎖步驟詳見:Flash掉電控制位解鎖。Flash處于Power Down狀態時,可通過配置PDEN位清0,使Flash從Power Down狀態恢復成上電狀態。
注意: Flash恢復成上電狀態后,需等待 10μs才允許對Flash進行操作。
當進入Stop或Standby模式時,Flash將自動進入Power Down狀態。如果在進入低功耗模式前,Flash處于上電狀態,則在喚醒后 Flash將自動上電。
審核編輯黃宇
-
mcu
+關注
關注
146文章
17002瀏覽量
350334 -
寄存器
+關注
關注
31文章
5322瀏覽量
120022 -
FlaSh
+關注
關注
10文章
1622瀏覽量
147761 -
存儲器
+關注
關注
38文章
7453瀏覽量
163610
發布評論請先 登錄
相關推薦
評論