STM32G4 - SAI
シリアル･オーディオ･インタフェース

1.0版

こんにちは。STM32シリアルオーディオインタフェース（SAI）のプ
レゼンテーションへようこそ。
外部のオーディオデバイスの接続に広く使用されているインタフェースのすべての機能について、このプレゼンテーションで説明します。

1

概要

2

• 外部オーディオ･デバイス用の通信インタフェースを提供

From RCC• 詳細な設定が可能• さまざまな標準をサポート：I2S、TDM、SPDIF…
• デジタル･マイク用インタフェース• 2つの独立したサブブロック

アプリケーション側の利点• 多種多様なオーディオ･デバイスをサポート• デジタル･マイク用のシンプルなインタフェース• 有用な信号のみを出力• 実装が簡単

STM32製品に搭載されているSAIは、マイクロコントローラがアンプ、A/Dコンバータ、D/Aコンバータ、オーディオプロセッサなどの外部のオーディオデバイスと通信するためのインタフェースを提供します。このインタフェースは詳細な設定が可能であり、ほとん
どのオーディオ標準をサポートしているため、既存のオーディオデバイスに容易に接続できます。
内部の同期機能により、I/Oピンの数が最小に削減されています。

2

主な機能（1/2）

3• いくつかのハードウェア･プロトコルをサポート• フリー･プロトコル･モードを使用：• I2Sフィリップス規格（IC間サウンド）• I2S MSBまたはLSB詰め（IC間サウンドの変形）• TDM（時分割多重化）• PCM（パルス符号変調）• その他…

• SPDIF出力（ソニー/フィリップス･デジタル･インタフェース）• PDMインタフェース（パルス密度変調インタフェース）• AC’97（Intelのオーディオ･コーデック97）

SAIは、4つの異なるモードでプログラムできます。
• フリープロトコルモードは、いくつかのパラメータの調整にアクセスでき、SAIはI2S、PCM、TDMなどの規格をサポートできます。その柔軟性により、必要な場合は、シリアルインタフェースのカスタマイズが可能です。
• SPDIFプロトコルモードでは、SAIはIEC 60958標準を使用してオーディオサンプルを送信できます。
• PDMインタフェースモードでは、SAIは最大6つのデジタルマイクを接続でき、ビームフォーミングや単純な音声認識アプリケーションに利用できます。
• AC’97プロトコルに対応しています。

3

主な機能（2/2）

4• SAIは以下をサポート：• 最も一般的に使用されるオーディオ･サンプリング周波数：44.1、16、48、96、および192kHz（カーネル･クロック周波数に応じて）• 各サブブロックについてマスタ･モードまたはスレーブ･モード• 各サブブロックについてデータ入力または出力• 2つのサブブロックを使用して全二重• 各サブブロックについてクロック･ジェネレータ
• サブブロック間または他のSAIとの同期• コンパンディング･モード（μ-Law、A-Law）• 8ワードFIFOサイズ• 2つのDMAインタフェース• 2つの割込みライン

SAIはアプリケーションに使用されるクリスタル周波数に従って、通常のすべてのオーディオサンプリングレートをサポートします。
さらに、SAIはマスタおよびスレーブモードを半二重または全二重通信でサポートします。
また、複数のSAIを同期することも可能です。
SAIは、8つのサンプルのFIFOバッファと最大2つの割込みとDMAインタフェースも提供します。

4

ブロック図5• SAIは以下を内蔵：
PDMIF• 2つの独立したサブブロックにより以下を提供：

IO LineManagement• クロック･ジェネレータ
• 柔軟性の高いシリアル･インタフェース• FIFOバッファ• APBインタフェース• DMAおよび割込みサービス• I/Oライン管理• PDMインタフェース

ピン名方向

説明

FS_A/B

入力／出力

フレーム同期

SCK_A/B

入力／出力

ビットクロック
シリアルデータ

SD_A/B

入力／出力

MCLK_A/B

出力

マスタクロック

D[3:1]

入力

デジタルマイクロフォン用のビットストリームデータ

CK[2:1]出力

デジタルマイクロフォン用のクロック

