STM32C0 - Flashメモリ

内蔵Flashメモリ
レビジョン 1.0

STM32C0マイクロコントローラファミリの全製品に搭載されている内蔵 Flashメモリのプレゼンテーションへようこそ。

1

概要• STM32C0は、最大32KBのシングルバン
クFlashメモリを内蔵• Flashメモリ･インタフェースは、すべてのアクセス（読出し、プログラム、消去）、メモリ保護、セキュリティ、およびオプションバイトのプログラミングを管理

アプリケーション側の利点• 高性能で低消費電力• 小さい消去粒度• 短いプログラミング時間• セキュリティと保護

2

STM32C0は、最大32KBのシングルバンクFlashメモリを内蔵しています。
Flashメモリインタフェースは、すべてのメモリアクセス（読出し、プログラム、および消去）、メモリ保護、セキュリティ、およびオプションバイトを管理します。
このFlashメモリインタフェースを使用するアプリケーションでは、低消費電力アクセスでありながら高性能という利点が得られます。消去の粒度が小さく、プログラミング時間も短くて済みます。
コードとデータ、適応できる読出しと書込みのアクセスに対して、さまざまなセキュリティと保護のメカニズムを備えています。

2

主な機能
• 最大32KBのシングルバンクFlashメモリ• 2KBのページ粒度• 高速消去（22ms）と高速プログラミング時間（ダブルワードで85µs）• プリフェッチ & 命令キャッシュ3

メインFlashメモリは2KB ページに分割され、それらのページは個別に消去できます。
全体消去機能もサポートされています。
Flashメモリアクセスには、CPUの実際の周波数に従ってウェイトステートが必要な場合があります。
遅延を短縮するために、Flashコントローラには、8バイトのプリフェッチバッファと16バイトの命令キャッシュが内蔵されています。
これらはVcore電源ドメインに含まれるので、消費電力の削減にも寄与します。

3Flashメモリの構成（1/2）• Flashメモリの構成• メインメモリ･ブロックは16ページで構成（1ページは2KB）• 1ページは8行で構成（1行は256バイト）• 情報ブロックの構成• STブートローダ用に予約されているシステム･メモリ• ユーザデータ用に1KB （ダブルワード128個分）のOTP （一度だけプログラム可能な）領域• OTPエリアにはダブルワードを1回だけ書込み可能で、書き込んだデータは消去不能• ダブルワードの1つのビットを0に設定しただけで、そのダブルワード全体が書込み不能（0x0 の値は例外）• ユーザ設定のオプション･バイト

4

メイン Flash メモリの32KB に加えて、STM32C0では次をサポートしています。
• ST ブートローダを含む6KB のシステムメモリ• 消去不能なユーザデータの格納に使用できる OTP メモリ• システムオンチップで IP を設定するデフォルト設定を含む
オプションバイトこれらはパワーオンリセット後に自動的にロードされされます。
システムメモリは予約されており、USART1 および I2C1 インタフェースのいずれかを介してFlashメモリを再プログラムするために使用されるブート ローダーが含まれています。

4Flashメモリの構成（2/2）
Flash領域
メイン･メモリ

情報ブロックFlashメモリアドレス

サイズ

名前

動作

粒度

0x0800 0000 – 0x0800 07FF

2KB

ページ0プログラミング

8バイト

…

…

…

高速プログラミング

256バイトの行

0x0800 7800 – 0x0800 7FFF

2KB

ページ15

消去

0x1FFF 0000 – 0x1FFF 17FF

6KB

システム･メモリ

セキュリティ保護可能なメモリ

0x1FFF 7000 – 0x1FFF 73FF

1KB

OTPエリア

書込み保護

0x1FFF 7800 – 0x1FFF 787F

128バイトオプション･バイト

読出し保護

グローバル

独自仕様コード読出
し保護

512バイト

2KBのページ

スライドの左の表は、メインFlashメモリ領域と情報ブロックに基づくメモリ構成の詳細を示しています。
右の表は、Flashメモリの動作の粒度の詳細を示しています。
• プログラミングは8バイトのダブルワードに対して行われる• 高速プログラミングは256バイトの行に対して行われる• 消去はグローバル（全体消去）または 2 KB のページのどちらかに対して行われる• セキュリティ保護可能なメモリはページに合わせて整列される• 書込み保護はページ単位で行われる• 読出し保護はグローバルに行われる• 独自仕様コード読出し保護は512バイト領域に対して行われる

