STM32G4 – SYSCFG
システム設定コントローラ

1.0版

STM32G4システム設定コントローラのこのプレゼンテーションへようこそ。

1

概要

2

• STM32G4xxマイクロコントローラは、システム設定レジスタを備えている• システム設定コントローラの主な目的は以下の通り:
•••
•
•
•

メモリ領域の再マッピング
GPIO外部割込みの管理「堅牢性」機能の管理
CCM RAM書込み保護とソフトウェア消去の設定
FPU割込みI2C高速モード･プラスの設定

STM32G4マイクロコントローラは、SYSCFGモジュール内に配置されたシステム設定レジスタを備えています。
システム設定コントローラーは、以下の機能にアクセスできます。
• メモリ領域の再マップとアドレス0x0000_0000でアクセス可能なメモリの選択• GPIO外部割込みの管理• 「堅牢性」機能の管理• CCM RAM書込み保護とソフトウェア消去の設定• FPU割込み• I2C高速モードプラスの設定

2

STM32G474メモリ･マップ

30xFFFF_FFFF•

Flashメモリ:最大512キロバイト、デュアル･バンク••

FB_MODE = 0 SYSCFG_MEMRMP:••

バンク 1 @0x0800 0000（エイリアス0x0000 0000）

0xE010_0000
Cortex-M4
内部ペリフェラル
0xE000_0000

バンク 2 @0x0804 0000

0x1FFF_FFFF

FB_MODE = 1 SYSCFG_MEMRMP••

バンク 2 @0x0800 0000（エイリアス0x0000 0000）

0x1FFF_7830
ユーザ･オプション

0xB000_0000

バンク 1 @0x0804 0000

FMC & QUADSPI
レジスタ

システム･メモリ

QUADSPIバンク

CCM SRAM

SRAM:128キロバイト3パーツに分割:•••

SRAM1: 80キロバイト@2000 0000
SRAM2: 16キロバイト@0x2001 8000

0x9000_0000
FMCバンク0x6000_0000
ペリフェラル•D-codeとI-codeを通じてアクセス

Flash
0x0800_0000

SRAM1/SRAM2

予約済みコード/データ

ブート設定依存のメモリ

0x0008_0000

0x2000_0000

0x0000_0000

0x1000_0000
0x0808_0000

0x4000_0000

CCM SRAM: 32キロバイト@0x1000 0000

0x1FFF_0000
0x1000_8000

0xA000_0000•

0x1FFF_7800

0x0000_0000

ここでは、STM32G474マイクロコントローラのメモリマップについて説明します。
STM32G474とSTM32G431の違いは、このプレゼンテーションの後半で説明されています。
Flashメモリのサイズは、デュアルバンク構成で最大512キロバイトです。
FB_MODEビットは、バンク1と2のアドレスマッピングを決定し、アドレス0にエイリアスされるバンクを選択します。
SRAMの合計サイズは128キロバイトです。それは3つの部分に分かれています:• SRAM1サイズはアドレス0x2000_0000から80キロバイトです。
• SRAM2サイズはアドレス0x2001_8000から16キロバイトです。
• コア結合メモリ（CCM）SRAMサイズは、アドレス0x1000_0000から32キロバイトです。
SRAM1およびSRAM2メモリは、SRAM専用の通常のArm V7-Mメモリ空間に配置され、CCM SRAMはD-codeおよびI-code AHBバスを介してアクセスされます。
このアーキテクチャにより、CCM SRAMおよびSRAM1またはSRAM2メモリへの同時アクセスが可能になります。
3

メモリの再配置

4

パフォーマンス向上• アドレス0x0000_0000再配置オプション• メインFlashメモリ• システムFlashメモリ（ブートローダ）• FMCバンク1（NOR/PSRAMモード）• SRAM1• QUADSPI システム・バス・アクセスの代わりのI-Code/D-Codeアクセスによる性能向上• FB_MODE SYSCFG_MEMRMP• スワップFlashメモリ・バンク1&2