SAIは2つの独立したサブブロック（サブブロックAおよびB）で構成されます。
各サブブロックに専用のAPBインタフェース、クロックジェネレータ、FIFOバッファ、DMAインタフェース、および割込みインタフェースがあります。
各サブブロックは、レシーバモードまたはトランスミッタモードに、また、マスタモードまたはスレーブモードに独自のプロトコルで設定できます。
内部および外部同期により、2つのサブブロックを同期したり、複数のSAIインタフェースを同期したりできます。
各サブブロックは最大4つのIOを処理できます。各サブブロックについて、FSはフレーム同期、SCKはビットクロック、SDはシリアルデータ、およびMCLKはマスタクロックです。
さらに、PDMインタフェースにより、最大6つのデジタルマイクを接続できます。

5

回路内のSAI

6• 豊富なカーネル･クロック選択：• システム･クロックから• PLLSYSのDIVQ出力から• 外部パッド（I2SCKIN）から• ローカル･オシレータ（HSI）から

STM32G4
RCC

SAISEL

System clock (ck_sys)

SAI_CK_A

From DIVQ output of PLLSYSI2SCKIN
From HSI oscillator

Sub-Block A

SAI
SAI_CK_B

Sub-Block B

STM32G4には1つのSAIインタフェースを内蔵しています。
SAIはカーネルクロックを受信できます。
• システムクロックから、• PLLSYSのDIVQ出力から、• HSIオシレータから、または• 入力パッド:I2SCKINから
カーネルクロックは、マスタモードに設定されているとき、シリアルオーディオインタフェースのタイミングを生成するためにSAIによって使用されます。

6フリー･プロトコル･モード（1/13）• SAIを以下で設定するには、フリー･プロトコル･モードを選択する必要がある• I2Sフィリップス標準• I2S MSBまたはLSB詰め• TDMまたはPCM• フリー･プロトコル･モードは、以下のパラメータを調整するために使用される

7• データの詰め方（LSB/MSBファースト）• データ･サイズ、スロット（またはチャネル）
サイズ• フレームあたりのスロット数• スロット内のデータ位置• シリアル･クロックのサンプリング･エッジ• フレーム･サイズ、フレーム極性、フレーム期間• フレーム･アクティブレベル･サイズ• フレーム同期モード• マスタ／スレーブモード• 単一または複数または全二重データレーン

フリープロトコルモードでは、次のようないくつかのパラメータの動作を変更できる柔軟性により、一般的なオーディオ標準インタフェースのほとんどをエミュレートできます。
• データの詰め方• データのサイズと位置• フレームサイズ• フレーム期間• フレーム極性• クロックのサンプリングエッジ• スロット数…

7フリー･プロトコル･モード（2/13）

8• I2S類似のタイミング

次の例は、I2S類似プロトコルでのインタフェースの機能を示しています。
I2S類似プロトコルでは、フレーム同期（FS）の各エッジが使用されて、スロット位置が揃えられます。





フレーム長、デューティサイクル、および極性を調整できます。
クロックデータストローブエッジも選択できます。
フレームエッジに対するスロットの位置を選択できます。
スロットのサイズも調整できます。
I2S類似プロトコルでは、フレームあたり偶数個のスロットが必要です。

8フリー･プロトコル･モード（3/13）

9• TDM類似のタイミング

次の例は、TDM類似プロトコルでのインタフェースの機能を示しています。TDM類似プロトコルでは：






フレーム同期の1つのエッジ（立ち上がりまたは立ち下がり）のみが、スロット位置を揃えるために使用されます。
フレーム長、デューティサイクル、および極性を調整できます。
クロックデータストローブエッジも選択できます。
フレームのアクティブエッジに対するスロットの位置を選択できます。
スロットのサイズも調整できます。
フレームあたりのスロット数（最大16）。

9

フリー･プロトコル･モード（4/13）

10• スロット設定：• オーディオ･フレームあたり最大16スロット• 各スロットがアクティブかどうかを定義可能• 最初のビット･オフセットFBOFFを定義することにより、スロット内のデータの位置を調整可能• ハイインピーダンスでデータラインを設定可能• 非アクティブ･スロットについて• 各スロット内のデータの位置を制御するために使用されるFBOFF（最初のビット･オフセット）エリアでSAIは最大16スロットを処理でき、各スロットを個別にアクティブ化できます。非アクティブスロットは、ハイインピーダンスで設定できます。
スロットサイズは、常にデータサイズ以上です。
SAIでは、各スロット内のデータの位置を制御でき、必要な場合は、スロットの未使用部分をハイインピーダンスに設定できます。
この機能は、データラインが複数のデバイスで共有されるときに役立ちます。

