STM32G4 - SPI
シリアル･ペリフェラル･インタフェース

1.0版

こんにちは。STM32シリアルペリフェラルインタフェースのプレゼンテーションへようこそ。

1

概要

2

• シンプルなシリアル通信インタフェース• 詳細な設定が可能• 標準同期プロトコルをサポート

マスタ
マイクロコントローラ

スレーブ

スレーブ

デバイス1

デバイス2

アプリケーション側の利点• インタフェースに必要なピンは数本だけ• 外部コンポーネント/デバイスをSPIインタフェースにシンプルに統合

内蔵されている標準ペリフェラルであるインタフェースSPIは、シンプルな通信インタフェースを提供して、マイクロコントローラと外部デバイスの通信を可能にします。このインタフェースは詳細な設定が可能であり、多くの標準プロトコルをサポートします。
アプリケーションは数本のピンしか必要としない、コンポーネントへのシンプルな直接接続を利用できます。SPIは詳細な設定が可能なため、多くのデバイスを既存のプロジェクトに容易に対応させることができます。

2

主な機能

3

• 動作モード• マスタまたはスレーブ（マルチマスタ＆マルチスレーブ･サポート）• 全二重、シンプレックス、または半二重• モトローラおよびTI標準をサポート• 最大fPCLK/2の動作• 少なくとも二線インタフェース（スレーブ選択管理オプション）• 設定可能なデータおよびクロック・フォーマット
• プロトコル・レベルで追加のサポート（TxおよびRx FIFO、DMA、CRC）• 幅広いイベント・フラグと割込み機能

STM32 SPIは、さまさまな動作モードを備え、このプレゼンテーションで詳しく説明します。
通信速度は内部バス周波数の半分を超えることはできず、単方向でクロック信号によって同期されるシリアルデータフローを提供するには、少なくとも二線が必要です。
オプションのハードウェアスレーブ選択制御信号を追加できます。
データサイズと送信シフトオーダーを設定可能であり、クロック信号のパリティと位相も設定可能です。
プロトコルレベルで、ユーザは特定のデータバッファを使用でき、オプションの自動巡回冗長検査（CRC）計算と、DMAコントローラ経由の転送を使用できます。
割込み要求を生成できる幅広いSPIイベントがあります。

3

ブロック図4

APBアドレスとデータバス

SPI_DR読出し
RxFIFO
4x8ビットMOSI
CRC
コントローラShift register
シフトレジスタMISO
TxFIFO
4x8ビットSPI_DR書込みボーレート・ジェネレータ

SCK 2-256
マスタ: クローズ
スレーブ: オープン

NSS
(スレーブ選択)

0

SPI_CR1[SSI]

PCLK

通信
コントローラ

IRQ
RxDMA
TxDMA
PCLK

スレーブ選択マネージャ(ソフトウェアまたはハードウェア別)

1

SPI_CR1[SSM]

単純化したSPIブロック図は、基本的な制御メカニズムと機能を示しています。SPIペリフェラルに関連付けられた4つのI/O信号があります。データはすべて、特定のインタフェースを介して受信および送信バッファを通過します。
データは、DMA機能を備えた2つの32ビット組み込みRxおよびTxのFIFOに一時的に格納されます。
スレーブ選択信号は、マスタとスレーブの両方のハードウェアまたはソフトウェアによって管理され、マスタ/スレーブ操作の動的な変更を可能にします。
SPIコントローラは、信頼性の高い通信のためのハードウェア巡回冗長検査（CRC）機能をサポートします。CRC値は、送信モードで最後のバイトとして送信することができ、最後に受信されたバ
イトで自動CRCエラーチェックが行われます。

4SPIノードの相互接続

5

さまざまなマスタ-スレーブ相互接続をサポート• マスタは常にクロックを供給し、すべてのトラフィックを制御（通信のスレーブを選択）• データは両方向で並行して交換可能

最大ビットのRxシフトレジスタ
最大16ビットのTxシフトレジスタ

MISO

MOSI

最大16ビットのTxシフトレジスタ
最大16ビットのRxシフトレジスタ

SCK
クロックジェネレータ

