リアルタイム対応アプリケーションで I2S を使用する
Azure Sphere では、IC 間サウンド (I2S) インターフェイスがサポートされています。
I2S は、デジタル オーディオ デバイスを一緒に接続するために使用されるシリアル バス インターフェイス標準です。 I2S バスには、クロックとシリアルのデータ信号が個別に用意されています。
このトピックでは、リアルタイム対応アプリケーション (RTApps) で I2S を使用する方法について説明します。
メモ
- I2S は現在、高レベルアプリケーションでの使用にはサポートされていません。
- Azure Sphere OS は、起動時に周辺機器をリセットしません。 アプリケーションでは、起動時または再起動後に周辺機器が既知の良好な状態になっていることを確認する必要があります。
リアルタイム コアでの I2S の MT3620 サポート
このセクションでは、MT3620 で Azure Sphere を実行する場合にのみ適用される I2S オプションについて説明します。
MT3620 は、I2S0 と I2S1 の 2 つの I2S インターフェイスを備えています。 システムの起動後のリソース割り当て中に、割り当てられたリアルタイム コアに割り当てることができます。 各 I2S インターフェイスは、割り当てられていない MKU からのアクセスを拒否するコア マッピング モジュールによって保護されます。
I2S モジュールでは、外部コーデックを使用した下位モードのみがサポートされます。 マスター モードと内部コーデックはサポートされていません。 ただし、外部コーデックが I2S フレーム同期 (I2S_FS) と I2S ビット クロック (I2S_BCLK) を生成するためにマスター クロック (I2S_MCLK) が提供されます。
内部オーディオ コーデックとマスター モードはサポートされていません。 I2S インターフェイスは、I2S バスを介して I2S 下位として外部オーディオ コーデックと通信するために使用されます。
標準 I2S プロトコルと Time Division マルチプレクシング (TDM) プロトコルの 2 つのデータ形式がサポートされています。
GPIO と I2S ( I2S0:GPIO56-GPIO60、I2S1:GPIO61-GPIO65) の間で 5 つのピンの 2 つのブロックが多重化されます。
MT3620 のレジスタ ベース アドレス、割り込み番号、クロック レート、サンプリング周波数、その他の詳細については、 MT3620 データシート と MT3620 M4 ユーザー マニュアルを参照してください。質問が残っている場合は、電子メールで Avnet に詳細を Azure.Sphere@avnet.com要求できます。
アプリケーション マニフェストの設定
I2S 下位インターフェイスを使用するには、RTApp がそれをアプリケーション マニフェストの [機能] セクションに一覧表示する必要があります。 たとえば、アプリケーションからアクセスできるリソースの一覧に I2S インターフェイスを追加します。
"Capabilities": {
"I2sSubordinate": [ "I2S0" ] }
IC 間サウンド (I2S) の下位インターフェイスは、RTApp でのみ使用されます。 この機能は、高度なアプリケーションでは使用できません。
Azure Sphere アプリケーション マニフェストには、アプリケーション マニフェスト の詳細が記載されています。
I2S サンプル アプリケーション
GitHub の CodethinkLabs リポジトリには、Azure Sphere のリアルタイム対応アプリケーションでサポートされている MT3620 周辺機器を使用する方法を示すサンプル アプリケーションが多数含まれています。 具体的には、 I2S_RTApp_MT3620_BareMetal サンプルでは、リアルタイム対応アプリケーションに I2S 周辺機器を組み込む方法を示します。