10フリー･プロトコル･モード（5/13）

11• マスタおよびスレーブ･モード：• マスタ･モードの場合：• SAIはタイミング信号を提供：• ビット･クロック（SCK）、フレーム同期（FS）、必要な場合はマスタ･クロック（MCLK）• シリアル･データ･ライン（SD）は入力または出力• スレーブ･モードの場合：• SAIは、外部デバイスからタイミング信号を受信：• ビット･クロック（SCK）とフレーム同期（FS）• シリアル･データライン（SD）は入力または出力

マスタモードでは、SAIはオーディオシステムの構成に応じて、マスタクロック（MCLK）を生成できます。
このマスタクロックは、外部オーディオコーデックに対する基準クロックとなります。
マスタモードでは、SAIはフレーム同期信号（FS）とビットクロック（SCK）を生成します。データラインSDは入力または出力にできます。
スレーブモードでは、MCLK信号は使用されません。
スレーブモードでは、SAIは別のデバイス（外部または内部）からフレーム同期信号（FS）とビットクロック（SCK）を受信します。デー
タラインSDは入力または出力にできます。

11フリー･プロトコル･モード（6/13）

12• サンプリング･レート調整• サンプリング･レートはマスタモードで調整する必要がある• サンプリング･レート調整は、マスタ･クロック（MCLK）の生成に依存• マスタ･クロック（MCLK）は、しばしば基準クロックとして外部オーディオ･コーデックによって要求される• ほとんどの外部オーディオ･コーデックはジッタに敏感：オーディオ性能の劣化を避けるためには、MCLKは可能な限りクリーンでなければならない• SAIによって生成されるMCLKは良好なクロック品質を保証する• マスタクロック（MCLK）は、SAIが有効でないときでも生成•

このため、構成段階で外部コーデックのクロック調整が可能

マスタモードでは、適切なタイミングを生成して、正しいサンプリングレートを提供するのは、SAIに依存します。
スレーブモードでは、サンプリングレートは外部オーディオデバイスによって提供されます。
SAIが有効でないときでも、外部デバイスに対するマスタクロックの生成が可能なことに注意してください。
この機能により、たとえば、構成段階で外部コーデックにクロックを提供できます。

12フリー･プロトコル･モード（7/13）

13• サンプリングレート調整、MCLKが生成されるとき：
𝑓=𝑓 _𝑀𝐶𝐾𝐷𝐼𝑉(1)𝑓
256 × 𝑂𝑆𝑅 + 1

𝑓=

𝑓= 𝑓 × 𝐹𝑅𝐿 + 1

FRL+1 = 8,、16、32、64、128、または256

fMCLKは、マスタ･クロック周波数
fFSは、サンプリング･レート周波数（～フレーム期間）
fSCKは、ビットクロック周波数（1）MCKDIV = 0のとき
fMCLK = fSAI_CK

クロックジェネレータはマスタモード通信に必要であり、シリアルオーディオインタフェースのサンプリングレートを調整するために使用されます。
クロックジェネレータは、MCLK、SCK、およびFSのルート周波数を提供します。
マスタクロック（MCLK）が生成されるとき、フレーム長は2の累乗でなければなりません。
FS周波数とMCLK周波数の比は、OSRビットに従って256または512に設定されます。
クロックSAI_CKは、STM32G4 RCCブロックによって提供されます。

13

フリー･プロトコル･モード（8/13）

14• サンプリングレート調整、MCLKが生成されないとき：𝑓=𝑓
𝐹𝑅𝐿 + 1𝑓=

𝑓 _𝑀𝐶𝐾𝐷𝐼𝑉

FRL + 1 = 8～256 の値

fFSは、サンプリングレート周波数（～フレーム期間）
fSCKは、ビット･クロック周波数MCLKが生成されないとき、フレーム長は8から256までの任意の値を取ることができます。
この例では、SCKビットクロックの周波数は、SAI_CK入力で受信されたクロックによって直接与えられ、MCKDIV値で除算されます。

14