マスタ

NSS

スレーブ• 全二重モード（双方向）では、マスタとスレーブの両方が同時にデータを送受信

SPIマスタは、常にバスのトラフィックを制御し、SCKラインを通じて専用スレーブにクロック信号を供給します。マスタはオプションのスレーブ選択またはNSS信号を通じて、通信先のスレーブを選択できます。専用のシフトレジスタに格納されたデータは、MOSI（Master Output, Slave Input）およびMISO（Master Input, SlaveOutput）データラインを通じてマスタとスレーブ間で同期して交換できます。全二重モードでは、両方のデータラインが使用され、同期データは同時に両方向に流れます。

5

SPIノードの相互接続

6

さまざまなマスタ-スレーブ相互接続をサポート• シンプレックス・モード（単方向）では、1つのノードがトランスミッタのとき、もう1つはレシーバ

最大16ビットのRxシフトレジスタ
最大16ビットのTxシフトレジスタ

MISO

MOSI

最大16ビットのTxシフトレジスタ

最大16ビットのRxシフトレジスタ

最大16ビットのRxシフトレジスタ

最大16ビットのTxシフトレジスタ

SCK

MOSI

最大16ビットのTxシフトレジスタ
最大16ビットのRxシフトレジスタ

SCK

クロックジェネレータ

マスタMISO

クロックジェネレータ

NSS

スレーブ

マスタ

NSS

スレーブ

シンプレックスモードでは、1つのノードがデータを送信するとき、もう1つはデータを受信します。
データは一方向にのみ流れます。
通信方向に応じて、1つのデータラインのみが使用されます。
使用されていないSPIピンは、他の目的に使用できます。

6

SPIノードの相互接続

7

さまざまなマスタ-スレーブ相互接続をサポート• 半二重モード（準双方向）では、マスタとスレーブの両方がデータの送信と受信を同時に交互に実行• ノードは単一のコモンデータ・ラインを共有

MISO

最大16ビットのTxシフトレジスタ

MOSI

最大16ビットのTxシフトレジスタ

R

最大16ビットのRxシフトレジスタ

最大16ビットのRxシフトレジスタ

SCK
クロックジェネレータ

マスタNSS

スレーブ

半二重モードは前の2つのモードを統合したものであり、データ交換用の1つのラインを共有し、データは一度に1つの方向に流れます。このモードでは、マスタMOSIピンとスレーブMISOピンの間の交差接続があります。マスタとスレーブは、共通のデータラインがあるとき、トランスミッタの役割とトレシーバの役割を同時に交代する必要があります。半二重データラインには、シリアル抵抗器を追加するのが一般的です。マスタノードとスレーブノードは通常、同期されないため、一時的な短絡接続の可能性があり、これを防止するためです。

7

SPIノードの相互接続

8

マルチスレーブ・ネット・トポロジのサポート• マルチスレーブ：スタートポロジ• マスタはデータの書込み／読取り時に1つのスレーブノードを選択• 個別のスレーブ選択信号（GPIOピンでシミュレート）が必要

最大16ビットのRxシフトレジスタ
最大16ビットのTxシフトレジスタ

MISO

MISO

MOSI

MOSI

SCK

SCK

GPIO

NSS

スレーブMISO

最大16ビットのTxシフトレジスタ

MOSI

最大16ビットのRxシフトレジスタ

最大16ビットのTxシフトレジスタ
最大16ビットのRxシフトレジスタ

クロック・ジェネレータ

• スレーブノードは異なるクロックおよびデータ・フォーマットを持つことが可能

GPIO

GPIO

SCK

マスタ

NSS

スレーブ

次のスレーブへ

SPIネットワークが複数のスレーブを含むときには、一般にスタートポロジが使用されます。マスタは一度に1つのスレーブと通信します。このトポロジでは、マスタからのスレーブ選択信号を各スレーブノードに提供する必要があるため、マスタは専用のGPIOピンを介して通信するスレーブを選択できます。複数のスレーブノードが共通の設定を持っていない場合でも、個別のスレーブ選択信号（NSS）により、SPIデータおよびクロックフォーマットはスレーブごとに適応できます。