5

Flashメモリの機能
堅牢なメモリの整合性と安全性• プログラミングの粒度は 64ビット• 2 つのプログラミング･モード:• 標準（メイン･メモリとOTP用）• 高速（メイン･メモリのみ）• Flashメモリの位置を確認せずに64個のダブルワードをプログラミング• リセット後は、電気的妨害などによる不要な動作からFlashメモリを保護するため、フラッシュ制御レジスタ（FLASH_CR）への書込みは許可されない

6

標準プログラミングは粒度が8バイトですが、高速プログラミングは256バイトの行をプログラミングできます。
高速プログラミングの主な目的は、ページのプログラミング時間の削減です。これは、Flashメモリにプログラムする前にその位置を確認する必要性をなくすことにより達成されます。これにより、ダブルワードごとの高電圧の上昇と下降の時間が短縮されます。
デフォルトでは、フラッシュ制御レジスタへのアクセスはロックされています。
Flashメモリの消去またはプログラミングの前に、ロック解除シーケンスを実行する必要があります。

6

プログラミング時間と消去時間
プログラミング時間と消去時間が短く、ページ･サイズが小さい データEEPROMのエミュレーションに有利
パラメータ

標準値

64ビットのプログラミング時間

85µs

1行（256バイト）のプログラミング時間

標準モード：2.7ms
高速モード：1.7ms

1ページ（2KB）のプログラミング時間

標準モード：21.8ms
高速モード：13.7ms

Flash （32KB）のプログラミング時間

標準モード：0.4s
高速モード：0.2s

ページ（2KB）の消去時間

22ms

全体消去時間22.1ms72KBの高速プログラミングは、標準モードプログラミングより37%高速です。
全体消去時間、すなわち32KB の消去操作は、ページ消去にかかる時間とほぼ同じです。

7

行（64ダブルワード）の高速プログラミング• 高速プログラミングでプログラムできるのはメイン･メモリのみ（OTPもオプション･バイトもプログラムできない）• プログラミングの前にハードウェアでFlashメモリの位置は確認されない• 64個のダブルワードを連続で書き込む必要がある• すべてのプログラミングでFlashメモリに対してハイ電圧が維持される• プログラミング中、電源は少なくとも7mAのピークを2µsの間供給できる必要がある• プログラミング時間とは、2つのダブルワード書込みリクエスト間の最長時間（約20µs）• この期間は割込みの無効化が必要• Flashメモリのクロック周波数（HCLK）は8MHz以上にする必要がある

8高速プログラミングと標準プログラミングの比較：• メインFlashメモリの任意の場所の8バイトダブルワードではなく、連続する256バイトをプログラミングします。
• 8バイトのプログラミングは、検証ステップにより信頼性が向上しています。
2つの連続するダブルワードの間の最大時間は約20µs であることに注意してください。2番目のダブルワードが到着するのがこの遅延の後だった場合、高速プログラミングは中断され、フラグがセットされます。したがって、この遅延を超えないように、割込みを無効にする必要があります。

8標準プログラミングモードと高速プログラミングモードの比較

プログラミング･モード
標準

高速

ターゲット

メイン･メモリとOTPエリア

メイン･メモリのみ

粒度

8バイト

256バイト固有の制限なし

アドレス位置の内容確認なし
Flashのクロック周波数は8MHz以上
割込み禁止

256バイトのプログラミングに要する時間

2.7ms

1.7ms

9

スライドの表に、標準プログラミングと高速プログラミングの比較を示します。

9Flashメモリの保持• 設計時の想定:
耐久性

10 Kcycles minimum @ -40 to +130 °C

データ保持

55℃で10,000サイクル後30年
85℃で10,000サイクル後15年
105℃で10,000サイクル後10年
85℃で1,000サイクル後30年
105℃で1,000サイクル後15年
125℃で1,000サイクル後7年

10各プログラム／消去操作はFlashメモリセルを劣化させる可能性があります。プログラム／消去サイクルが積み重なると、メモリセルは機能しなくなり、メモリエラーを引き起こします。
耐久性とは、Flashメモリが信頼性に影響を与えることなくサポートできる消去／プログラミングシーケンスの最大数です。
データ保持は、一定の期間にわたって一定のデータパターンを保持することとして定義されます。
保持は、プログラム／消去サイクル数および温度に依存します。

