STM32WB - 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 （パルス符号変調）• その他…

• SPDI F出力（ソニー／フィリップスデジタルインタフェース）• 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 は以下を内蔵：
2 つの独立したサブブロックにより以下を
提供：

PDM
IF

•

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

• 豊富なカーネルクロック選択：• システムPLL（PLLSYS）から• SAI PLLから、または• パッド（SAI1_EXTCK）から

STM32WB は、1つの SAI インタフェースを内蔵しています。
SAI はカーネルクロック（SAI_CK_x）を受信できます。
• システム PLL の DIVP 出力から
• SAI PLL の DIVP 出力から
• HSI オシレータから、または• 入力 PAD：SAI1_EXTCK から

カーネルクロックは、マスタモードに設定されているとき、シリア
ルオーディオインタフェースのタイミングを生成するために 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 は、STM32WB 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 Philips マスタ、SAI_B は SPDIF• SAI_A は TDM スレーブ、SAI_B は AC’97

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

15

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

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

データサイズを減らすために、データパスに A-law または
micro-law コンパンダーを挿入できます。
A-law と micro-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 は未使用
• データサイズは強制的に 24bitに設定されます。
• データはマンチェスター エンコード（または 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 つのフィールドに分割された 32bit を含む：
• プリアンブル• 最大 24bit のデータ
• 4 つのステータスビット• V は有効性ビットであり、現在のサンプルをアナログ信号に直接変換できることを意味する。
• P は受信したサブフレームのパリティビットであり、受信したサブフレームのチェックに使用される。
• U はユーザデータチャネルであり、各メッセージは 192bit から成る。
• CS はチャネルステータスであり、各メッセージは 192bit から成る（サンプリングレート、サンプル長など）。

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

22

SPDIF プロトコル（4/4）

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

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

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

5.6448MHz

1

44.1kHz

6.144MHz

1

48kHz

3.072MHz

12.288MHz

1

96kHz

6.144MHz

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

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

23

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

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

Interrupt/
DMA
Requests

APB bus8-bit
register

7 6

…...

delay line
delay line

8-bit
register

7 6

…...

1 0

DEMUX

MIC1

SAIx

ADC

PDM IF

FIFO

SerialInterface

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

Configured in RX
MASTER TDM protocol

TDM

TDM interface

Clock
gen.

D[1]

De-interleaver

FIFO

SerialInterface

MIC4

D[3]

De-interleaver

ADC

De-interleaver

gnd

CK[1]
Control

CK[2]APB Interface

APB bus

MIC3
ADC

IO LineManagement

Clock
gen.

MIC2
ADC

D[2]

De-interleaver

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

D[x]

1 0

Zoom

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

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 インタフェースは、各マイクから 8bit を受信するまで待ってから、新しい TDM フレームを送信します。
さらに、PDM インタフェースは、各マイクストリームについて 8bit の遅延ラインを提供します。
これらの遅延ラインは、マイクに提供されるビットストリームクロックの分解能で動作します。
ビームフォーミングアプリケーションに対応して、マイクの位置に関する制
約を取り除きます。
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（16bit）• データスロット：スロット 1～12（20bit）• フレーム長は 256bit に固定

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 モードを終了します。

STOP 0/STOP 1/STOP 2停止。ペリフェラルレジスタの内容は保たれます。

STANDBY

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

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 プロトコル、8bit の 4 スロット

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

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

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 はスロットを受信するたびに RX
FIFO に 8bit のデータを書き込みます。
16kHz のオーディオ信号を再構築するためには、ソフトウェアは各マイクストリームのローパスフィルタリングを実行した後、64 倍のデシメーションを行う必要があります。

31