8SPIノードの相互接続

9

マルチスレーブ・ネット・トポロジのサポート
次のスレーブへ• マルチスレーブ：サーキュラ・トポロジ（デイジー・チェーン）

MOSI

MISO• データはすべてのノードを循環

SCK• すべてのノードが共通のデータおよびクロック・フォーマットをサポートしなければならない

最大16ビットのTxシフトレジスタ
最大16ビットのRxシフトレジスタ

NSS

スレーブ

最大16ビットのRxシフトレジスタ

MISO

MOSI

最大16ビットのTxシフトレジスタ

最大16ビットのTxシフトレジスタ

MOSI

MISO

最大16ビットのRxシフトレジスタ

SCK

SCK

NSS

NSS

クロック・ジェネレータ

マスタ

内部
データ転送

スレーブ

もう1つのマルチスレーブ構成は、サーキュラトポロジです。ここでは、すべてのノードの入出力が、閉じたシリアルチェーンで接続されます。通信が同時に発生すると、すべてのノードについて共通のスレーブ選択信号が使用されます。すべてのノードが同じデータおよびクロックフォーマット構成をサポートする必要があります。
マイクロコントローラSPIノードは一般に個別の内部送信および受信シフトレジスタを使用するため、それらの間で転送されるデータはソフトウェアによってサーキュラモードで処理されなければなりません。
マスタノードは、内部データ転送を正確にペース設定して、他の外部データ転送と同期し続ける必要があります。

9

SPIノードの相互接続

10

マルチマスタ・トポロジのサポート• マルチマスタ：マスタ機能を持つ
2つのノード• ノードはデフォルトではスレーブ・モード• ノードは自身をアクティブ・マスタに切り替えて、バスの制御を取り、通信セッションを開始

最大16ビットのTxシフトレジスタ

MOSI

最大16ビットのTxシフトレジスタ

最大16ビットのRxシフトレジスタ

SCK
クロック・ジェネレータ

• スレーブ選択用のピンは、潜在的なバス競合を検出するための入力として使用• マスタ・ノードはスレーブ・モードに戻って、通信セッションを終了

MISO

最大16ビットのRxシフトレジスタ

マスタ

クロック・ジェネレータGPIONSS

NSS

GPIO

マスタ

SPIネットワークは、マルチマスタ環境で動作できます。このモードは、2つのマスタノードを排他的に接続するために使用されます。
いずれかのノードがアクティブでないときには、デフォルトではスレーブモードになります。1つのノードがバスの制御を取りたいときには、自身をマスタモードに切り替えて、GPIOピンを介して、もう1つのノードにスレーブ選択信号をアサートします。両方のスレーブ選択NSSピンは、ノード間の潜在的なバス衝突を検出するためのハードウェア入力として機能します。SPIバスを制御できるのは一度に1つのノードだけだからです。セッションが完了すると、アクティブノードのマスタはスレーブ選択信号を解放して、パッシブスレーブモードに戻り、次のセッション開始を待ちます。

10

データフレーム・フォーマット

11

完全にプログラム可能な柔軟なフォーマット

• データフレームのサイズ

CPHA=0CPHA=1• 4～最大16ビット
CPOL=0• ビットのシフトオーダ

SCK
CPOL=1• MSBまたはLSBファースト• クロック設定（モード0～3）• アイドル時に低または高極性• 奇数または偶数エッジでサンプリング

CPOL=0SCK
CPOL=1

MOSI

MOSI

MISO

MISO

NSS

NSS

データフォーマットのセットアップに使用されるコントロールがいくつかあります。ユーザはデータフレームのサイズとシフトレジスタの送信順を定義できます。クロックは、モトローラSPI仕様で定義された4つの基本構成の1つに設定できます。2つのビットの組み合わせによって、クロック信号の極性と位相を制御します。位相制御ビットがクリアされると、データビットは奇数クロックエッジでサンプリングされ、偶数クロックエッジで次のビットからデータラインへのシフトが同期されます。これは、位相制御ビットがセットされたときと反対です。クロック極性ビットは、クロック信号のアイドル状態を定義し、いずれのクロックエッジがデータのサンプリングまたはシフトに使用されるかを決めます。