アドレス0でのメモリ再配置は、システムバスを使用する代わりに、専用のI-CODEバスアクセスとD-CODEバスアクセスにより、コード実行パフォーマンスを向上させます。
アドレス0のメモリリマップは、アドレス0でアクセス可能なメモリを選択します。
メインのFlashメモリ、システムFlashメモリ、FMCバンク1、SRAM1、またはQUADSPIのいずれかです。
FMCバンク1は、外部のNOR FlashメモリまたはPSRAMメモリをマッピングします。
システム構成再マップレジスタのFB_MODEビットでは、Flashメモ
リバンク1と2の間でスワップが可能です。

4

STM32G474xバス･マトリクス
ICODE
バス

DCODE SYSTEM
バス
バス

DMA1

DMA2
再マップされた場合
デフォルト

アクセラレータ

FPU付Cortex®M45

Flash512KB
デュアル･バンクSRAM1
CCM SRAMSRAM2
AHB1 APBペリフェラル

AHB/APBブリッジ
AHB/APBブリッジ

APB1ペリフェラル
APB2ペリフェラル

AHB2ペリフェラル（GPIO、A/Dコンバータ、D/Aコンバータ、AES、RNG）
QUADSPI
FMC
バスマトリクス

STM32G4バスマトリクスを示しています。
バスマスタは最上部に示され、その3つのAHBマスタインタフェースICODE、D-CODE、システムと2つのDMAコントローラを備えたCortex-M4コ
アがあり
バススレーブは、内部および外部のメモリとペリフェラルが接続されています。
Flashメモリはアクセラレータを介して読み取られます。
Cortex-M4コアがCODEまたはDATAアドレス範囲内のデータにアクセスする場合、D-CODEバスが使用されます。
Cortex-M4コアがCODEまたはDATAアドレス範囲内の命令にアクセスする
場合、I-CODEバスが使用されます。
SRAM1はデフォルトでシステム・バスを介してアクセスされ、パフォーマンスを向上させるためにアドレス0で再配置されるときに、I-CODEバスおよびD-CODEバスを介してアクセスできます。
CCM SRAMメモリは常にIバスとDバスを介してアクセスされ、待機時間が0でコードの実行が可能です。
Quad-SPIおよびFMCバンクはデフォルトでシステムバスを通じて読み取りおよび実行でき、またアドレス0で再配置してパフォーマンスを向上させることができます。
2つのDMAコントローラは、すべてのメモリとペリフェラルにアクセスできます。
5パフォーマンスFlashメモリから実行

CoreMark/MHz@150MHz@170MHz

6

SRAMから実行 ARTオン I-Cacheオン
 D-Cacheオン
 プリフェッチオン

 ARTオン I-Cacheオン
 D-Cacheオン
 プリフェッチオフ

 ARTオフ SRAM1
上にコードとデータ

 CCM SRAM
上にコード
 SRAM1上にデータデュアルバンク

シングルバンク

デュアルバンク

シングルバンク

デュアルバンク

シングルバンク

3.26

3.36

3.23

3.32

1.05

1.47

2.37

3.42

3.23

3.35

3.20

3.31

0.94

1.36

2.37

3.42

この表では、EEMBC CoreMarkベンチマークを実行しながら、150MHzと170MHzでのコード実行パフォーマンスの比較です。
CCM SRAMでコードを実行し、データをSRAM1に配置すると、最大のパフォーマンスが得られます。SRAM1がアドレス0で再配置された場合、SRAM1のコードとSRAM2のデータを使用して最大のパフォーマンスに到達することもできます。
Flashメモリから実行すると、ARTアクセラレータが有効になるとCoreMarkの最大パフォーマンスに達し、170MHzで8ウェイト、150MHzで7ウェイト必要とするFlashアクセス時間のためにパフォーマンスが低下することはほとんどありません。
プリフェッチバッファを有効にすると、シングルバンクモードの場合は3.36CoreMark / MHzというスコアがやや高くなります。

6

STM32G431デバイスとの違い

7• 多層AHBマトリクス• QUADSPIスレーブ無し• FMCスレーブ無し• SRAMサイズ• SRAM1:

16キロバイト、SRAM1全体でパリティ・チェック• SRAM2:• CCM SRAM:

