Flash support(flash.h)
フラッシュメモリのサポート
概要
内部フラッシュメモリをサポートします。
データ型
■ struct flash_reg_map
__io uint32 ACR アクセス制御レジスタ(FLASH_ACR)
__io uint32 KEYR キー・レジスタ(FLASH_KEYR)
__io uint32 OPTKEYR OPTKEYレジスタ(FLASH_OPTKEYR)
__io uint32 SR ステータスレジスタ(FLASH_SR)
__io uint32 CR コントロールレジスタ(FLASH_CR)
__io uint32 AR アドレスレジスタ(FLASH_AR)
__io uint32 OBR オプションバイトレジスタ(FLASH_OBR)
__io uint32 WRPR 書き込み保護レジスタ(FLASH_WRPR)
デバイス
なし
API関数
■ void flash_enable_prefetch(void)
ハードウェアプリフェッチャをオンにします。
※この関数の利用は推奨されていません。 代わりに、flash_enable_features(FLASH_PREFETCH)を使用してください。
■ void flash_set_latency(uint32 wait_states)
フラッシュ待機状態を設定します。
引数
wait_states :ウェイトステータス(FLASH_WAIT_STATE_0、FLASH_WAIT_STATE_1、... LASH_WAIT_STATE_7)
すべての待機状態がすべてのMCUで使用できるわけではないことに注意してください。 特定のシステムクロック(SYSCLK)周波数に対するwait_statesの許容値に関する制限については、MCUのFlashプログラミングマニュアルを参照してください。
■ void flash_enable_features(uint32 feature_flags)
フラッシュメモリ機能を有効にします。
引数
feature_flags
次の値をOR指定:
FLASH_PREFETCH(プリフェッチャをオンにする)
FLASH_ICACHE(命令キャッシュをオンにする)
FLASH_DCACHE(データキャッシュをオンにする)
ターゲットMCUが機能(例えば、STM32F1上の命令キャッシュおよびデータキャッシュ)を提供しない場合、フラグは無視される。 これにより、これらのフラグを無条件で使用することが可能になります。
レジスタマップベースポインタ
■ FLASH_BASE
フラッシュレジスタマップベースポインタ
レジスタのビット定義
アクセス制御レジスタ(FLASH_ACR)
ビット番号
FLASH_ACR_PRFTBS_BIT PRFTBS [5](r) プリフェッチバッファステータス
FLASH_ACR_PRFTBE_BIT PRFTBE [4] (rw) プリフェッチバッファ有効
FLASH_ACR_HLFCYA_BIT HLFCYA [3](rw) ハーフサイクル・アクセス有効
設定値
FLASH_ACR_PRFTBS (1U << FLASH_ACR_PRFTBS_BIT) プリフェッチバッファステータス
FLASH_ACR_PRFTBE (1U << FLASH_ACR_PRFTBE_BIT) プリフェッチバッファ有効
FLASH_ACR_HLFCYA (1U << FLASH_ACR_HLFCYA_BIT) ハーフサイクル・アクセス有効
FLASH_ACR_LATENCY 0x7
Latency(待ち時間)次の3ビットで指定:
これらのビットは、SYSCLK(システムクロック)期間とフラッシュアクセスの比率を表します
000 Zero wait state, if 0 < SYSCLK≤ 24 MHz
001 One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
010 Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz
ステータスレジスタ(FLASH_SR)
ビット番号
FLASH_SR_EOP_BIT EOP [5] (rw) 操作終了
FLASH_SR_WRPRTERR_BIT WRPRTERR [4] (rw) 書き込み保護エラー
FLASH_SR_PGERR_BIT PGERR [2] (rw) プログラミングエラー
FLASH_SR_BSY_BIT BSY [0] (r) ビジー
設定値
FLASH_SR_EOP (1U << FLASH_SR_EOP_BIT) 操作終了
FLASH_SR_WRPRTERR (1U << FLASH_SR_WRPRTERR_BIT) 書き込み保護エラー
FLASH_SR_PGERR (1U << FLASH_SR_PGERR_BIT) プログラミングエラー
FLASH_SR_BSY (1U << FLASH_SR_BSY_BIT) ビジー
制御レジスタ(FLASH_CR)
ビット番号
FLASH_CR_EOPIE_BIT EOPIE [12] (rw) End of operation interrupt enable
FLASH_CR_ERRIE_BIT ERRIE [10] (rw) Error interrupt enable
FLASH_CR_OPTWRE_BIT OPTWRE [9] (rw) Option bytes write enable
FLASH_CR_LOCK_BIT LOCK [7] (rw) Lock
FLASH_CR_STRT_BIT STRT [6] (rw) Start
FLASH_CR_OPTER_BIT OPTER [5] (rw) Option byte erase(Option byte erase chosen.)
FLASH_CR_OPTPG_BIT OPTPG [4] (rw) Option byte programming(Option byte programming chosen.)
FLASH_CR_MER_BIT MER [2] (rw) Mass erase(Erase of all user pages chosen.)
FLASH_CR_PER_BIT PER [1] (rw) Page erase(Page Erase chosen.)
FLASH_CR_PG_BIT PG [0] (rw) Programming(Flash programming chosen.)
設定値
FLASH_CR_EOPIE (1U << FLASH_CR_EOPIE_BIT) End of operation interrupt enable
FLASH_CR_ERRIE (1U << FLASH_CR_ERRIE_BIT) Error interrupt enable
FLASH_CR_OPTWRE (1U << FLASH_CR_OPTWRE_BIT) Option bytes write enable
FLASH_CR_LOCK (1U << FLASH_CR_LOCK_BIT) Lock
FLASH_CR_STRT (1U << FLASH_CR_STRT_BIT) Start
FLASH_CR_OPTER (1U << FLASH_CR_OPTER_BIT) Option byte erase
FLASH_CR_OPTPG (1U << FLASH_CR_OPTPG_BIT) Option byte programming
FLASH_CR_MER (1U << FLASH_CR_MER_BIT) Mass erase
FLASH_CR_PER (1U << FLASH_CR_PER_BIT) Page erase
FLASH_CR_PG (1U << FLASH_CR_PG_BIT) Programming
オプションバイトレジタ(FLASH_OBR)
ビット番号
FLASH_OBR_nRST_STDBY_BIT nRST_STDBY [4] (r) User option bytes nRST_STDBY
FLASH_OBR_nRST_STOP_BIT nRST_STOP [3] (r) User option bytes nRST_STOP
FLASH_OBR_WDG_SW_BIT WDG_SW [2] (r) User option bytes WDG_SW
FLASH_OBR_RDPRT_BIT RDPRT [1] (r) Read protection
FLASH_OBR_OPTERR_BIT OPTERR [0] (r) Option byte error
設定値
FLASH_OBR_DATA1 (0xFF << 18) Data1
FLASH_OBR_DATA0 (0xFF << 10) Data0
FLASH_OBR_USER 0x3FF User option bytes
FLASH_OBR_nRST_STDBY (1U << FLASH_OBR_nRST_STDBY_BIT) nRST_STDBY
FLASH_OBR_nRST_STOP (1U << FLASH_OBR_nRST_STOP_BIT) nRST_STOP
FLASH_OBR_WDG_SW (1U << FLASH_OBR_WDG_SW_BIT) WDG_SW
FLASH_OBR_RDPRT (1U << FLASH_OBR_RDPRT_BIT) Read protection
FLASH_OBR_OPTERR (1U << FLASH_OBR_OPTERR_BIT) Option byte error
参考文献
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。