




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
閃存特性概覽閃存特性及參數(shù)一瞥多達64K字節(jié)空間,分成64個頁或16個扇區(qū)讀寫操作次數(shù):多達10K次半字(16位)的編程時間:53.5μs
(典型值)頁擦除和全部擦除的時間:20ms
(最小值)、40ms
(最大值)閃存接口特性帶預(yù)取指令緩沖的讀接口選項字節(jié)裝載器閃存的編程/擦除操作保護類型寫保護讀保護:0級、1級和2級1閃存的組織架構(gòu)用戶程序塊(主閃存區(qū)域)分成16個扇區(qū)→寫保護的單位每個扇區(qū)又分成4個頁→均勻頁容量→擦除的最小單位信息塊3K字節(jié)的系統(tǒng)閃存區(qū)域
,
bootloader6字節(jié)的選項字節(jié)(帶補碼共占12字節(jié)空間)2字節(jié)用來表示寫保護,1字節(jié)用來設(shè)定讀保護1字節(jié)作為系統(tǒng)的配置信息:是否使能SRAM的parity檢測PDR是否也檢測VDDABOOT1電平低功耗模式復(fù)位看門狗硬件啟動2字節(jié)保留給用戶數(shù)據(jù)2Typedef
struct{
IO
uint16_t
RDP;
IO
uint16_t
USER;Uint16_tUint16_t0;1;
IO
uint16_t
WPR0;
IO
uint16_t
WPR1;}
OB_TypeDef;3片上閃存讀接口的兩個特性取指令和取數(shù)據(jù)都在同一條總線上執(zhí)行預(yù)取指令緩沖和預(yù)取指令控制器預(yù)取指緩沖:3個塊,每個塊4個字節(jié)預(yù)取指控制器上電默認是開啟的上電內(nèi)核默認跑在HCLK=SYSCLK=HSI=8MHz要更改預(yù)取指使能或關(guān)閉,必須在特定條件下SYSCLK
<24MHz并且SYSCLK=HCLKSYSCLK!=HCLK時,必需使能預(yù)取指控制器讀操作的等待周期上電默認0等待周期上電內(nèi)核默認跑在HCLK=SYSCLK=HSI=8MHz內(nèi)核時鐘超過24MHz,必須 一個等待周期4閃存預(yù)取指控制器示意圖*
The
read
requests
are
managed
with
following
priority
order:1=Option
by
oader,
2=Prog
and
erase
operation,
3=Instr/Data
fetch,
4=prefetch
accessInstructions///
Data-DMA-Debug
BUS目的:從閃存執(zhí)行代碼,頻率也可高達48MHz3
×32位的預(yù)取指令緩沖Flash
memoryPrefetch
controllerARBITER
*32
bitsData16-bitData8
bit
Data32
bits
Thumb-216bits
Thumb-216
bits
ThumbCORTEX-M0CPUARRAY32bits32bitsFLASHMEMORY32bits5=======================================================================#####
FLASH
Interface
configuration
functions
#####=======================================================================|
|
||0WS(1CPU
cycle)||
|0
<
HCLK
<=
24
|||1WS(2CPU
cycle)|24
<
HCLK
<=
48
|7++[..][..]
FLASH_Interface
configuration_Functions,
includes
the
following
functions:(+)
void
FLASH_SetLatency(uint32_t
FLASH_Latency):[..]
To
correctly
read
data
from
Flash
memory,
the
number
of
wait
states
(LATENCY)must
be
correctly
programmed
according
to
the
frequency
of
the
CPU
clock
(HCLK)[..]?
+
+|
Wait
states
| HCLK
clock
frequency
(MHz)
|?????????(+)
void
FLASH_PrefetchBufferCmd(FunctionalState
NewState);[..]All
these
functions
don't
need
the
unlock
sequence.閃存的編程和擦除操作可以使用IAP或ICP對用戶閃存編程編程和擦除操作可以在產(chǎn)品的整個工作電壓范圍之內(nèi)進行;操作時HSI必須打開,否則產(chǎn)生Hard
Fault復(fù)位后閃存被寫保護序列才能開啟對FLASH_CR的必須對FLASH_KEYR寫入(庫函數(shù)FLASH_Unlock())以此進行半字編程、擦除操作(PG、PER、MER@FLASH_CR)閃存編程寬度是一次16位數(shù)據(jù)否則的總線錯誤會觸發(fā)Hard
Fault閃存的擦除單位是頁擦除或全部擦除包含啟動代碼和用戶選項字節(jié)的信息塊不受影響8閃存編程/擦除流程圖LOCK@FLASH_CRLOCK=1?閃存序列是置位PG@FLASH_CR半字寫操作否等待直到BUSY復(fù)位置位PER@FLASH_CR設(shè)置目標頁@FLASH_AR置位START@FLASH_CR來啟動置位MER@FLASH_CR置位START@FLASH_CR來啟動等待直到BUSY復(fù)位閃存上鎖如果有頁處于寫保護狀態(tài),全擦除操作不會被執(zhí)行,被置位WRP錯誤910=======================================================================#####
FLASH
Memory
Programming
functions
#####=======================================================================[..]
The
FLASH
Memory
Programming
functions,
includes
thefollowing
functions:(+)
void
FLASH_Unlock(void);(+)
void
FLASH_Lock(void);(+)
FLASH_Status
FLASH_ErasePage(uint32_t
Page_Address);(+)
FLASH_Status
FLASH_EraseAllPages(void);(+)
FLASH_StatusFLASH_ProgramWord(uint32_t
Address,
uint32_t
Data);(+)
FLASH_Status
FLASH_ProgramHalfWord(uint32_t
Address,
uint16_t
Data);[..]
Any
operation
of
erase
or
program
should
follow
these
steps:??????(#)
Call
the
FLASH_Unlock()
function
to
enable
the
flash
controlregister
andprogram
memory
access(#)
Call
the
desired
function
to
erase
page
or
program
data(#)
Call
the
FLASH_Lock()
todisable
the
flash
program
memory
access( mended
to
protect
the
FLASH
memory
against
possible
unwanted
operation)選項字節(jié)的編程和擦除操作對選項字節(jié)的編程和用戶閃存不同先對FLASH_OPTKEYR寫入同樣的
序列,以獲得對選項字節(jié)編程的
(庫函數(shù)FLASH_OB_Unlock()
)以此進行半字編程、擦除操作(OPTPG、OPTER@FLASH_CR)當改變選項字節(jié)的設(shè)置,使得用戶閃存讀保護從級別1降至級別0,硬件會自動對閃存進行全部擦除上電復(fù)位時,選項字節(jié)裝載器會
信息塊中的選項字節(jié)內(nèi)容,然后拷貝到閃存寄存器中;用戶還可使用FORCE_OPTLOAD@FLASH_CR來發(fā)起一次選項字節(jié)的裝載(同時也會系統(tǒng)復(fù)位)11Typedef
struct{
IO
uint16_t
RDP;
IO
uint16_t
USER;Uint16_tUint16_t0;1;
IO
uint16_t
WPR0;
IO
uint16_t
WPR1;}
OB_TypeDef;76543210RAM_PARITYVDDA_MONITnBOOT1nRST_STDBYnRST_STOPWDG_SW0x1FFF
F80B612選項字節(jié)編程/擦除流程圖OPTWRE@FLASH_CR選項字節(jié)序列OPTWRE=1?是否等待直到BUSY復(fù)位置位OPTPG@FLASH_CR對選項字節(jié)區(qū)域進行相應(yīng)半字寫操作置位OPTER@FLASH_CR置位START@FLASH_CR來啟動等待直到BUSY復(fù)位選項字節(jié)上鎖編程開始之前LSB字節(jié)的補碼被自動計算并替換MSB字節(jié)選項字節(jié)擦除后的默認讀保護狀態(tài)是一級讀保護;庫函數(shù)FLASH_OB_Erase()不改變讀保護級別13=======================================================================#####
Option
Bytes
Programming
functions
#####=======================================================================????????[..]
The
FLASH_Option
Bytes
Programming_functions,
includes
the
following
functions:(+)
void
FLASH_OB_Unlock(void);(+)
void
FLASH_OB_Lock(void);(+)
void
FLASH_OB_Launch(void);(+)
FLASH_Status
FLASH_OB_Erase(void);(+)
FLASH_Status
FLASH_OB_EnableWRP(uint32_t
OB_WRP);(+)FLASH_Status
FLASH_OB_RDPConfig(uint8_t
OB_RDP);(+)
FLASH_Status
FLASH_OB_UserConfig(uint8_t
OB_IWDG,
uint8_t
OB_STOP,
uint8_tOB_STDBY);(+)
FLASH_Status
FLASH_OB_BOOTConfig(uint8_t
OB_BOOT1);(+)FLASH_Status
FLASH_OB_VDDAConfig(uint8_t
OB_VDDA_
OG);(+)
FLASH_Status
FLASH_OB_SRAMParityConfig(uint8_t
OB_SRAM_Parity);(+)
FLASH_Status
FLASH_OB_WriteUser(uint8_t
OB_USER);(+)
FLASH_Status
FLASH_ProgramOptionByteData(uint32_t
Address,
uint8_t
Data);(+)
uint8_t
FLASH_OB_GetUser(void);(+)
uint32_t
FLASH_OB_GetWRP(void);(+)
FlagStatus
FLASH_OB_GetRDP(void);[..]
Any
operation
of
erase
or
program
should
follow
these
steps:14(#)
Call
the
FLASH_OB_Unlock()
function
to
enable
the
Option
Bytes
registers
access??????????(#)
Call
one
or
several
functions
to
program
the
desired
option
bytes(++)
FLASH_Status
FLASH_OB_RDPConfig(uint8_tOB_RDP)
=>
to
set
the
desiredreadProtection
Level(++)
FLASH_Status
FLASH_OB_WRPConfig(uint32_t
OB_WRP,
FunctionalState
NewState)=>
to
Enable/Disable
the
desired
sectorwrite
protection(++)
FLASH_Status
FLASH_OB_UserConfig(uint8_t
OB_IWDG,
uint8_tOB_STOP,
uint8_tOB_STDBY)=>
to
configure
the
user
option
Bytes:
IWDG,
STOP
and
the
Standby.(++)
FLASH_Status
FLASH_OB_BOOTConfig(uint8_t
OB_BOOT1)=>
to
set
or
reset
BOOT1(++)
FLASH_Status
FLASH_OB_VDDAConfig(uint8_t
OB_VDDA_
OG)=>
to
enable
or
disable
the
VDDA og
Monitoring(++)
You
can
write
all
User
Options
bytes
at
once
using
a
single
functionby
calling
FLASH_Status
FLASH_OB_WriteUser(uint8_t
OB_USER)??(#)
Once
all
needed
option
bytes
to
be
programmed
are
correctlywritten,
call
theFLASH_OB_Launch(void)
function
to
launch
the
Option
Bytes
programming
process.(#)
Call
the
FLASH_OB_Lock()
to
disable
the
Option
Bytes
registers
access
(
mendedto
protect
the
option
Bytes
against
possible
unwanted
operations)15閃存錯誤/狀態(tài)標志及其中斷閃存接口提供以下錯誤和狀態(tài)標志W(wǎng)RPERR(寫保護出錯)PGERR(編程出錯)EOP(操作完成)可觸發(fā)中斷BSY(編程/擦除操作正在進行中)以上錯誤完成后由硬件復(fù)位以上操作出錯時也由硬件復(fù)位中斷事件狀態(tài)/錯誤標志中斷使能控制操作完成EOPEOPIE操作出錯WRPERR
@
FLASH_SRPGAERR
@
FLASH_SRERRIE選項字節(jié)校驗出錯OPTERR
@
FLASH_OBR不產(chǎn)生中斷可觸發(fā)中斷16
使用用戶閃存及選項字節(jié)可能的錯誤
錯誤操作錯誤標志片上用戶閃存出錯HARD
FAULT非16位編程HARD
FAULT編程時目標地址未被擦除PGERR@SR編程時目標地址被寫保護WRPRTERR@SR頁擦除時目標地址被寫保護全擦除時目標地址被寫保護一級讀保護一級讀保護時,調(diào)試模式/運行在RAM模式/運行bootloader模式下的讀操作HARD
FAULT一級讀保護時,調(diào)試模式下/運行在RAM模式下/運行bootloader模式下時的寫操作PGERR@SR選項字節(jié)編程時目標地址未被擦除WRPRTERR@SR
?出錯HARD
FAULT裝載時發(fā)現(xiàn)補碼不匹配OPTERR@OBR1718=======================================================================#####
Interrupts
and
flags
management
functions
#####=======================================================================[..]
The
Interrupts
and
flags
management
functions,
includes
the
following
functions:(+)
void
FLASH_ITConfig(void);(+)
voidFLASH_ClearFlag(void);(+)
FLASH_Status
FLASH_GetFlagStatus(void);(+)
FLASH_Status
FLASH_GetStatus(void);(+)
FLASH_Status
FLASH_WaitForLastOperation(uint32_t
Timeout);閃存寫保護用戶閃存有兩種保護寫保護:避免對64KB用戶閃存意外的寫入讀保護:防止代碼 (三級讀保護)讀、寫保護都是通過選項字節(jié)設(shè)置的寫保護保護粒度:扇區(qū)(4個頁,4K字節(jié))對整個64K字節(jié)的保護占用選項字節(jié)的16位,2個字節(jié)任何對被寫保護目標的編程或擦除操作不被執(zhí)行并返回WRPRTERR@FLASH_SR解除保護擦除選項字節(jié)對
做POR復(fù)位或通過
置位FORCE_OPTLOAD進行選項字節(jié)重裝載來關(guān)掉寫保護19閃存讀保護讀保護配置選項字節(jié)中的RDP字節(jié),通過給系統(tǒng)上電復(fù)位或置位FORCE_OPTLOAD來重裝載選項字節(jié)3個保護級別,從級別0(不保護)到級別2( 保護)讀保護級別0:不保護各種啟動配置下(用戶閃存啟動、SRAM啟動、bootloader啟動或使用調(diào)試接口)對片上閃存(只要寫保護沒有置位)、RTC備份寄存器的所有操作都允許RDP字節(jié)的值補碼字節(jié)的值讀保護級別0xAA0x55Level
0任意非0xAA或0xCC的值任意非0x55和0x33的值(無需和RDP字節(jié)互為補碼)Level
1(默認狀態(tài))0xCC0x33Level
2
(調(diào)試被
)20讀保護級別1該級別下的
控制從用戶閃存執(zhí)行的代碼可以對用戶閃存、選項字節(jié)和備份域寄存器進行任何操作修改選項字節(jié)以解除當前保護級別調(diào)試模式、運行bootloader、從SRAM啟動:不能對片上閃存和RTC備份域寄存器進行任何讀寫讀操作會產(chǎn)生總線錯位,觸發(fā)Hard
Fault編程、擦除的寫操作會置位PGERR標志只能通過把ROP改寫成0xAA來間接對閃存進行全部擦除這是擦除選項字節(jié)后默認的讀保護級別解除1級讀保護修改選項字節(jié)中讀保護字節(jié)成0xAA,重裝載選項字節(jié)硬件自動對片上閃存進行全部擦除RTC備份寄存器被全部復(fù)位21讀保護級別2該級別下的
控制級別1下所有控制仍然有效從SRAM、bootloader啟動,以及調(diào)試功能全部失效選項字節(jié)不能被擦除了(由硬件保證)用戶的擦除操作不會產(chǎn)生錯誤或中斷在用戶代碼啟動模式下還可以對選項字節(jié)中除讀保護字節(jié)之外的域進行編程這些寫操作是one
shot的,因為不能再被擦除解除2級讀保護無法解除,2級讀保護的設(shè)置是不可逆的22讀保護各級別之間的轉(zhuǎn)換Level
2RDP=0xCCRDP=0xAALevel
1RDP≠
0xCCRDP
≠
0xAAWrite
options
includingRDP
=
0xCCWrite
options
includingRDP
=
0xCCWrite
options
includingRDP
≠
0xAA
and
RDP
≠0xCCLevel
0Write
options
includingRDP
=0xAARDP
=
0xAAOther
option(s)
modifiedRDP
≠
0xAA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加強動物疫苗管理制度
- 公共管理設(shè)施管理制度
- 包裝公司運營管理制度
- 學(xué)校教師人員管理制度
- 嵌入式開發(fā)工具鏈試題及答案
- 多種規(guī)劃聯(lián)合管理制度
- 公司印刷質(zhì)量管理制度
- 測試策略在多項目環(huán)境中的應(yīng)用試題及答案
- 中醫(yī)二試題及答案解析
- 信息系統(tǒng)監(jiān)理師資格考試準備試題及答案
- 商務(wù)禮儀之辦公室禮儀課件
- 企業(yè)負責(zé)人安全管理人員安全能力提升培訓(xùn)之一課件
- 綠色施工策劃書(模板)
- 肺癌生活質(zhì)量量表
- 藍色高效會議管理技巧PPT模板
- GA 1517-2018 金銀珠寶營業(yè)場所安全防范要求
- 浙江高考英語--600高頻詞匯
- 地下水動力學(xué)PDF(課堂PPT)
- 企業(yè)標準化管理手冊范本
- 國學(xué)志愿者申報表
- 項目部勞資員任命書
評論
0/150
提交評論