10Flashメモリ読出しアクセス
48MHzでCoreMarkスコアは110• Flashメモリ･アクセラレータにより、Flashメモリのアクセス時間による性能への影響を抑制できる
ウェイトステート（WS）（遅延）

HCLK (MHz)

0 WS

≤ 24

1 WS

≤ 48

11

Flashメモリのアクセス時間は固定ですが、AHBバス周波数は動的に変化する可能性があります。
ウェイトステートの数がプログラム可能であり、HCLKと呼ばれる実際の AHB周波数に従って設定する必要があるのはそのためです。
ソフトウェアが、HCLK周波数に従ってウェイトステートの数を調整します。
周波数を上げる前に、ウェイトステートの数を増やす必要があります。
周波数を下げた後は、ウェイトステートの数を減らす必要があります。
ウェイトステートの数がnull以外である場合、性能への影響を抑制するために、Flashメモリアクセラレータを有効にする必要があります。

11

メモリ･アクセラレータ
I キャッシュ16バイト

S-BUS AHB

プリフェッチ･バッファ8バイト

Cortex M0+
コア

I カレント・バッファ8バイト
3264

Flash
メモリ
4K x 64bit（32KB）

Vcoreドメイン• 命令キャッシュ： 2ライン x 64bit（16バイト）• プリフェッチ･バッファ： 8バイト
• 命令カレント・バッファ： 8バイト

12

CPUは32ビット命令フェッチリクエストを生成します。
Flashメモリからリクエストされた命令を含む8バイトのラインが読み出されてカレント・バッファに格納されると同時に、リクエストされたワードは CPUに直接転送されます。
Flashメモリから自動的に次のラインが読み出されてプリフェッチバッファに格納されます。
したがって、連続コードの場合、分岐が検出されるまで、連続するワードが S-AHB経由で提供されます。
コードが分岐により連続ではない場合、現在使用されている命令ラインまたはプリフェッチされている命令ラインに、命令が存在しないことがあります。この場合、サイクル数換算で少なくともウェイトステートの数に等しいペナルティが生じます。
小さなループは全体がカレント・バッファおよびプリフェッチバッファに格納される可能性があり、Flashメモリにアクセスする必要はありません。
Flashメモリコントローラは、16バイトの命令キャッシュも実装しています。リクエストされた命令がカレント・バッファとプリフェッチバッファのどちらにも存在しない場合、そのたびにラインが命令キャッシュにコピーされます。 CPU によってリクエストされた命令が命令キャッシュメモリに含まれる場合、遅延なくその命令が提供されます。すべての命令キャッシュメモリラインが使用されている場合、最も長い時間使われていない（L.R.U.）ポリシーを使用して命令メモリキャッシュの中で置換するラインを決定します。この機能は、ループを含むコードの場合に特に有用です。分岐先アドレスにある命令が命令キャッシュに格納されます。
プリフェッチバッファと命令キャッシュの有効化／無効化は、ソフトウェアで実行されます。
なぜなら、それらの性能への影響はFlashメモリアクセスのウェイトステートの数に依存するからです。命令キャッシュのリセットも、ソフトウェアで実行できます。

12メモリ･アクセラレータ
120

100

ウェイトステートの数に応じたMHzあたりの性能（CoreMark/MHz）CoreMarkスコア

8060

プリフェッチ +キャッシュ

プリフェッチキャッシュ

アクセラレーションなし

0 WS

2.43---

1 WS

2.31

2.31

2.02

1.96

40

2000

10203040

システム周波数Noアクセラレーションなし
acceleration

Cache
キャッシュ

プリフェッチPrefetchPrefetch+ cacheプリフェッチ＋キャッシュ13

アクセラレータが有効（プリフェッチバッファがオン、命令キャッシュがオン）である場合、性能は周波数に対して線形に向上します。
プリフェッチがオン、キャッシュがオンの場合の折れ線の傾きは、24 MHz におけるウェイトステート 0 から 1 への遷移による影響をほとんど受けません。
0～24 MHz では、プリフェッチバッファをオン、命令キャッシュをオンにしても性能は向上しません。