フリー･プロトコル･モード（9/13）

15• SAI同期• SAIは2つのサブブロックを同期させることが可能（内部同期）• 内部同期が使用されるとき：• 両方のサブブロックが同じフレーム同期と同じビット･クロックを共有• 両方のサブブロックが同じフレーム設定で同じプロトコルを使用する必要がある• 両方のサブブロックをスレーブモードに設定するか、一方をスレーブ･モードに、もう一方をマスタ･モードに設定できる• 同期が使用されない場合、各サブブロックは独立
例：• SAI_AはI2Sフィリップスマスタ、SAI_BはSPDIF• SAI_AはTDMスレーブ、SAI_BはAC’97

内部同期は、全二重I2Sなど、2つのデータレーンを必要とする通信に使用できます。
同期されるすべてのサブブロックが同じプロトコル特性を使用する必要があります。
サブブロックの一方をマスタモードに、もう一方をスレーブモードに設定するか、マスタデバイスが外部の場合は両方のサブブロックをスレーブモードに設定できます。

15

フリー･プロトコル･モード（10/13）

16• コンパンディング：• コンパンディングを使用して、シリアル･インタフェースのデータ･サイズを8ビットに削減可能• μ-LawフォーマットとA-Lawフォーマットでは、データをMSB詰めの8ビットコードエレメントに符号化• μ-LawとA-Lawの2つのコンパンディングモードがサポートされ、これらはCCITT G.711勧告の一部• 米国と日本で採用されているコンパンディング規格はμ-Law、14ビットのダイナミックレンジが可能• ヨーロッパのコンパンディング規格はA-Law、13ビットのダイナミックレンジが可能

データサイズを減らすために、データパスにA-lawまたはmicrolawコンパンダーを挿入できます。
A-Lawとμ-Lawはロスレス圧縮ではないことに注意してください。
コンパンディングモードは、通常、電話通信で使用されます。
• 小さな値は増幅され、大きな値は減衰されます。
• SNRは、強い信号と弱い信号で同一になる傾向があります。

16フリー･プロトコル･モード（11/13）

17• ミュートモード• 送信モード：• 送信されるサンプルを強制的にゼロにしたり、前に送信されたサンプルを繰り返すのに使用可能• ミュート･モードは進行中のフレームでいつでも選択でき、次のフレームの開始時に有効• ミュート･モード中も、TX-FIFOポインタは増加• 受信モード：• アクティブ･スロットのデータが0に設定された連続フレームの数が受信されたかどうかを検出するために使用可能• 連続フレーム数はプログラム可能• 割込みを生成可能（有効な場合）

SAIはミュート機能も備えています。
送信モードでは、ミュートされたスロットでゼロを送信したり、前に送信された値を送信できます。前に送信された値は、フレームあたり1または2スロットを持つ構成に限られます。
送信モードでは、TxFIFOポインタが増加することに注意してください。これは、FIFOに存在したデータとミュートモードが要求されたデータが破棄されることを意味します。
受信ミュートモードは、すべてのデータがゼロにリセットされた連続スロット数の検出に役立ちます。

17フリー･プロトコル･モード（12/13）

18• 予期された／遅延フレーム･エラー• この機能を使用して、ノイズが多い環境でのSCKクロック／FSのグリッチを検出可能• スレーブモードでは、SAIはフレーム同期が予期されたタイミングで（遅すぎず、早すぎずに）発生するするかどうかを検出可能• ステータス･フラグを使用でき、割込みも生成可能• 予期された/遅延フレーム検出エラー後、アプリケーション･ソフトウェアはSAIを再起動しなければならない

予期された/遅延フレームエラー検出機能は、予期しないフレー
ム同期の不一致を検出することにより、インタフェースの信頼性を高めます。ステータスフラグがセットされ、割込みも生成できます。アプリケーションソフトウェアは、その後、SAIインタフェースを再起動する必要があります。

18

フリー･プロトコル･モード（13/13）

19

SAIはアンダーラン／オーバーランが発生してもデータ･アライメントを保証• オーバーラン／アンダーランの処理• オーバーランは、RX-FIFOが満杯のときに、シリアル･インタフェースから着信する新しいデータを格納しなければならない場合に発生• アンダーランは、TX-FIFOが空のときに、シリアル･インタフェースによって新しいデータが要求された場合に発生• 例：スロット1におけるFIFOオーバーラン

