STM32G0 - SYSCFG
システム設定コントローラ
レビジョン 1.0

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

1

概要

2

• STM32G0xxマイクロコントローラは一連の設定レジスタを備えている• システム設定コントローラの主な目的は次の通りである。
• I2C高速モードプラスの高駆動の有効化／無効化• USB Power Delivery インタフェースの設定• アナログスイッチ電圧ブースタの有効化／無効化• 赤外線タイマ（IRTIM）モジュールの設定• PA11とPA12のGPIOのPA9とPA10への再配置• アドレス0x0000_0000でアクセス可能なメモリの選択• 安全機能の有効化／無効化

STM32G0xx マイクロコントローラは、SYSCFG モジュールに一連の設定レジスタを備えています。
システム設定コントローラでは、以下の各機能を利用できます。
• I2C 高速モードプラスの高駆動の有効化／無効化• USB Power Delivery インタフェースの設定• アナログスイッチ電圧ブースタの有効化／無効化• 赤外線タイマ（IRTIM）モジュールの設定• PA11 と PA12 の GPIO の PA9 と PA10 への再配置• アドレス 0x0000_0000 でアクセス可能なメモリの選択• 安全機能の有効化／無効化

2

I2C I/O高速モード

3• STM32G0の2つのI2Cコントローラで3 つの速度をサポート
モード

ビットレート

追加の出力駆動 I/O

標準モード（Sm）≤ 100 Kbps

なし

高速モード（Fm）≤ 400 Kbps

なし

高速モードプラス（Fm+）≤ 1 Mbps

あり• SYSCFGモジュールによって追加の出力駆動を制御• I2Cが選択されたオルタネート機能でない場合でも有効にできる

STM32G0 に存在する 2 つの I2C コントローラは、次の 3 つの速度をサポートします。
• 標準モード、最大ビットレートは 100 Kbit/秒• 高速モード、最大ビットレートは 400 Kbit/秒• 高速モードプラス、最大ビットレートは 1 Mbit/秒。
高速モードプラスは高駆動機能を必要とします。これはSYSCFG モジュールで有効化されます。
高駆動はピンレベルで制御されるため、他のオルタネート機能でも使用可能です。

3I2C I/O高速モード
ピン

I2C オルタネート機能

4

I2C FM+ モードの有効化

PA9

I2C1_SCLSYSCFG_CFGR1[I2C_PA9_FMP]=1 OR SYSCFG_CFGR1[I2C1_FMP]=1

PA10

I2C1_SDASYSCFG_CFGR1[I2C_PA10_FMP]=1 OR SYSCFG_CFGR1[I2C1_FMP]=1

PB6

I2C1_SCLSYSCFG_CFGR1[I2C_PB6_FMP]=1 OR SYSCFG_CFGR1[I2C1_FMP]=1

PB7

I2C1_SDASYSCFG_CFGR1[I2C_PB7_FMP]=1 OR SYSCFG_CFGR1[I2C1_FMP]=1PB8

I2C1_SCLSYSCFG_CFGR1[I2C_PB8_FMP]=1 OR SYSCFG_CFGR1[I2C1_FMP]=1PB9

I2C1_SDASYSCFG_CFGR1[I2C_PB9_FMP]=1 OR SYSCFG_CFGR1[I2C1_FMP]=1PB10

I2C2_SCLSYSCFG_CFGR1[I2C2_FMP]=1

PB11

I2C2_SDASYSCFG_CFGR1[I2C2_FMP]=1

PB13

I2C2_SCLSYSCFG_CFGR1[I2C2_FMP]=1PB14

I2C2_SDASYSCFG_CFGR1[I2C2_FMP]=1

I2C1 ピンの高駆動機能は、I2C_PA9-10_FMP およびI2C_PB6-9_FMP ビットを介してピンごとに、またはI2C1_FMP ビットをセットすることによってグローバルに設定できます。
I2C2 ピンの高駆動機能は、I2C2_FMP ビットをセットすることによってグローバルに制御されます。

4

USB Power Deliveryインタフェース設定
UCPDx_CR[ANAMODE,ANASUBMODE]
アナログ PHY で選択された動作モード（ソース、シンク）に応じた初期化

5

SYSCFG_CFGR1[UCPDx_STROBE]←1

VDD
バッテリ切れ動作
 CPDx_DBCC1 を UCPDx_CC1 に接続
 CPDx_DBCC2 を UCPDx_CC2 に接続