13Flashメモリの性能
Coremark / MHz• プリフェッチとキャッシュにより、Flashメモリの性能は周波数に対してほぼ線形• 2.31CoreMark/MHz （キャッシュをオン、プリフェッチをオン） → 110CoreMark @ 48MHz
キャッシュをオン、プリフェッチをオン@ 48 MHz(1ウェイトステート)

消費電流 （µA/MHz）72.9

性能 （CoreMark/MHz）

2.31

エネルギー効率 （CoreMark/mA）

31.4

14

スライドの表では、プリフェッチバッファと命令キャッシュをオンにすることが、Flashメモリアクセスによる消費電流の削減に寄与することも示されています。

14Flashメモリの保護（1/2）
アプリケーションのニーズに従った柔軟なFlashメモリ保護• 読出し保護（RDP）• SRAMからのブート時、またはブートローダが選択されている場合に、Flash / SRAM / バックアップ･レジスタに対する、デバッグ･インタフェース（SWD）によるアクセスを禁止• 独自仕様コード保護（PCROP）• 512バイトの粒度で定義した2つの領域を保護• 特定のコード領域を読出しアクセスまたは書込みアクセスから保護• コードは実行のみが可能• 書込み保護（WRP）• 2KBの粒度で定義した2つの領域を保護• 不要な書込みアクセスおよび消去から特定のコード領域を保護
15

読出し保護は、Flashメモリ、オプションバイト、内蔵SRAM、およびバックアップレジスタの内容を、デバッガによりリクエストされた読出しまたはSRAMまたはブートローダからブートされた後に実行されたプログラムによるソフトウェア読出しから保護することを目的としています。
Flashメモリからブートされた場合のみ、それらのメモリの内容の読出しが許可されます。
独自仕様コード保護は、Flashメモリの一部を実行のみとマークする方法です。この種のアクセス許可は、Cortex®-M0+に搭載されているメモリ保護ユニットではサポートされていないことに注意してください。
ユーザは、512バイトアドレスで整列された PCROP領域を2つ宣言できます。PCROP領域は、Flashメモリの一部のみを第三者の読出しから保護する必要がある場合に便利です。
書込み保護は、Flashメモリの一部が消去または再プログラムされないようにします。
15

Flashメモリの保護（2/2）

16

アプリケーションのニーズに従った柔軟なFlashメモリ保護• セキュリティ保護可能なメモリ領域• 有効な場合、セキュリティ保護可能なメモリ領域へのすべてのアクセス（フェッチ、読出し、プログラム、消去）は拒否され、バスエラーが生成される

SEC_PROT=0
セキュリティ保護可能メモリは未保護

デバッグ有効デバッグ無効オプション
バイト
ローディングセキュリティ保護可能メモリ
内部でのコード実行

SEC_PROT=1
セキュリティ保護可能メモリは保護

デバッグ有効

セキュリティ保護可能メモリ
外部でのコード実行t• コアデバッグ･アクセスの無効化• セキュリティ保護可能なメモリ領域でコードを実行する際にデバッグアクセスを一時的に無効化する

パワーアップ

DBG_SWEN←0

DBG_SWEN←1

SEC_PROT←1

ソフトウェア管理

セキュリティ保護可能なメモリ領域の主な目的は、望ましくないアクセスから Flashメモリの特定の領域を保護することです。これにより、イメージ認証を実行するために、セキュアキースト
レージ、セキュアブートなどのソフトウェアのセキュリティサービスを実装できます。
プロセッサがセキュリティ保護可能なメモリを抜けた後は、Flashメモリのこの部分にはアクセスできなくなります。
セキュリティ保護可能な領域は、デバイスのリセットによってのみ解除できます。
セキュリティ保護可能なメモリ領域のサイズは、2KBページに整列されます。
さらに、セキュリティ保護可能なメモリから実行されるコードは、デバッグアクセスを一時的に無効化できます。

16ユーザ･オプション･バイト•

17

ユーザ･オプション･バイトがロードされるタイミング：• 電源リセット後（POR/BOR、または STANDBY/SHUTDOWN の終了）
• Flash制御レジスタ（FLASH_CR）の OBL_LAUNCH ビットがセットされたとき
オプション

説明

BORR_LEV[1:0]、BORF_LEV[1:0]、
BOR_EN

ブラウンアウト･リセットの立ち上がり閾値レベル、立ち下がり閾値レベル、イ
ネーブル･ビットnRST_STOP、nRST_STDBY、nRST_SHDW