SAIは、アンダーランやオーバーランが発生してもデータアライメントを保証します。

19

SPDIFプロトコル（1/4）

20• SAIはSPDIFプロトコルを使用してオーディオサンプルを生成可能：• SPDIFモードでは、SD_x_IOのみが使用され、他のIOは未使用• データ･サイズは強制的に24ビットに設定される• データはマンチェスタ･エンコード（または2層マーク）• SAIはプリアンブルを自動的に生成• SAIはパリティを自動的に生成• アプリケーションはCS、U、およびVビットを処理する必要がある

SAIは、SODIFプロトコルに設定されたときには、送信モードでオーディオIEC 60958標準をサポートします。
SAIは、送信データに従って、プリアンブルとパリティビット（P）を生成します。
ソフトウェアはCS、U、およびVビットを処理する必要があります。

20

SPDIFプロトコル（2/4）

21• ブロック構造はチャネル･ステータスとユーザ情報を組織化するために使用• 各ブロックは192フレームを含む• 各フレームは2つのサブフレームを含む• プリアンブルにより、ブロックとサブフレームの境界を検出できる• プリアンブルBは新しいブロックの開始とチャネルAの開始を検出• プリアンブルMはチャネルAの開始を検出（ブロックの境界でないとき）• プリアンブルWはチャネルBの開始を検出

IEC 60958仕様では、ブロック構造はチャネルステータス（CS）とユーザ情報（U）をデコードするために使用されます。
• 各ブロックは192フレームを含む• 各フレームは2つのサブフレームを含む
SAIはB、M、およびWプリアンブルを自動的に生成します。
• プリアンブルBは新しいブロックの開始とチャネルAの開始を検出• プリアンブルMはチャネルAの開始を検出（ブロックの境界でないとき）• プリアンブルWはチャネルBの開始を検出

21

SPDIFプロトコル（3/4）

22• サブフレーム･フォーマットは3つのフィールドに分割された32ビットを含む：• プリアンブル• 最大24ビットのデータ• 4つのステータス･ビット• Vは有効性ビットであり、現在のサンプルをアナログ信号に直接変換できることを意味する• Pは受信したサブフレームのパリティ･ビットであり、受信したサブフレームのチェックに使用される• Uはユーザデータチャネルであり、各メッセージは192ビットから成る• CSはチャネルス･テータスであり、各メッセージは192ビットから成る（サンプリング･レート、サンプル長など）

各サブフレームは3つのフィールドに分割された32ビットを含みます。
• 同期プリアンブルにより、ブロックとサブフレームの境界を検出できる• 24ビットのペイロード• ステータスビット：V、U、CS、およびP

22

SPDIFプロトコル（4/4）

23• シンボルレート：• オーディオ･サンプルレート（fS）は、次の式で調整可能：

𝐹 _𝐹 =
128 × 𝑀𝐶𝐾𝐷𝐼𝑉FSAI_CKMCKDIV+1

オーディオサンプルレート

5.6448MHz

144.1kHz

6.144MHz

148kHz3.072MHz

12.288MHz

196kHz6.144MHz

シンボルレート
2.8224MHz• データ･フォーマット：• データ･レジスタはCS、U、およびVビットとデータを含まなければならない

適切なオーディオサンプルレート（FS）を生成するためには、
Fsai_ck周波数を調整する必要があります。
送信FIFO内のデータは、このスライドに示されているように揃えられる必要があります。データのMSBは常に位置23になければなりません。

23

PDMインタフェース（1/2）
De-interleaver

To TDMInterface• PDMインタフェースは、マイクから受信したビットストリームをTDMフレームに再マップ• 8ビットの遅延ラインによりビームフォーミング･アプリケーションに対応Interrupt/DMA
Requests

APB bus8-bit
register

7 6

delay line

8-bit
register

7 6…...

1 0

DEMUX

MIC1ADCPDM IF

Clockgen.

FIFO

SerialInterface• サブブロックAはTDMモードに設定されなければならない

Configured in RX
MASTER TDM protocol

TDM

TDM interface

SAI_CK_A

FIFO

SerialInterface

APB Interface

APB bus

