リアルタイム対応アプリケーションで I2C を使用する
Azure Sphere では、マスター モード Inter-Integrated 回線 (I2C) がサポートされています。 I2Cは、低速周辺機器をマイクロコントローラに接続するシリアルバスです。 I2C は、マスター デバイスが一連の下位デバイスを制御するマルチマスター/マルチ下位モデルを使用します。 I2C は、多くの場合、制御、電源スイッチ、センサーの設定など、マイクロコントローラーとの単純な軽量通信のみを必要とする周辺機器で使用されます。
このトピックでは、リアルタイム対応アプリケーション (RTApps) で I2C を使用する方法について説明します。 高レベル アプリケーションでの I2C の使用については、「高レベル アプリケーション での I2C の使用」を参照してください。
メモ
Azure Sphere OS は、起動時に周辺機器をリセットしません。 アプリケーションでは、起動時または再起動後に周辺機器が既知の良好な状態になっていることを確認する必要があります。
リアルタイム コアでの I2C の MT3620 サポート
MT3620チップのI2C仕様は MT3620サポートステータスに記載されています。 MT3620開発ボードのユーザーガイドでは、配線用のピンレイアウトと機能について説明しています。
MT3620 開発ボードを構成する場合は、I2C マスター インターフェイスとして任意の ISU ブロックを使用できます。 I2C マスター インターフェイスとして ISU ブロックを使用する場合、SPI または UART インターフェイスと同じブロックを使用することはできません。
MT3620 では、10 ビットの下位デバイス アドレスはサポートされていません。サポートされているのは 7 ビット アドレスのみです。 MT3620 は、100 KHz、400 KHz、1 MHz のバス速度をサポートしますが、3.4 Mhz はサポートしていません。 MT3620 では、0 バイトの I2C 読み取りはサポートされていません。
MT3620 のレジスタ ベース アドレス、割り込み番号、クロック レート、サンプリング周波数、その他の詳細については、 MT3620 データシート と MT3620 M4 ユーザー マニュアルを参照してください。質問が残っている場合は、電子メールで Avnet に詳細を Azure.Sphere@avnet.com要求できます。
アプリケーション マニフェストの設定
I2C を使用するには、RTApp がそれをアプリケーション マニフェストの [機能] セクションに一覧表示する必要があります。 たとえば、次の行は、MT3620 チップ上の ISU0 上の I2C マスター インターフェイスを予約します。
"Capabilities": {
"I2cMaster": [ "ISU0" ] }
Azure Sphere アプリケーション マニフェストには、アプリケーション マニフェスト の詳細が記載されています。
I2C サンプル アプリケーション
GitHub の CodethinkLabs リポジトリには、Azure Sphere RTApps でサポートされている MT3620 周辺機器の使用方法を示すサンプル アプリケーションが多数含まれています。 具体的には、 I2C_RTApp_MT3620_BareMetal サンプルでは、リアルタイム対応アプリケーションで I2C 周辺機器を使用する方法を示します。