MCU ブート

バッテリ切れ動作が必要ない
 CPDx_DBCC1 を UCPDx_CC1 に接続しない
 CPDx_DBCC2 を UCPDx_CC2 に接続しない

MCU ブート

アナログ PHY で選択された動作モードがアクティブt

アナログ PHY で選択された動作モードがアクティブt

USB Power Delivery インタフェースは、ブートプログラムの早い段階で設定する必要があります。
ここで、2 つのタイミング図を示します。これらの唯一の違いは、電力が到着する前の初期設定です。つまり、バッテリ切れ動作が必要かどうかです。
ブートプログラムは、UCPD 制御レジスタの ANAMODE
フィールドと ANASUBMODE フィールドを初期化して、UCPDインタフェースを設定します（通常はソースまたはシンクとして）。
ただし、この設定は、SYSCFG_CFGR1 レジスタのUCPDx_STROBE ビットがセットされている場合のみアクティブになります。

5

I/Oアナログ･スイッチ電圧ブースタ

6VDD
電圧ブースタI/O セル

SYSCFG_CFGR1[BOOSTEN]• 低 VDD電圧動作（2.4 V 未満など）でアナログ入力を使用する場合は、電圧ブースタをアクティブにすることを推奨。

STM32G0 は，アナログ入力が低 VDD 電圧で動作する場合に使用する電圧ブースタをサポートしています。
電圧ブースタをアクティブにするには、SYSCFG_CFGR1 レジ
スタの BOOSTEN ビットをセットします。

6

IRTIMモジュール設定

7• 赤外線タイマ（IRTIM）モジュールは、USARTおよびタイマソースを利用して変調エンベロープを生成する• SYSCFGモジュールはソース信号を選択するために使用される• また、出力インバータをアクティブにするためにも使用されるTIM17_CH1

IRTIM
TIM16_CH1

IR_OUT

USART1
USART4
SYSCFG_CFGR1 [IR_MOD]SYSCFG_CFGR1[IR_POL]

赤外線タイマ（IRTIM）ユニットには、USART または TIM16 のいずれかによって提供される変調エンベロープ信号が必要です。SYSCFG_CFGR1 レジスタの IR_MOD フィールドは、関連する入力マルチプレクサを制御します。
SYSCFG_CFGR1 レジスタの IR_POL ビットは、出力信号を反転するかどうかを選択します。

7

GPIOの再配置

8• PA12とPA11の2つのGPIOは、それぞれPA10とPA9に再配置できる。これにより、ピンがパッケージでネイティブに使用できない場合にそれらの機能にアクセスすることができる。
SYSCFG_CFGR1[PA11_PA12_RMP]
PA9 オルタネート機能PA10 オルタネート機能

PA9

PA10

PA11 オルタネート機能

PA11

PA12 オルタネート機能

PA12

UFQFPN28 パッケージに存在しないパッド

SYSCFG_CFGR1 レジスタの PA11_PA12_RMP ビットがセットされると、PA11 と PA12 のオルタネート機能が PA9 とPA10 のピンに再配置されます。
これは、ピン数の少ないパッケージで PA11 と PA12 のピンが使用できないときに、これらのオルタネート機能が必要な場合に役立ちます。

8

GPIOメモリ･マッピング

9• 3つのメモリをアドレス0x0000_0000にエイリアスできる• メインFlashメモリ• システムFlashメモリ• 内蔵SRAM

0x2000_0000

SRAM （36 KB）

0x1FFF_D800

システム Flash メモリ （8KB）

0x0800_0000

メイン Flash メモリ （128KB）

0x0000_0000

SYSCFG_CFGR1[MEM_MODE]=0bX0：メイン Flash メモリ=0b01：システム Flash メモリ=0b11：SRAM• デフォルト値は、ピン BOOT0、nBOOT1、nBOOT0、BOOT_SEL のオプションビットおよび BOOT_LOCK 制御ビットの状態によって異なります。

SYSCFG_CFGR1 レジスタの MEM_MODE フィールドは、アドレス 0 でアクセス可能なメモリを選択します。
メイン Flash メモリ、システム Flash メモリ、SRAM の 3 つのメモリをアドレス 0 にエイリアスできます。
このフィールドのデフォルト設定は、ブートピン、オプションバイト、および制御ビットに依存することに注意してください。

9

安全機能

10