6キロバイト
10キロバイト、CCM SRAM全体でパリティ・チェック• メモリマッピング• CCM SRAMはアドレス0x2000_5800でエイリアスされ、SRAM1/SRAM2による連続アドレス空間が可能• Flash• シングル・バンクFlashSTM32G431とSTM32G474マイクロコントローラの主な違いを示しています。
STM32G431ラインには、クアッドSPIおよびFMCユニットは含みません。
STM32G431ラインは、16キロバイトSRAM1と10キロバイトCCM
SRAMの両方がパリティをサポートし、6キロバイトSRAM2というSRAMメモリが小さくなっています。
マッピングに関しては、CCM SRAMはアドレス0x2000_5800でエイリアスされ、SRAM1およびSRAM2メモリを持つ連続RAMアドレス範囲が可能になります。
最後に、STM32G431はシングルのフラッシュメモリバンクを持っています。

7

ブートモード

8

ブートモード選択
ブートモード･エリアの選択

BOOT_LOCKビットnBOOT1ビット

BOOT0ピンnSWBOOT0ビット

nBOOT0ビット

0x

00x

メインFlashメモリ

01

10x

システム･メモリ

00

10x

内蔵SRAM

0xx

1

1

メインFlashメモリ

01x

10

システム･メモリ

00x

1

0

1xxxx

内蔵SRAM
メインFlashメモリ（強制）• 他のオプションビットに関係なくBOOT_LOCKビットはFlashメモリからブート• SYSCFG_MEMRMP[MEM_MODE]フィールドは、ソフトウェアによって物理的な再配置を選択するために使用され、BOOTピンとオプションビット設定をバイパスする• リセット後これらのビットはBOOT0ピン（またはオプションビットnSWBOOT0）とBOOT1オプションビットで選択された値を取る

BOOT0ピンまたはnBOOT0ビット（nSWBOOT0ビットがクリアされている場合）とnBOOT1ビットによって選択される3つのブートモードがあります。
BOOT0ピンがローレベルになると、STM32G4マイクロコントロー
ラはユーザーフラッシュメモリから起動します。
BOOT0ピンがハイレベルになると、nBOOT1ビットによってブートモードが決まります。nBoot1が1の場合、ブートは、ST独自のブートコードを含むシステムメモリから実行されます。
もう1つのオプションは、SRAM1メモリ領域からの起動です。
BOOT_LOCKビットが1の場合、ブートはメインFlashメモリから強制的に実行されます。
ソフトウェアは、SYSCFG_MEMRPレジスタのMEM_MODEフィールドをプログラミングすることにより、アドレス0に表示されるメモリを動的に選択できます。
このフィールドのデフォルト値は、ブート・ピンの状態および関連するオプション・バイト値、BOOT_LOCKおよびnSWBOOT0によって異なります。

8

ブートローダ
プロトコル

9I/Oとコメント

USART

USART1 PA9/PA10ピン
USART2 PA2/PA3ピン
USART3 PC10/PC11ピン

USB

USB DFUインタフェース PA11/PA12ピン

SPI

SPI1 PA4/PA5/PA6/PA7ピン
SPI2 PB12/PB13/PB14/PB15ピン

I2C

I2C2 PC4/PA8ピン
I2C3 PC8/PC9ピン
I2C4 PC6/PC7ピン

オンチップのブートローダを使用すると、ペリフェラルのシリアル通信を介してSTM32G4にダウンロードされたイメージでFlashメモ
リをプログラムできます。
サポートされているプロトコルは、USART、USB、CAN、SPI、およびI²Cです。

9CCM SRAM機能

10

パフォーマンス、整合性、セーフティ（Class B、SIL）• D-codeとI-codeを介したアクセスを持つ32キロバイト
CCM SRAM:• 再配置を使用せず、コード実行を最大パフォーマンスに• HWパリティチェック:ワードあたり4ビット• SRAM_PEの有効 ユーザ・オプション・バイト

CortexDCODEバス
8ビット®

M
4NMI

• パリティ・エラーでNMIの生成• オプションのブレイク・トゥ・タイマ、システム障害時のHRTIM停止• デフォルトで無効• パリティ・チェックはSRAM1の最初の32キロバイトにも実装

8ビット

ICODEバス

CCMSRAM
ctlr
8ビット

タイマ

ブレイク
8ビット

データバイ
ト0
パリティ
ビット0
データバイ
ト1
パリティ
ビット1
データバイ
ト2
パリティ
ビット2
データバイ
ト3
パリティ
ビット3