11データ・パッキング、FIFOアクセス

12

高度なLow-Demand制御• パッキング・モード• 複数のデータ・パターンによるFIFOレジスタのアクセス• 設定可能なFIFO閾値レベル• DMAアクセス• イベントと必要なサービスの数が軽減される• システム負荷が軽減される

通信速度が高速で、データフレームが短いときには、クロック信号が連続的になり、全二重モードが使用されるときの正しいデータフローを確保することが難しいタスクになることがあります。
データオーバーランまたはアンダーラン条件を防止するには、ス
レーブノードはマスタによって適切に送信されたすべてのトランザクションに適切に対応する必要があります。データフレームサイ
ズが1バイトに収まるときには、パッキングモードを使用できます。
その場合、複数のデータパターンをFIFOレジスタへの1回のアクセスで読み書きできます。FIFO閾値イベントが適切に設定されていれば、対応しなければならないイベント数が減り、より適切にデータフローを制御できます。DMAコントローラも使用されるときには、システムへの全体的負荷が大幅に軽減されます。この図は、専用のFIFOレジスタへの1回の16ビットアクセスによって、2つの短い4ビットデータフレームを読み書きできることを示しています。読取りまたは書込みデータアクセスには1つのサービスイベントが必要なだけです。

12

32ビットRxおよびTxFIFO

13

閾値とデータアクセス間のバランス• 送信用と受信用の2つの個別の32ビットFIFO• 8/16ビットの読取り/書込みアクセス対
FIFO閾値と占有フラグ• 8ビットクセスでは、TxおよびRxFIFO
は異なる機能SPIペリフェラルは、データフローを処理する2つの32ビットFIFOを備えています。FIFOには8ビットまたは16ビットのデータ命令を使用してアクセスできます。受信時、FIFOから生成されるイベントは、閾値設定（RxNE）によって異なります。設定によるイベントフラグの動作の変化の概要が表に示されています。FIFOアクセスと閾値設定のバランスを取って、データの整合性が失われないようにすることが重要です。送信時、送信FIFO占有率（TxLVL）は、データアクセスによって異なります。
送信FIFO占有率が半分以上になると、特定のイベント動作が発生します。
送信時、送信FIFO占有率（FTLVL）は、FIFOレベルが半分以上になったとき、データアクセスに依存します。FIFOの上半分にデータを格納するために8ビットアクセスが使用されると、FIFOステータスはフルになります（FTLVL=11、TXE=0）。システムは、さらに1つの8ビットデータ分の余地があっても、FIFOへの新しい書込みの試みを受け入れません。これにより、正しくない16ビットアクセスと、この状況でデータに使用できるスペースのオーバーフローが防止されます。そのため、データ送信に8ビットデータアクセスが適用されているときには、FIFOフル機能を達成することはできません。
この場合、TxFIFOが完全に占有されていないにもかかわらず、TxEフラグは結果としてクリアされます。

13

プロトコル・レベルの追加サポート

14

拡張されたDMAおよびCRC管理• DMAコントローラが自動的に処理

MOSI

データ1

データ2

…

MISO

データ’1

データ’2

…

• CRCコントロール• FIFO閾値コントロール• 柔軟なCRCコントロール

CRC[1..n]CRCNXT=1• データ・トランザクション・イベントの正確な数• トランザクションの終了処理

データn

データ’n

CRC’[1..n]

SCK

NSS

• 受信フローと送信フローに個別の計算器• 各トランザクションの終了時にCRCパターンが送信• トランスミッタはRC結果をデータシフトレジスタに直接挿入• レシーバはCRCをRxFIFOに格納して、値を内部計算と比較• プログラム可能なCRC多項式（奇数値のみ）とCRC長（8または16ビットのCRCフレーム）