STOP/STANDBY/SHUTDOWNモード移行時のリセット生成

WWDG_SW、IDWG_SW
IWDG_STOP、IWDG_STDBY

ハードウェア／ソフトウェアによるウィンドウ型ウォッチドッグ／独立型ウォッチ
ドッグ
STOP/STANDBYモード時の独立型ウォッチドッグ･カウンタ停止の有無nBOOT0、nBOOT1
nBOOT_SEL

BOOT0ピンまたはオプション･ビットによるブート設定

RAM_PARITY_CHECKSRAMパリティ･チェック制御イネーブル

IRHEN、NRST_MODE

内部リセット･ホルダ機能とリセット･パッド設定

オプションバイトは、Cortex®-M0+を起動する前にシステムオンチップを初期設定するために使用します。サイズは128バイ
トです。
オプションバイトは、パワーリセット後またはFLASH_CRレジス
タの OBL_LAUNCHビットのセットによるリクエスト時に、自動的にロードされます。この機能は、デバイスをリセットしないで新しい設定を適用するために必要です。
このスライドとその後の2枚のスライドでは、オプションバイトのさまざまなフィールドについて説明します。

17

リセット･パッド関連のオプション･ビット• ビット29 IRHEN：内部リセットホルダー･イネーブル･ビット• 0：内部リセットは、NRSTピン上の単純なパルスとして伝播する• 1：内部リセットは、ローレベルとみなされるまでNRSTピンをローで駆動する• ビット 28：27 NRST_MODE[1:0]• 00：予約済み• 01：リセット入力のみ：ローレベルのNRSTピンによりシステム･リセットが生成され、内部リセットはNSRTピンには伝播しない• 10：GPIO：標準GPIOパッドの機能で、内部リセットのみ可能• 11：双方向リセット：NRSTピンが、リセット入出力モードで設定される（レガシー･モード）

18

ビット28は NRST ピンを、GPIO、リセット入力のみ、またはリセット入出力のいずれかとして設定します。
リセット入出力の場合、ビット29は出力ステージを、パルス発生回路またはローレベルとみなされるまでNRSTピンをローで駆動するローレベルドライバのどちらかとして設定します。これは、リセットラインに重要な容量性負荷がある場合に役立ちます。

18ユーザ･オプション･バイト（セキュリティ）
オプション

19

説明

RDP[7:0]

読出し保護レベル

PCROPA_STRT[8:0]
PCROPA_END[8:0]
PCROPB_STRT[8:0]
PCROPB_END[8:0]

PCROP領域A開始オフセット･アドレス
PCROP領域A終了オフセット･アドレス
PCROP領域B開始オフセット･アドレス
PCROP領域B終了オフセット･アドレス

PCROP_RDP

RDPレベルが下がると保存されるPCROP領域

WRP1A_STRT[7:0]
WRP1A_END[7:0]
WRP1B_STRT[7:0]
WRP1B_END[7:0]

書込み保護領域A開始オフセット･アドレス
書込み保護領域A終了オフセット･アドレス
書込み保護領域B開始オフセット･アドレス
書込み保護領域B終了オフセット･アドレス

SEC_SIZE

セキュリティ保護可能なメモリ領域のサイズ

BOOT_LOCK

ユーザ領域からのブートを強制する。全体消去によってのみ消去される

読出し保護レベルは、Flashメモリ全体の読出し保護を有効化します。
•••

レベル 0：保護なし
レベル 1：読出し保護
レベル 2：デバッグなし

レベル 0 からレベル 1、レベル 1 からレベル 0 （部分消去または全体消去を意味する）、レベル 0 からレベル 2、およびレベ
ル 1 からレベル 2 の遷移がサポートされています。
•••••

PCROPA_STRTとPCROPA_ENDは、512バイトで整列されている独自仕様コード読出し保護アドレス範囲Aを定義します。
PCROPB_STRTとPCROPB_ENDは、512バイトで整列されている独自仕様コード読出し保護アドレス範囲Bを定義します。
PCROP_RDPを使用して、RDP保護がレベル 1 からレベル 0 に変更された場合にPCROP領域を消去するかどうかを選択できます。
SEC_SIZEは、セキュリティ保護可能なメモリのサイズを定義します。
Boot_lockを使用して、他のブートオプションに関係なく、システムがメインFlashメモリからブートされるように強制できます。
19