CCM SRAMの32キロバイトは、パフォーマンス、整合性、セーフティに特に適しています。
CCM SRAMは、D-CODEバスとI-CODEバスを介してアクセスされ、メモリの再配置せずにゼロウェイトでのコード実行が可能になります。
CCM SRAMはパリティチェックをサポートします。データバスの幅は32ビットで、たとえばクラスBまたはSIL規格によってメモリの堅牢性を高めるために、4ビットがパリティチェック（1 ビット/バイト）に使用できます。クラスBおよびSILは機能安全です。クラスBは家電製品用、SILは安全整合性レベルです。
パリティビットはSRAMに書き込むときに計算され、格納されます。
次に、読み取り時に自動的にチェックされます。少なくとも1ビットで障害が発生すると、ノンマスカブル割り込み（NMI）が生成されます。
同じエラーは、タイマのブレーク入力とHRTIMシステム障害入力にもリンクできます。
パリティチェックは既定で無効になっています。
SRAM1の下位32キロバイトもパリティ生成と検査をサポートします。

10

CCM SRAM機能

11

セキュリティで保護されたSRAM• 1キロバイト単位の書込み保護機能• SYSCFG_SWPR書き込み保護レジスタでプログラム可能• 32ビット、キロバイトあたり1ビット• RDPによる読出し/書込み保護
 RDPがレベル1からレベル0に変化した場合に消去• ソフトウェア・リセットとシステム・リセット時のハードウェア・リセット（オプション）• SYSCFG_SCSRのレジスタCCMERビットにセットされると消去• ユーザーオプションのバイトのCCMSRAM_RSTを用いたシステム・リセットで消去

CCM SRAMは、セキュアなアプリケーションにも適しています。
CCM SRAMは1KB単位で書込み保護可能です。
また、RDPオプション・バイトによって読出し保護を行うこともできます。保護時にはCCM SRAM、およびFlashメインメモリとバックアップレジスタは、デバッグモードまたはブートRAMまたはブートローダからコードが実行されている場合に、完全にアクセスできません。
読み出し保護がレベル1からレベル0に変更されると、CCM
SRAMは消去されます。
CCM SRAMは、CCM SRAMシステム設定コントローラおよびス
テータスレジスタにCCMERビットを設定することにより、ソフトウェアによって消去できます。
CCM SRAMは、ユーザオプションバイトのCCMSRAM_RSTオプションビットに応じて、システムリセットを使用して消去することもできます。

11

SYSCFGのその他の機能

12

安全性と堅牢性• 設定レジスタ2の安全性と堅牢性の機能
SYSCFG_CFGR2フィールド
SPF（SRAMパリティ・フラグ）
ECCL（ECCロック）PVDL（PVDロック）
SPL（SRAM1とCCMパリティ・ロック）
CLL（Cortex®-M4ロックアップ）

説明

SRAMおよびCCM SRAMパリティ・エラーが検出された場合にセット=0:タイマの中断またはHRTIMの障害はない=1:ECC、PVD、SRAMパリティ、またはプロセッサのロックアップ状態が原因でTIM1/8/15/16/17/20ブレーク入力とHRTIMシステム障害入力のアサーションが発生• パワーエレクトロニクスの制御に使用するタイマは、STM32G4マイクロコントローラで検出された回復不能な障害の場合に安全な状態に設定可能

システム設定レジスタ2には、CCM SRAMパリティエラーフラグなどの安全性と堅牢性に関連するコントロールビットとステータスビット、およびエラー検出イベントをタイマのブレーク入力に送るコントロールビットが含まれています。
これにより、アプリケーションのクラッシュ時にタイマ出力を既知の状態に配置できます。プログラムが完了すると、次のシステムがリセットされるまで、接続はロックされます。これらの内部イベントには、Flashエラーコード修正イベント、電源電圧検出器イベント、SRAM1およびCCM RAMパリティエラーイベント、およびCortex M4ハードフォールトが含まれます。

12浮動小数点ユニット割込み

13Cortex®-M4

FPSCR[IXC]SYSCFG_CFGR1[FPU_IE5]
FPSCR[IDC]SYSCFG_CFGR1[FPU_IE4]

