概要レベルのアプリケーションで UART を使用する
Azure Sphere では、シリアル通信用のユニバーサル非同期レシーバートランスミッタ (UART) がサポートされています。 UART は、コンピューターまたは周辺機器のシリアル ポート経由でデータを送受信するために使用される一種の集積回路です。 UART は広く使用されており、そのシンプルさで知られています。 ただし、 SPI や I2C とは異なり、UART は複数の下位デバイスをサポートしていません。
メモ
このトピックでは、概要レベルのアプリケーションで UART を使用する方法について説明します。 RTApps での UART の使用については、「リアルタイム対応アプリケーションで周辺機器を使用する」を参照してください。
Azure Sphere の高度なアプリケーションは、Applibs UART API を呼び出すことによって、UART と通信できます。 UART_HighLevelApp サンプルは、MT3620 デバイス上の UART と通信する方法を示しています。
UART 要件
UART と通信するアプリケーションには、適切なヘッダー ファイルを含め、UART 設定を アプリケーション マニフェストに追加する必要があります。
すべてのアプリケーションで ターゲット ハードウェアを設定 し、対応するハードウェア定義ヘッダー ファイルを含める必要があります。
ヘッダー ファイル
#define UART_STRUCTS_VERSION 1
#include <applibs/uart.h>
#include "path-to-your-target-hardware.h"
ヘッダー ファイルを UART_STRUCTS_VERSION
含む前にプリプロセッサ定義を宣言します。 これは、アプリケーションで使用される構造体のバージョンを指定します。
"path-to-your-target-hardware.h" をハードウェアのヘッダー ファイルへのパスに置き換えます。
アプリケーション マニフェストの設定
アプリケーション マニフェストの UART 設定には、アプリケーションによってアクセスされる UD が一覧表示されます。 一度に UART を使用できるアプリケーションは 1 つだけです。 これらの設定を構成するには、アプリケーション マニフェストに機能を追加 Uart
し、各 UART を機能に追加します。
Azure Sphere アプリケーション マニフェストには、アプリケーション マニフェスト の詳細が記載されています。
コードで、ハードウェア用に定義されている定数を使用して、UART を識別します。 コンパイラは、アプリをビルドするときに、これらの値を生の値に変換します。
たとえば、 MT3620 リファレンス開発ボード (RDB) を対象とし、MT3620 で 2 つの UART を構成するアプリケーション マニフェストからの抜粋を次に示します。
"Uart": [ "$MT3620_RDB_HEADER2_ISU0_UART", "$MT3620_RDB_HEADER4_ISU1_UART" ],
次の抜粋は、 Avnet MT3620 Starter Kit を対象とするアプリケーションで同じ UDRT を指定する方法を示しています。
"Uart": [ "$AVNET_MT3620_SK_ISU0_UART", "$AVNET_MT3620_SK_ISU1_UART" ],
UART を構成して開く
UART に対して操作を実行する前に、設定を構成し、UART を開く必要があります。 UART を開くと、UART に対する操作を実行する関数に渡すことができるファイル記述子が返されます。
設定を構成するには、 UART_InitConfig Function 関数を呼び出して 、UART_Config構造体を 初期化します。 UART_Config構造体を初期化した後、構造体の UART 設定を変更できます。
UART を開いて設定を適用するには、 UART_Open 関数を呼び出して、UART_Config構造体を渡します。
UART に対して読み取りおよび書き込み操作を実行する
POSIX 関数を使用して、UART に対して読み取りおよび書き込み操作を実行できます。 UART に対して読み取り操作を実行するには、read() 関数を呼び出します。 UART に対して書き込み操作を実行するには、write() 関数を呼び出します。
UART を閉じる
UART を閉じるには、POSIX 関数 close() を呼び出します。
MT3620 のサポート
このセクションでは、MT3620 で Azure Sphere を実行する場合にのみ適用される UART オプションについて説明します。
MT3620 の UART 仕様は、 MT3620 のサポート状態に記載されています。 MT3620開発ボードのユーザーガイドでは、配線用のピンレイアウトと機能について説明しています。
Microsoft Azure Sphere SDK インストール ディレクトリの HardwareDefinitions フォルダーには、一般的な Azure Sphere 開発ボード、モジュール、チップの定義が含まれています。 これには、MT3620、MT3620 RDB、およびその他の MT3620 ハードウェアのマスター インターフェイスを定義するヘッダーファイルと JSON ファイルが含まれています。 HardwareDefinitions フォルダーの既定の場所は、 C:\Program Files (x86)\Microsoft Azure Sphere SDK\Hardware Definitions
Windows と /opt/azurespheresdk/HardwareDefinitions
Linux 上にあります。
次の UART 設定がサポートされています。 8N1 (8 データ ビット、1 ストップ ビット、パリティなし) が既定の設定です。
- MT3620 開発ボードを構成する場合は、任意の ISU ポートを UART インターフェイスとして使用できます。 ISU ポートを UART インターフェイスとして使用する場合、I2C または SPI インターフェイスと同じポートを使用することはできません。
- ボーレート: 1200、2400、4800、9600、 19200、38400、57600、115200、230400、460800、500000、576000、921600、100000、11520000、1500000、および 2000000。
- データ ビット: 5、6、7、および 8。
- ストップ ビット: 1 と 2。
- パリティ: 奇数、偶数、およびなし。
- フロー制御モード: RTS/CTS、XON/XOFF、フロー制御なし。
- ハードウェア受信バッファー: 32 バイト。
上位レベルのアプリケーションで UART を使用する場合、使用可能な 5 つの ISU 周辺ブロック ピンのうち 4 つだけが使用されます。 未使用のピンは、同じ高レベルのアプリケーションで GPIO ピンとして使用できます。 GPIO で再利用できる未使用の ISU ピンの一覧については、「 I/O 周辺機器 」を参照してください。