ブート設定BOOT_LOCK
ビット

ブートモード設定
nBOOT1BOOT0nBOOT_SEL
ビット
ピンビット

nBOOT0ビット

20

選択したブート領域0x

00x

メインFlashメモリ

01

10x

システ･ムメモリ

00

10x

内蔵SRAM

0xx

1

1

メインFlashメモリ

01x

10

システム･メモリ

00x

10

内蔵SRAM

1xxxx

メインFlashメモリに固定• BOOT_LOCK はFlashメモリからのブートを強制• 他のブート･オプションに関係なく、メインFlashメモリからブートされるように強制できる• プログラムされているかどうかをチェックするためにFlashメモリ･レジスタに Emptyビットを追加

ブートメモリは、両方のオプションバイトとBOOT0ピンにより選択されます。スライドの表は、パラメータの組み合わせに従ってプロセッサがどのメモリでブートするかを示しています。
nBOOT_SELビットが1にセットされている場合、BOOT0ピンは無視されることに注意してください。 ブートメモリを選択するのはオプションバイトのみです。
オプションバイトで BOOT_LOCKビットが1にセットされている場合、Flashメモリからのブートのみがサポートされます。
オプションバイトローディングフェーズ中、すべてのオプションをロードした後で、Flash メモリインタフェースはメインメモリの先頭の位置がプログラムされているかどうかをチェックします。このチェックの結果をBoot 0とBoot 1の情報と組み合わせて、システムをどこからブートする必要があるかを判断します。これ
により、システムが、ユーザコードがプログラムされていないメ
イン Flashメモリ領域からブートすることを防ぎます。

20割込み（1/2）
割込みイベント

説明

操作終了

1 つ以上のFlashメモリ操作（プログラム／消去）が正常に完了したときに、ハードウェアによってセットされる

操作エラー

Flashメモリ操作（プログラム／消去）が正常に完了しなかったときに、ハードウェアによってセットされる

読出し保護エラー

読み出すアドレスがFlashの読出し保護領域に属する場合に、ハードウェアによってセットされる（PCROP保護）

書込み保護エラー

消去／プログラムするアドレスがFlashメモリの（WRP、PCROP、またはRDPレベル1によって）書込み保護された部分に属する場合、ハードウェアによってセットされる

サイズエラー

プログラムまたは高速プログラム･シーケンス中のアクセスのサイズが、バイトまたはハーフワードである場合にハードウェアによってセットされる。許可されているのはダブルワード･プログラミングのみ。

プログラミング･シーケンス･エラー

書き込むデータが「0x0000 0000」である場合を除き、プログラムする前に、プログラムするダブルワード･アドレスに「0xFFFF FFFF」以外の値が含まれる場合、ハードウェアによってセットされる

21

Flashメモリコントローラは、このスライドと次のスライドにリストされている多数の割込みソースをサポートしています。
操作が正常に終了した場合、割込みをアサートできます。
また、プログラム／消去操作中にエラーが発生した場合も割込みをアサートできます。
保護違反も割込みの原因になる可能性があります。
サイズエラーは、プログラムするデータがワード整列されていない場合に発生します。
プログラミングシーケンスエラーは、Flashメモリの対象位置を事前に消去しないでプログラム操作を試みた場合に発生します。

21

割込み（2/2）
割込みイベント

説明

プログラミング配置エラー

標準プログラミングでプログラムするデータをFlashメモリの同じダブルワード（64ビット）内に格納できない場合または高速プログラミング中にページが変更される場合にハードウェアでセットされる

プログラミング･シーケンス･エラー

Flashメモリの書込みまたは消去時に正しいシーケンスが満たされていない場合にセットされる

高速プログラミング･エラー中のデータ･ミス

MISSERRは、新しいデータが間に合わず存在しない場合にハードウェアによってセットされる

高速プログラミング･エラー

高速プログラミング･シーケンス（FSTPGによって有効化）がエラーにより割り込まれたときにハードウェアによってセットされる

22

プログラミング配置エラーは、標準プログラム操作を開始する前にダブルワード全体が提供されていない場合または高速プログラミング操作を開始する前に行全体が書き込まれていない場合に発生します。
データミスプログラミングエラーは、高速プログラミングシーケンス中にデータ書込みが間に合わない場合に発生します。

22