FPSCR[OFC]SYSCFG_CFGR1[FPU_IE3]
FPSCR[UFC]SYSCFG_CFGR1[FPU_IE2]
FPSCR[DZC]SYSCFG_CFGR1[FPU_IE1]
FPSCR[IOC]SYSCFG_CFGR1[FPU_IE0]&&&&&&

NVIC
Periph0
Periph1
PeriphN-1

Cortex-M4コアに存在する浮動小数点ユニット（FPU）は、FPv4アーキテクチャに従って、各命令に必要なFPSCRレジスタの累積例外ステータスフラグを設定します。
FPUはユーザモードトラップをサポートしません。この例外は、
FPSCRのゼロ読み取りビットを有効にし、書き込みは無視されます。
このプロセッサーには、累積例外フラグの1つの状況をそれぞれ反映する6つの出力ピン（IXC、FC、OFC、DZC、IDC、IOC）もあります。
SYSCFG_CFGR1レジスタ内の対応するイネーブルビットが設定されている場合、フラグが設定されると割り込みが要求されます。
割り込みサービスルーチンは、どのフラグが設定されているかを決定します。

13

I2C I/O高速モード

14• STM32G4の4つのI2Cコントローラは3つの速度をサポート
モード

ビットレート

20mA出力ドライブI/O

標準モード（Sm）≤100キロビット/秒

No

高速モード（Fm）≤400キロビット/秒

No

高速モードプラス（Fm+）≤1メガビット/秒

Yes• エクストラハイドライブはSYSCFGモジュールによって制御される• I2Cが選択されていない他の機能でも有効にすることが可能

STM32G4マイクロコントローラに組み込まれた4つのI2Cコント
ローラは、3つの速度をサポートします。
• 標準モード、最大ビットレートは100キロビット/秒• 高速モード、最大ビットレートは400キロビット/秒• 高速モードプラス、最大ビットレートは1メガビット/秒
高速モードプラスは、SYSCFGモジュールで有効にされ、かつ高いドライブ機能を必要とします。
ハイドライブはピンレベルで制御されるため、他の代替機能でも使用できます。

14

I2C I/O高速モード
ピン

I2C代替え機能

PA13、PA15、PB8

I2C1_SCL

PA14、PB7、PB9

I2C1_SDA

PA9、PC4、PF6

I2C2_SCL

PA8、PF0I2C2_SDA

PA8、PC8、PF3、PG7

I2C3_SCL

PB5、PC9、PC11、PF4、PG8

I2C3_SDA

PA13、PC6、PF14、PG3

I2C4_SCL

PB7、PC7、PF15、PG4

I2C4_SDA

15

I2C FM+モード･イネーブル
SYSCFG_CFGR1[I2C1_FMP]=1

SYSCFG_CFGR1[I2C2_FMP]=1

SYSCFG_CFGR1[I2C3_FMP]=1

SYSCFG_CFGR1[I2C4_FMP]=1ピン代替機能FM+モード･イネーブル

PB6

TIM16_CH1N、TIM4_CH1、TIM8_CH1、TIM8_ETR、TIM8_BKIN2、USART1_TX、COMP4_OUT、CAN2_TX、LPTIM1_ETR、HRTIM_SCIN、HRTIM_EEV4、SAI_FS_B、EVENTOUT、UCPD_CC1

SYSCFG_CFGR1[I2C_PB6_FMP]=1

PB7

TIM17_CH1N、TIM4_CH2、TIM8_BKIN、TIM3_CH4、I2C4_SDA、I2C1_SDA、USART1_RX、COMP3_OUT、CAN2_TXFD、LPTIM1_IN2、FMC_NL、HRTIM_EEV3、UART4_CTS、EVENTOUT、PVD_IN

SYSCFG_CFGR1[I2C_PB7_FMP]=1

PB8

TIM16_CH1、TIM4_CH3、SAI_CK1、I2C1_SCL、USART3_RX、COMP1_OUT、CAN1_RX、TIM8_CH2、TIM1_BKIN、HRTIM_EEV8、SAI_MCLK_A 、EVENTOUTSYSCFG_CFGR1[I2C_PB8_FMP]=1

PB9