プロトコルレベルの通信中、DMAコントローラを使用してデータフ
ローイベント、CRC計算、およびFIFO閾値の更新を自動的に処理できます。閾値制御の場合、フレーム数がパケットサイズと揃っていないとき、最後の奇数データフレームはパックドモードで正しく適用されます。
CRCが有効な場合、トランスミッタとレシーバに個別のCRC計算器が使用されます。CRC計算結果は、DMAコントローラによって、またはソフトウェア制御によって、各転送の終了時に自動的に適用されます。トランスミッタのCRC計算器レジスタからの結果はシフトレジスタに直接ロードされ、受信したCRC値はFIFOに格納されて、レシーバのCRC結果と比較されます。計算に使用される
CRC多項式はプログラム可能であり、CRCパターンの長さは8または16ビットフレームのいずれかに設定できます。

14

標準NSSモード

15

拡張されたスレーブ選択信号（NSS）の管理• NSS入力• ハードウェアまたはソフトウェア管理• スレーブ・モード–アクティブ・スレーブを選択• マスタ・モード–マスタ間で競合• NSS出力• マスタ・モード• アクティブ・スレーブを選択• 特定のモード

スレーブ選択信号は、通信のスレーブノードを選択するために、マスタノードによってよく使用されます。
信号の実装はマルチマスタおよびマルチスレーブトポロジでは必須ですが、ごくまれな特定の事例を除きます（一般に、MISOデータラインの衝突が防止されるとき）。シングルマスタ-スレーブペア
では必須ではありませんが、トポロジに関係なく、データフローの同期に役立ちます。
スレーブ選択信号は、入力または出力のいずれかとして動作します。
NSS入力は、マスタまたはスレーブモードで、SSMビットに応じてハードウェアまたはソフトウェアによって管理できます。
スレーブ入力としては、通信のアクティブスレーブとして自身を識別するために使用されます。マスタ入力としては、マルチマスタシステムにおいて、マスタ間の競合の可能性を知らせます。
出力として機能するNSSは、マスタモードでのみ使用され、標準または特定の制御モードでハードウェアによって管理されます。
ソフトウェア制御下のGPIOによって追加のスレーブ選択出力を提供できます。これは、より多くの個別のスレーブ選択信号が適用されるときに必要になることがあります。
15

特定のNSSモード

16

スレーブ選択信号（NSS）のハードウェア制御を伴う拡張モード• NSSパルスモード• マスタ・サポートのみ• モトローラ・モード（CPHA0のみ）• TIモード• マスタおよびスレーブのサポート• 固定されたCPOLおよびCPHA設定• HiZスレーブのMISO自動制御

スレーブ選択信号が特定のハードウェア制御下にあるときには、いくつかの拡張されたモードがあります。スレーブ選択信号はパルスモードで動作でき、その場合、マスタは、連続したデータ転送があるときには、データフレーム間のNSS出力信号で1SPIクロック周期の間、パルスを生成します。
• NSSは、連続トランザクションの場合、1SCK期間のデータフレーム間でハイになります。
• クロックの極性と位相は固定され、CPOL設定は無視され、CPHAはクリアされた状態に保たれている必要があります。
もう1つの拡張モードはTIモードです。このモードでは、データフ
ローは、データの最後のビットで、マスタによって供給されるNSSパルスによって同期されます。
• クロックの極性と位相の設定は固定され、バストラフィックが停止すると、特定の設定可能なタイムアウト時にスレーブデータ出力が自動的にハイインピーダンスに切り替わります。
• CRCがTIモードで適用される場合、CPOL=0、CPHA=1設定を保持する必要があります。
CRCはNSSパルスモードでは適用できません。

16

割込みとDMA
割込みイベント

フラグ

17

説明

送信FIFOレディ

TXE

TxFIFOが新しいデータを受け入れる準備ができたときにセット受信FIFOレディ

RXNE

データがRxFIFOで受信されるとセット

マスタモード・フォルト

MODE

マルチマスタ・バス構成でバス競合が検出されたときにセット

データ・オーバーラン・エラー

OVR

RxFIFOがフルであるため、レシーバが次のデータ・フローを受け入れることができない

TIフレーム・フォーマット・エラー

FRE

NSS信号がデータ・フォーマットに対応していない

CRCプロトコル・エラー