低消費電力モード（1/2）
SRAMからコードを実行している場合の消費電力の最適化• RUNまたはSLEEPの各モードでは、Flashメモリ･インタフェース･クロックをゲートでオフすることができる• Flashメモリ･クロックはリセットおよびクロック･コントローラ（RCC）で設定する• Flashメモリ･クロックはデフォルトで有効• Flashメモリは、STOPモード中にパワーダウンモードに設定できる

23

Flash メモリモジュールは、プロセッサが Flash メモリにアクセスする必要がない場合および低消費電力モードである場合にクロックゲーティングできます。
また、STOP モードでは、パワーゲーティングできます。

23

低消費電力モード（2/2）
モード

説明

Run

アクティブ
• SRAMからコードが実行されている場合、Flashメモリクロックを無効にできる

SLEEP

アクティブ
• ペリフェラル割込みによって、デバイスはSLEEPモードを終了する• SLEEPモード中は Flashメモリ･クロックを無効にできる

STOP

Flashメモリ･クロックはオフ• ペリフェラル･レジスタの内容は維持される• Flashメモリをパワーダウン･モードにすることができる

STANDBY

パワーダウン• Flashメモリ･インタフェースは、STANDBYモード終了後に再初期化する必要がある

SHUTDOWN

パワーダウン• Flashメモリ･インタフェースは、SHUTDOWNモード終了後に再初期化する必要がある
24Flashメモリモジュールは、次の低消費電力機能をサポートしています。
• クロックゲーティング• Flashメモリのパワーダウンモード• モジュール全体（Flashメモリとコントローラ）のパワーゲー
ティング
RUNモードとSLEEPモードでは、クロックゲーティングのみがサポートされています。
STOPでは、クロックはゲーティングされ、Flashメモリはパワーダウンモードに移行できます。
STANDBYとSHUTDOWNモードでは、Flashメモリモジュールのパワーは、Flashメモリとコントローラの両方でゲーティングされます。

24

STM32G0との主な違い• Flashメモリ･インタフェースは、STM32G0マイクロコントローラに実装されているものと似ている• 次の表に、STM32G0 Flashインタフェースとの主な違いを示す
STM32G0

STM32C0

16バイト

16バイト

OTPエリア1KB

1KB

高速プログラミング

はい

はい

PCROP +セキュリティ保護可能なメモリ

はい

はい

ECC補正

はい

いいえ

命令キャッシュ25

STM32C0 のFlashメモリインタフェースは、ECC保護が実装されていないことを除き、STM32G0に存在するFlashと同じ機能をサポートします。
キャッシュとプリフェッチバッファにより、遅延と消費量が減少します。
ワンタイムプログラミング（OTP）領域は、消去不可能なデータを保存するために使用されます。
高速プログラミングは、個別の8バイトのダブルワードではなく、256バイトの行をプログラムします。
PCROPは独自仕様コード保護の略で、Flashメモリからの実行のみを許可し、読出しや書込みは許可しないことでコードを保護します。
セキュリティ保護可能なメモリは、非セキュア領域から呼び出すことはできません。 通常、イメージ認証によるセキュアブートを実行するために使用されます。

25

関連ペリフェラル• 次のペリフェラルにリンクされている、ペリフェラルのトレーニングを参照• メモリ保護• システム設定コントローラ（SYSCFG）• リセットおよびクロック･コントローラ（RCC）• 電源コントローラ（PWR）• 割込み（NVIC）• システム保護26

Flash メモリモジュールは、次に示す他のモジュールと関係しています。
• メモリ保護• システム設定コントローラ（SYSCFG）• リセットおよびクロックコントローラ（RCC）• 電源コントローラ（PWR）• 割込み（NVIC）• システム保護26

参照• 詳細については、次の文書を参照してください。
• AN2606：STM32 マイクロコントローラ･システム･メモリ･ブート･モード - アプリケーションノート

27

詳細については、STM32 マイクロコントローラ･システムのメモ
リ･ブート･モードに関するアプリケーションノート AN2606 を参照してください。

27

Find out more at www.st.com© STMicroelectronics - All rights reserved.
ST logo is a trademark or a registered trademark of STMicroelectronics International NV or its affiliates in the EU and/or other countries.
For additional information about ST trademarks, please refer to www.st.com/trademarks.
All other product or service names are the property of their respective owners.

ありがとうございました。

28