13年電子設(shè)計大賽-培訓(xùn)cortex片上閃存_第1頁
13年電子設(shè)計大賽-培訓(xùn)cortex片上閃存_第2頁
13年電子設(shè)計大賽-培訓(xùn)cortex片上閃存_第3頁
13年電子設(shè)計大賽-培訓(xùn)cortex片上閃存_第4頁
13年電子設(shè)計大賽-培訓(xùn)cortex片上閃存_第5頁
免費預(yù)覽已結(jié)束,剩余19頁可下載查看

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論