リアルタイム対応アプリケーションで GPIO を使用する
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
Azure Sphere は GPIO (汎用入出力) をサポートしています。 GPIO は、IC 上のプログラミング可能なデジタル ピンの一種です。 GPIO は定義済みの機能がなく、その動作は、アプリケーションでカスタマイズできます。 GPIO の一般的な使用法は、ハードウェア デバイスの状態の変更、LED の制御、およびスイッチの状態の読み取りです。
このトピックでは、リアルタイム対応アプリケーション (RTApp) で GPIO を使用する方法について説明します。 高度なアプリケーションでの GPIO の使用の詳細については、「高度なアプリケーションで GPIO を使用する」を参照してください。
Azure Sphere デバイスでは、RTApp で任意の GPIO を使用できます。 GPIO には次の操作がサポートされています。
- 入力の読み取り
- 出力を高または低に設定
- ソフトウェア割り込みのポーリング
Note
Azure Sphere OS では起動時に周辺機器がリセットされません。 アプリケーションでは、起動時と再起動後に周辺機器が既知の良好な状態になっていることを確認する必要があります。
リアルタイム コアの GPIO のための MT3620 サポート
MT3620 では、ほとんどの GPIO は、GPIO 0 から始まる 4 ブロックのリアルタイム コアにマップされます。ただし、ISU ブロック 0 から 4 には 5 つの GPIO があります。 その結果、高度なアプリケーション (または別の RTApp) によって同じブロックの GPIO が要求された場合、RTApp GPIO 要求が失敗する可能性があります。 たとえば、高度なアプリで GPIO 8 が要求され、RTApp で GPIO 9 が要求された場合、デプロイ時に 2 番目のアプリからエラーが返されます。
MT3620 RDB の各 LED は 3 つの GPIO (赤色、緑色、青色のチャネルにそれぞれ 1 つずつ) にマップされます。
MT3620 に関するレジスタ ベース アドレス、割り込み番号、クロック レート、サンプリング周波数などの詳細については、 MT3620 データシート および MT3620 M4 ユーザー マニュアルを参照してください。質問が残っている場合は、 Azure.Sphere@avnet.com電子メールで Avnet に詳細を要求できます。
GPIO の要件
アプリケーション コードには、GPIO とそのレジスタを識別する手段が必要です。 製造元のハードウェアのドキュメントで、レジスタ ベース アドレスを確認できます。 RTApp は、GPIO を使用する前に、使用するブロックを初期化する必要があります。 初期化は、アプリで使用されるブロックごとに一度だけ必要になります。
MT3620 の詳細については、 MT3620 でのリアルタイム コアでの GPIO のサポートを参照してください。
アプリケーション マニフェストの設定
GPIO を使用するには、RTApp で、アプリケーション マニフェストの Capabilities セクションにそれをリストする必要があります。 ターゲット ハードウェアの JSON ファイルで定義されている "AppManifestValue" を使用して GPIO を識別します。 たとえば、次の行では GPIO 8 と 12 を予約します。
"Capabilities": {
"Gpio": [ 8, 12 ]
}
GPIO サンプル アプリケーション
GPIO サンプル RTApp で GPIO を使用する方法を示します。 README ファイルには、詳細と手順が記載されています。