リアルタイム対応アプリケーションで SPI を使用する
重要
これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。
Azure Sphere では、マスター モードでシリアル周辺機器インターフェイス (SPI) がサポートされます。 SPI は、周辺機器と集積回路の間の通信に使用されるシリアル インターフェイスです。 I2C とは異なり、SPI は、より複雑で高速な周辺機器と共に使用できます。
このトピックでは、リアルタイム対応アプリケーション (RTApp) で SPI を使用する方法について説明します。 高度なアプリケーションでの SPI の使用の詳細については、高度なアプリケーションでの SPI の使用に関する記事を参照してください。
Note
Azure Sphere OS では起動時に周辺機器がリセットされません。 アプリケーションでは、起動時または再起動後に周辺機器が既知の良好な状態であることを確認する必要があります。
チップ セレクト
チップ セレクトによって、SPI マスター インターフェイスと一連の下位デバイスの間の接続が管理され、マスター インターフェイスが各下位デバイスと個別にデータを送受信できるようになります。 Azure Sphere では、チップ セレクトに対してアクティブ低とアクティブ高の設定がサポートされ、既定では、アクティブ低が設定されています。 各 SPI マスター インターフェイスを使用できるアプリケーションは、常に 1 つだけです。 アプリケーションは、SPI マスター インターフェイスを開き、そのインターフェイスで読み取りおよび書き込み処理を実行する前に、接続されている各下位デバイスを特定する必要があります。
リアルタイム コアの SPI のための MT3620 サポート
MT3620 開発ボードを構成するとき、任意の ISU ポートを SPI マスター インターフェイスとして使用できます。 各 ISU に最大 2 つの下位デバイスを接続できます。 ISU ポートを SPI マスター インターフェイスとして使用する場合、同じポートを I2C または UART インターフェイスとして使うことはできません。
MT3620 では、最大 40 MHz の SPI トランザクションがサポートされます。
MT3620 では、1 回のバス トランザクションでの双方向の同時読み書き (全二重) SPI 操作はサポートされません。
MT3620 用の SPI 仕様は、「MT3620 サポートの状態」に一覧表示されています。 「MT3620 開発ボードのユーザー ガイド」は、ピンのレイアウトと配線機能について説明します。
MT3620 に関するレジスタ ベース アドレス、割り込み番号、クロック レート、サンプリング周波数などの詳細については、 MT3620 データシート および MT3620 M4 ユーザー マニュアルを参照してください。質問が残っている場合は、 Azure.Sphere@avnet.com電子メールで Avnet に詳細を要求できます。
アプリケーション マニフェストの設定
SPI API を使用するには、アプリケーション マニフェストに SpiMaster
機能を追加し、その機能に各 SPI マスター コントローラーを指定する必要があります。
"Capabilities": {
"SpiMaster": [ "ISU0", "ISU1" ] }
Azure Sphere アプリケーション マニフェスト には、アプリケーション マニフェストの詳細が含まれています。
SPI サンプル アプリケーション
GitHub の CodethinkLabs リポジトリには、MT3620 でサポートされている周辺機器を Azure Sphere リアルタイム対応アプリケーションで使用する方法を示すサンプル アプリケーションが含まれています。 具体的には、 SPI_RTApp_MT3620_BareMetal と SPI_SDCard_RTApp_MT3620_BareMetal のサンプルでは、リアルタイム対応アプリケーションに SPI 周辺機器を組み込む方法を示します。