MIC2ADCD[2]De-interleaver

MIC3ADC

MIC4

D[3]

De-interleaver

ADC

De-interleaver

gnd

CK[1]
Control

CK[2]

IO LineManagement

Clockgen.

D[1]De-interleaver

Sub-Block B
SAI_CK_B

D[x]

1 0

SAIx

Sub-Block A• サブブロックBは他のアプリケーションで使用可能…...

delay line

Zoom

APB Interface• 最大6つのマイクを接続可能（例は4つのマイクの場合）

24

Not available in
PDM mode

FS_A
SCK_A
SD_A
MCLK_A
FS_B
SCK_B
SD_B
MCLK_B

Interrupt/
DMA
Requests

PDMインタフェースは、デジタルマイクから受信したビットストリームをTDMフレームに再マップします。
PDMインタフェースは、各マイクから8ビットを受信するまで待ってから、新しいTDMフレームを送信します。
さらに、PDMインタフェースは、各マイクストリームについて8ビットの遅延ラインを提供します。
これらの遅延ラインは、マイクに提供されるビットストリームクロックの分解能で動作します。
ビームフォーミングアプリケーションに対応して、マイクの位置に関する制約を取り除きます。
PDMインタフェースが有効なときには、サブブロックAのシリアルインタフェースを使用して外部デバイスを接続することはできません。
このシリアルインタフェースは内部でPDMインタフェースに接続されている
ため、サブブロックAはTDMモードではRX MASTERとして設定する必要があります。
図は、4つのデジタルマイクの接続例を示しています。D[1]、D[2]、またはD[3]の各データラインに1つまたは2つのデジタルマイクを接続できることに注意してください。
その場合も、サブブロックBは他のアプリケーションに使用でき、TDM、PCM、I2S、またはその他のサポートされるプロトコルを使用する外部デバ
イスに接続できます。
24

PDMインタフェース（2/2）

25• マイクの適切なサンプリング周波数（fCK[x]）を得るためには、次の式に従ってビット･クロックの周波数（fSCK_A）を調整する必要がある
𝑓_=2 ×𝑓[ ]×

𝑀𝐼𝐶𝑁𝐵𝑅 + 1• フレーム長は、マイクの数に応じて調整する必要がある
FRL = 16 × 𝑀𝐼𝐶𝑁𝐵𝑅 + 1-1

MICNBR=0、1つまたは2つのマイクがD[1]に接続される場合
MICNBR=1、3つまたは4つのマイクがD[1]とD[2]に接続される場合
MICNBR=2、5つまたは6つのマイクがD[1]、D[2]、およびD[3]に接続される場合

このPDMインタフェースでは、ビットクロック周波数をサンプリング周波数とマイクの数に応じて調整する必要があります。フレーム長も、接続されるマイクの数に応じて調整する必要があります。

25

AC’97プロトコル

26• SAIはAC’97リンクコントローラとしても機能• スロット数は13に設定• タグスロット：スロット0（16ビット）• データスロット：スロット1～12（20ビット）• フレーム長は256ビットに固定

SAIはAC’97リンクコントローラとしても機能することができます。
このプロトコルが使用されるときには、フレーム長、スロット番号、およびスロット長はハードウェアによって設定されます。

26

割込みとDMA

27• 割込み：
割込みイベント

説明

割込みをクリアする方法

FREQ

FIFO要求（FIFO閾値に到達）

SAI_xDR読込みまたは書込み(2)OVRRUDR

オーバーラン/アンダーラン･エラー

COVRUDR = 1

AFSDET

予測フレーム同期検出

CAFSDET = 1

LFSDET

遅延フレーム同期検出

CLFSDET = 1

CNRDY

コーデック･ノットレディ（AC’97モードのみ）

CCNRDY = 1

WCKCFG

正しくないフレーム長構成（1）CWCKCFG = 1

MUTEDET

ミュート検出CMUTEDET = 1（1）WCKCFGが1に設定されているとき、SAIは自動的に無効化される（SAIxEN=0）（2）より正確には、FIFOレベルが閾値未満のとき• DMA：• FIFO閾値に達したとき、DMAリクエストを生成できる割込みを生成するために、いくつかのイベントを有効にできます。
WCKCFGイベントを使用して、SAIのフレーム長が正しくプログラムされなかったことをユーザに通知できます。この機能は、マスタモードでのみ意味があります。