TIM17_CH1、TIM4_CH4、SAI_D2、I2C1_SDA、IR_OUT、USART3_TX、
COMP2_OUT、CAN1_TX、TIM8_CH3、TIM1_CH3N、HRTIM_EEV5、SAI_FS_A、EVENTOUTSYSCFG_CFGR1[I2C_PB9_FMP]=1

各I2Cコントローラは、SYSCFG_CFGR1レジスタに高速モードとドライブ許容モードを有効にする制御ビットを持っています。
各ピンPB6、PB7、PB8、PB9には、選択されたペリフェラルに依存せず、高速モードプラス向けのドライブ能力をアクティブにする独自のI2C_PB_FMP制御ビットを持っています。
GPIOピンでFM+モードがアクティブ化されると、GPIOx_OSPEEDR
レジスタにプログラムされたGPIOの速度設定は無視されます。
場合によっては、FM+モードをアクティブ化する方法が2つあります。たとえば、I2C1_FMPまたはI2C_PB8_FMPビットがSYSCFG_CFGR1レジスタ内の1に設定されている場合、PB8ピン
はFM+をサポートI2C1_SCLとして設定されます。

15

GPIOアナログスイッチ
VDD

VDDA-> 2.4 V> 2.4 V< 2.4 V< 2.4 V< 2.4 VBOOSTEN

16

ANASWVDD0 I/OアナログスイッチはVDDA電圧で供給
1
 I/Oアナログスイッチは専用の電圧ブースタ（VDDによって供給）によって供給される

0
 VDDAが提供するI/Oアナログスイッチ
1
 VDDが提供するI/Oアナログスイッチ
0 ブースタが提供するI/Oアナログスイッチ

VDD
ブースター

I/Oアナログスイッチ電源

VDDA

SYSCFG_CFGR1レジスタの2ビットBOOSTENとANASWVDDは、I/Oアナログスイッチの電源を選択するために使用されます。
これらは、VDDとVDDAの電源の電圧に応じて初期化する必要があります。
VDDA電圧が2.4Vより大きい場合、I/OアナログスイッチはVDDAによって電源を供給する必要があります。
VDDA電圧が2.4Vより低く、VDDが2.4Vより高い場合、I/Oアナロ
グスイッチはVDDによって電力を与えられなくてはいけません。
VDDとVDDAの両方の電圧が2.4Vより低い場合、I/Oアナログス
イッチはVDDブースターの出力によって電源を供給されます。

16GPIOマルチプレクサはSYSCFGからEXTIに変更
PA0

PA1

PB0

PB1

PB15

PC0

PC1

PC15

PD0
PE0
PF0
PG0
予約済み

PA15

PD1
EXTI0

PE1
PF1
PG1
予約済み

17

PD15
EXTI1

PE15

EXTI15

PF15
予約済み
予約済み

予約済み

予約済み

予約済み

EXTI_EXTICR1[EXTI0]

EXTI_EXTICR1[EXTI1]

EXTI_EXTICR4[EXTI15]• 異なるポートに同じ番号を持つ2つ以上のGPIOパッドは、EXTI構成可能イベ
ントと同時に選択できない

STM32G4マイクロコントローラには7つのIOポートがあり、ポートA
からFは16ピン幅のポート、ポートGは11ピン幅のポートです。
GPIOポートに関連する16のEXTI構成可能イベントのそれぞれは独立したマルチプレクサを持っています。
EXTIマルチプレクサ出力は、EXTI_IMRおよびEXTI_EMRレジスタで定義されたマスクとは別に使用できます。

17

参照

18

• 詳細は、以下を参照してください。
• STM32G4マイクロコントローラ･リファレンス･マニュアル• このペリフェラルに関連するペリフェラル･トレーニング• 拡張割り込みおよびイベント・コントローラ（EXTI）• Arm Cortex®-M4コア（CM4）• メモリ保護（MEMPROTECT）• タイマ（TIM）• 高分解能タイマ（HRTIM）

システム設定モジュールの詳細については、STM32G4マイクロコントローラリファレンスマニュアルを参照してください。
必要に応じて、次のトレーニングも参照してください。
• 拡張割り込みおよびイベント・コントローラ• アームコルテックス-M4コア• タイマ• 高分解能タイマ

18