• SYSCFG_CFGR2レジスタは、安全機能を制御する。
• SRAM_PEF は、SRAMパリティ･エラーが検出されたときにセットされる。
• 他の4つのビットは、以下のイベントが発生したときに TIM1/15/16/17ブレーク入力のアサートを有効／無効にするために使用される。
• SRAMパリティ･エラー• Flashメモリ ECCエラー• プログラム可能な電圧検出器の立ち上がりまたは立ち下がりの閾値を超えた場合• Cortex®-M0+ロックアップ-1 以上の優先度で障害またはスーパーバイザ･コールが発生した場合、Cortex-M0+ はロックアップ状態になる

SYSCFG_CFGR2 レジスタには、安全性と堅牢性にリンクされている制御およびステータスビットが含まれています。4 つの制御ビットは、特定のエラー検出イベントをタイマブレーク入力に送信します。これにより、アプリケーションのクラッシュ中に、タイマ出力を既知の状態にすることができます。一度プログラムされると、次のシステムリセットまで接続はロックされます。
これらの内部イベントとして、電源電圧検出器イベント、
Cortex-M0+ ロックアップ状態、SRAM パリティエラー、およびFlash ECC エラーが挙げられます。
SYSCFG_CFGR2 レジスタには、SRAM パリティエラーが検出されたときにセットされるフラグビットも含まれています。

10

割込みラインステータス･レジスタ

11• SYSCFGモジュールには専用の読出し専用レジスタが実装されており、各割込みラインに関連付けられたすべての保留中の割込みソースを1つのレジスタへ集める• これにより、どのペリフェラルで処理が必要かを1回の読出し操作でチェックできる• これらのレジスタの利点を説明するために、次のスライドではEXTI2およびEXTI3の割込みリクエストの管理について説明する。

SYSCFG モジュールは、32 個の割込みラインステータスレジスタをサポートしています。
これらのレジスタにより、ソフトウェアは、特定の割込みラインに関連付けられているすべての保留中の割込みソースを同じレジスタに集めることで、EXTI 割込みの原因を簡単に見つけることができます。
これらの割込みラインステータスレジスタの利点を説明するために、次のスライドでは EXTI2 および EXTI3 の割込みラインに焦点を当てます。

11

割込みステータス･レジスタ
EXTI イベントを生成する
ペリフェラル12

CORTEX®-M0+

SYSCFGSYSCFG_ITLINE2[RTC]
SYSCFG_ITLINE6[EXTI2]

RTC ユニット
SYSCFG_ITLINE2[TAMPER]

EXTI2

INT0

タンパおよびバックアップレジスタユニット

INT5

NVIC

INT31

SYSCFG_ITLINE3[FLASH_ECC]SYSCFG_ITLINE6[EXTI3]
Flash ユニット

SYSCFG_ITLINE3[FLASH_ITF]

EXTI3

図の左側は、EXTI2 と EXTI3 をアサートできるペリフェラル（それぞれ RTC／タンパと Flash メモリユニット）を表しています。
EXTI2 に関しては、RTC とタンパの割込みリクエストがまとめて論理和が取られます。
EXTI3 に関しては、Flash メモリ ECC と Flash インタフェースの割込みリクエストがまとめて論理和が取られます。
さらに、EXTI2 と EXTI3 の割込みリクエストもまとめて論理和が取られて、Cortex®-M0+ NVIC が受信する INT 番号 5 が生成されます。
INT5 割込みサービスルーチンでは、ソフトウェアは最初にSYSCFG_ITLINE6 レジスタを読み出して EXTI2 またはEXTI3 が保留中であるかどうかを確認し、次にSYSCFG_ITLINE2 または SYSCFG_ITLINE3 レジスタを読み出して割込みの正確な原因を確認する必要があります。

12

関連ペリフェラル

13• このペリフェラルにリンクされている次のトレーニングを参照：• I²C （Inter-Integrated Circuit）• USB Power Deliveryインタフェース（UCPD）• 赤外線タイマインタフェース（IRTIM）• 汎用入力／出力（GPIO）• Flashメモリ（Flash）• 割込み（NVIC、EXTI）• タイマ（TIM）

このトレーニングに加えて、I2C、UCPD、IRTIM、GPIO、Flashメモリ、割込みおよびタイマの各トレーニングを参照してくださ
い。

13

参照

14

• 詳細については、次のドキュメントを参照：• AN2606：STM32 microcontroller system memory boot mode

詳細については、アプリケーションノート AN2606：STM32
microcontroller system memory boot modeを参照してください。

14