27

低電力モード
モード

28

説明

RUN

有効

低電力RUN有効SLEEP

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

低電力SLEEP

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

STOP0/STOP1/STOP2停止。ペリフェラル･レジスタの内容は保持

STANDBY

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

SHUTDOWN

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

次の表は、さまざまな電力モードでのSAIの動作の概要を示しています。
SAIは、RUNモードとSLEEPモードではアクティブ、STOP、STANDBY、またはSHUTDOWNモードでは停止します。
SAIの正常動作には、バスインタフェースクロック（APBクロック）とカーネルクロック（SAI_CK_x）が必要です。

28

アプリケーション例（1/3）

29• 全二重マスタまたは二線式：• サブブロックAはマスタ• サブブロックBはスレーブ• サブブロックBはサブブロックAと同期される

全二重マスタモードの場合、2つのデータレーンが必要なため、2つのサブブロックを使用する必要があります。
マスタサブブロックAは、内部同期機能（IOライン管理）を使用して、スレーブサブブロックBとの同期を提供します。
この例では、サブブロックBはSD_Bのみを使用することに注意してください。
内部同期により、IOの数は最小限まで削減されます。

29

アプリケーション例（2/3）

30• TDMマスタ、4スロット：• SAI_Aプログラミングの概要：• SAI_Bプログラミングの概要：• マスタTXモード• スレーブRXモード• 4スロット（NBSLOT=3）、スロット0、2、および3を有効化（SLOTEN=0x0D）• 4スロット（NBSLOT=3）、スロット0と1を有効化（SLOTEN=0x03）• スロットサイズはデータ･サイズに等しい• 内部同期有効（SYNCEN=1）

LSb

MSb

LSb

MSb
LSb

LSb
LSb

MSb

MSb
MSb

• スロット･サイズはデータ･サイズに等しい

これはもう一種類の全二重モードであり、TDMプロトコルを使用します。
スロット1はサブブロックAについては非アクティブであり（使用されない）、スロット2と3はサブブロックBについては非アクティブです。
両方のサブブロックについて、フレーム構造は4つのスロットがあります。
サブブロックAはフレームあたり3サンプルを生成します。
サブブロックBはフレームあたり2サンプルを受信します。

30

アプリケーション例（3/3）

31• 16kHz（CK[1]=1.024MHz）で動作する4つのマイクを接続：• SAI_Aプログラミングの概要：
説明（1）

フィールドの値

マスタRXモード

MODE=1

TDMプロトコル、8ビットの4スロット

PRTCFG=0、NBSLOT=3、
SLOTEN=0xF、SLOTSZ=0

スロットサイズ8ビット、フレーム長32ビット

FRL=31、FSALL=0、DS=2

FSアクティブハイ、フレーム･オフセッ
トなし、スロット･オフセットなし

FSPOL=1、FSOFF=0、
FBOFF=0

SCK_Aクロックを4.096MHzに設定。
マスタクロックは生成されない。

MCKDIV=14、NOMCK=1

PDM構成：最大4つのマイク、1つのクロック

MICNBR=1、CKEN1=1、
PDMEN=1（1）カーネルク･ロックSAI_CK_Aは61.44MHzと想定される

この例は、4つのデジタルマイクによって提供されるサンプルをキャプチャするための最も重要なSAI設定を示しています。
一般的なアプリケーションでは、マイクは望ましいオーディオレートの64倍も高いビットストリームクロック周波数を受信します。
アプリケーションが16kHzのオーディオストリームを処理する必要がある場合、デジタルマイクに提供されるビットストリームクロックは、16kHzを64倍して、クロック周波数に相当する1.024MHｚにしなければなりません。
4つのデータストリームがあるため、ビットクロックSCK_Aは、マイクに提供されるビットストリームクロックより4倍高くなければならず、結果としてビットクロック周波数は4.096MHzになります。
この構成を使用すると、SAI_Aはスロットを受信するたびにRXFIFOに8ビットのデータを書き込みます。
16kHzのオーディオ信号を再構築するためには、ソフトウェアは各マイクストリームのローパスフィルタリングを実行した後、64倍のデシメーションを行う必要があります。

31