STM32H7 - 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は最大8つのデジタルマイクを接続でき、ビームフォーミングや単純な音声認識アプリケーションに利用できます。
• AC’97プロトコル。

3

主な機能（2/2）

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

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

4

ブロック図5• SAIは以下を内蔵：• 2つの独立したサブブロックにより以下を提供：• DMAおよび割込みサービス• シンクロメカニズム• I/Oライン管理• PDMインタフェース

PDM
IF• APBインタフェース

IO LineManagement• FIFOバッファSYNCIN• 柔軟性の高いシリアル･インタフェース

SYNC
OUT

• クロック･ジェネレータ

SAIは2つの独立したサブブロック（サブブロックAおよびB）で構成されます。
各サブブロックに専用のAPBインタフェース、クロックジェネレー
タ、FIFOバッファ、DMAインタフェース、および割込みインタフェースがあります。

各サブブロックは、レシーバモードまたはトランスミッタモードに、また、マスタモードまたはスレーブモードに独自のプロトコルで設定できます。
内部および外部同期により、2つのサブブロックを同期したり、複数のSAIインタフェースを同期したりできます。
各サブブロックは最大4つのIOを処理できます。各サブブロックについて、FSはフレーム同期、SCKはビットクロック、SDはシリアルデータ、およびMCLKはマスタクロックです。
さらに、PDMインタフェースにより、最大8つのデジタルマイクを接続できます。

5

回路内のSAI

6• 豊富なカーネル･クロック選択:• 3つのPLL出力のうちの1つ、または• オシレータ出力の1つ、または• 柔軟な内部同期:• 各SAIは、他の3つのSAIに同期を提供• 各SAIは、次のいずれかと同期可能
他の3つのSAIを使用

Internal Sync Bus• パッドからのクロック• 48kHzと44.1kHzの両方のストリームを同時にサポート可能

STM32H7は、4つのSAIインタフェースを内蔵しています。
それぞれのSAIはカーネルクロック（SAI_CK_x）を受信できます。
• システムPLL1のDIVQ出力から• PLL2、もしくはPLL3のDIVP出力から• HSI、CSIもしくはHSEオシレータから、または• 入力PAD：I2S_CKINから
カーネルクロックは、マスタモードに設定されているとき、シリアルオーディオインタフェースのタイミングを生成するためにSAIによって使用されます。
SAI4は、D3ドメイン内にある唯一のものであるため、カーネル・クロック選択用の2つの独立したマルチプレクサを持ちます。
48kHzと44.1kHzのオーディオストリームを並列でサポートすることが可能です。
STM32H7に組み込まれたPlLはフラクショナルモードで動作し、非常に柔軟にオーディオ周波数を生成できます。
内部同期バスでは、複数のSAIを必要に応じて同期して、マルチレーンデバイスをサポートできます。

6フリープロトコル･モード（1/13）• SAIを以下で設定するには、フリープロトコル･モードを選択する必要がある• I2Sフィリップス標準• I2SMSBまたは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は良好なクロック品質を保証する

マスタモードでは、適切なタイミングを生成して正しいサンプリングレートを提供するのは、SAIに依存します。
スレーブモードでは、サンプリングレートは外部オーディオデバイスによって提供されます。

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

13• サンプリング･レート調整、MCLKが生成されるとき (NOMCK=0):𝑓=𝑓 _𝑀𝐶𝐾𝐷𝐼𝑉(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は、STM32H7 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は、異なるSAIのサブブロックを同期化することも可能(外部同期)• 同期が使用されない場合、各サブブロックは独立する
いくつかの例:• I2SフィリップスマスタのSAI_A、SPDIFでSAI_B• SAI_A TDMスレーブ、SAI_B AC'97• 内部同期または外部同期を使用する場合は、次の制限を尊重する必要がある：• 異なるプロトコル特性を使用して2つのSAIサブブロックを同期することはできない• 異なるプロトコル特性を使用して2つのSAIを同期することはできない

内部同期は、全二重I2Sなどの2つのデータレーンを必要とする通信に使用できます。
外部同期は、2つ以上のデータレーン(最大4つ)を必要とする通信に使用できます。たとえば、HDMI ICを接続する場合などです。
同期されたすべてのサブブロックは、同じプロトコル特性を使用する必要があります。

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と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は未使用• データサイズは強制的に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）は、次の式で調整可能：𝑓 =𝑓_64

fSAI_CK

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

2.8224 MHz

44.1 kHz

3.072 MHz48 kHz6.144 MHz

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

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

23

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

To TDM
Interface• 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

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

SAI_CK_B

SerialInterface

D[1]De-interleaver

Sub-Block B
Clockgen.

D[x]1 0SAIx

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

delay line

Zoom

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

24

Not available in
PDM mode

FS_A
SCK_A
SD_A
MCLK_A
FS_B
SCK_BSD_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]、またはD[4]の各データラインに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]に接続される場合
MICNBR = 3、7つまたは8つのマイクがD[1]、D[2]、D[3]、およびD[4]に接続される場合

この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

アクティブ

SLEEP

アクティブ
ペリフェラル割込みによって、デバイスはSLEEPモードを終了

STOP

停止
ペリフェラル･レジスタの内容は保持

STANDBY

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

次の表は、さまざまな電力モードでのSAIの動作の概要を示しています。
SAIは、RUNモードとSLEEPモードでアクティブになっており、STOPモードで停止するか、STANDBYモードでパワーダウンします。
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