CRCERR受信されたメッセージのチェックサムが、内部で計算された値に一致しない• DMAアクセスは、TXEおよびRXNE FIFOイベントに基づいて内部的に要求• DMAはCRCとデータ閾値制御を自動的に処理

これは、SPI割込みイベントの概要です。
データフローを処理するためのFIFOおよびエラー検出イベントがあります。
DMAリクエストは、内部でFIFO閾値イベントによってトリガされます。

17

低電力モード
モード

18

説明

RUN

有効SLEEP

有効 ペリフェラル割込みによって、デバイスはSLEEPモードを終了

低電力RUN

有効低電力SLEEP

有効 ペリフェラル割込みによって、デバイスは低電力SLEEPモードを終了

STOP0

停止 ペリフェラルレジスタの内容は保たれる

STOP1

停止 ペリフェラルレジスタの内容は保たれる

STANDBY

パワーダウン状態 ペリフェラルは、STANDBYモード終了後に再初期化する必要がある

SHUTDOWN

パワーダウン状態 ペリフェラルは、SHUTDOWNモード終了後に再初期化する必要がある

これは、特定の低電力モードでのSPIステータスの概要です。
デバイスは、STOP、STANDBY、またはSHUTDOWNモードでは通信を行うことができません。ペリフェラルがSTOPまたはパワーダウンモードに入る前に、すべてのSPIトラフィックを確実に完了することが重要です。

18

パフォーマンス

19• 理論的な通信速度限界は、PCLK/2• 実際の通信速度は、以下に依存• SPIバスの容量性負荷（接続されているデバイスの数、入力静電容量、ワイヤの長さ）• GPIO内部ボンディング、それらの構成、VDDレベル、および周囲温度• SPIクロック信号デューティ比• 提供されるセットアップおよびホールド時間/データに必要な時間• 連続フローを制御するソフトウェア機能• 実際のパフォーマンス
• マスタモードでの最大速度–75MHz• スレーブモードでの最大速度–27MHz

SPIのパフォーマンスは、主に、適用されるクロックに依存します。
少なくとも、クロック周波数は必要な通信周波数の2倍でなければなりません。実際の通信速度は、アプリケーション要因によって低下することがあります。
ユーザは、ノード数、接続距離、入力静電容量などのSPIバスの負荷とGPIO設定を考慮する必要があります。高速GPIOモードは、データおよびクロック信号に適用されます。電源電圧が低く、極端な周囲温度の場合、エッジが遅くなります。
ときにはノード間に、より遅いデータホールドまたはセットアップ時間要件を課さなければならないことがあります。頻繁な例外処理や割込み不能命令（LDMIAなど）の実行のため、アプリケーションは高速データフローを常に管理できるわけではありません。
DMA容量は、システムで使用されるDMAチャネルの数、頻繁な割込みサービス、または割込み不能命令の実行と同様に考慮する必要があります。

19

アプリケーション例

20• ディスプレイ• スマートセンサ• メモリ• MMC/SDカード• IOエキスパンダ

SPIは、複雑な通信プロトコルを必要とせずに簡単なデータ転送が必要な幅広いアプリケーションで使用できます。

20

アプリケーションのヒントとコツ

21• Common tips:• SPI（またはクロック）を無効にする前に、ビジーでないかとFIFOステータスをチェック• 特定の制御が必要なときには、DMAコントローラを使用（CRCの処理、RxFIFO閾値の変更、受信専用モード（RXONLY=1）の終了）• データが1バイトに収まるときには、パックド・モードを使用• NSSのハードウェア管理には利点がある• 具体的な局面:

CRCNXT=1
RXONLY=0
FRXTH=1

CPHA=0

ダミー/奇数/CRCフレーム

コントロールウィンドウ• CRC情報は受信FIFOにロードされるため、ユーザが一掃する必要がある• 連続データ・トランザクション時、BSY動作はマスタ・モードとスレーブ・モードで異なる• 送信操作では、受信およびオーバーラン・フラグがセット（無視しなくてはいけない）• CRCが適用される場合のDMAヒント• 全二重モードのDMAトランザクションのデータサイズ• 送信 = 送信するデータの数（CRCの長さなし）• 受信 = 受信するデータの数 + CRCの長さ（Rxのみモード = 受信するデータの数）

役に立つヒントをいくつか紹介します。
ユーザは特定の手順に従って、低電力モードが適用される前、またはペリフェラルクロックが除去される前に、バス上でトラフィックがまだ実行中かどうかを確認して、そのようなトランザクションフローの早期終了を防止する必要があります。DMAチャネルがトランザクション完了ステータスを通知した後や、送信FIFOが空になった後、一定の時間、継続させ、推奨される手順に従う必要があります。
CRCや受信FIFO閾値の処理のため、または受信専用モードで、特定の制御が適用される必要があるときには、DMAコントローラを使用して、トランザクションを終了してください。そのような制
御は、最後の1データフレームトランザクション内で使用可能な短い時間枠で排他的に適用される必要があります。これにより、正しいデータ量のトランザクションが確保されます。
DMAおよび/またはデータパケットフレームが適用されるときには、データフローの処理に必要なサービスの数が大幅に減るため、システム全体のパフォーマンスが向上します。これは、データフレームが短く、バスの通信速度が高速であり、データフローが連続的なときには特に有効なアプローチです。
NSSピンのハードウェア管理は、マスタが単一のスレーブと通信するときには特に必要ではありませんが、スレーブ間でのデータフローの同期に役立ちます。
SPIネットワークを設定するときに考慮すべき具体的な局面があります。
•レシーバは常にCRC情報を受信FIFOにロードします。ユーザはFIFOに必要な追加領域を•考慮に入れて、FIFOからCRC情報を一掃する必要があります。
•ビジーフラグは、データ処理には使用せずに、トランザクション終了時にバストラフィックの停止を確認するために使用してください。マスタ連続データトランザクション時には、データフレーム間でBSYビットはクリアされません。スレーブモードでは、データフレーム間で少なくとも1SPIクロックサイクルだけ常にローになり、通信が連続的かどうかは関係ありません。
ノードがデータのみを送信するときには、受信チェーンは常にアクティブなままです。この場•合、ユーザは関連する受信およびオーバーランイベントのすべてを無視してください。
CRCを含んでいるとき、DMAコントローラによって処理されるデータの数は、転送モードに•よって異なります。全二重モードでは、トランスミッタとレシーバで異なる数を設定する必要があり、特定の設定は受信専用モードで適用される必要があります。

21

SPI関連ペリフェラル

22• 次のペリフェラルを参照してください。
• リセットおよびクロック制御（SPIクロック・イネーブル、SLEEPモードでのクロック制御、リセット）• 割込み（FIFOおよびエラー・イベント）• 汎用入出力（速度制御、GPIO設定）• DMASPIに直接リンクされている、これらのトレーニングを参照してください。ユーザは、SPIの動作に影響する可能性のあるすべてのペリフェラルに習熟してください。

22

STM32G4インスタンス機能
SPI1

SPI2

SPI3

SPI4

データサイズ構成可能4~16ビット

はいはいはいはい32ビットRxおよびTxFIFO

はい

はい

はい

はい

ハードウェアCRC計算

はい

はい

はい

はい

TIおよびNSSパルス・モードの拡張

はい

はい

はい

はい

I2Sモード

いいえ

はい

はい

いいえ

SPIの機能23

STM32G4シリーズマイクロコントローラには4つのSPIがあり、それぞれがこのプレゼンテーションで説明されているすべての機能をサポートしています。うち2つのSPIにおいてはI2S機能を備えています。

23

参照

24

• 詳細については、以下のリソースを参照してください。
• AN4286 - SPI protocol used in the STM32 bootloader• AN3364 - Migration and compatibility guidelines for STM32 microcontroller applications• ウェブ（接続例、使用可能なモニタリング・ツール）

専用のSPIアプリケーションノードがいくつかあります。一般的な
SPI接続とインタフェース問題の詳細については、多くのウェブページがあり、使用可能なSPIバスモニタリングツールもあります。
多くのデジタルオシロスコープは、SPIバスでのデータの直接読取りと分析およびクロック信号をサポートしています。

24