HOLTEK HT32 MCU UART アプリケーション ノート ユーザー マニュアル
導入
ユニバーサル非同期レシーバー/トランスミッター – UART は、柔軟な非同期全二重データ伝送を提供する、広く使用されているシリアル伝送インターフェイスです。 このアプリケーション ノートで提供される「Module_UART」アプリケーション コードは、ソフトウェア リング バッファで TX/RX 割り込みを使用し、API を通じて単純な UART 送受信機能を実装します。その関連機能については以下で説明します。 これにより、データ送信プロセス全体が簡素化され、ユーザーは UART 通信アプリケーションを迅速に理解して実装できるようになります。
- 送受信機能: バイト読み取り、バイト書き込み、バッファ読み取り、バッファ書き込みなど。
- ステータス関数: バッファ長、送信ステータスなどを取得します。
このドキュメントでは、まず UART 通信プロトコルを紹介します。これは、ユーザーが UART 通信を原理からアプリケーションまでよりよく理解するのに役立ちます。 続いて、ファームウェア ライブラリ、アプリケーション コードのダウンロード、アプリケーション コードなど、アプリケーション コードに必要なリソースのダウンロードと準備が行われます。 file ディレクトリ構成とアプリケーション ノートで使用されるターミナル ソフトウェア ツールの紹介。 「機能の説明」の章では、アプリケーション コードのディレクトリ構造、パラメータ設定、API の説明が紹介されます。 API の使用法は「Module_UART」アプリケーション コードを使用して説明され、API に必要なフラッシュ/RAM リソースの消費量もリストされます。 「使用説明書」の章では、環境の準備、コンパイル、およびアプリケーション コードが適切に動作することを確認するテストの手順をユーザーに説明します。 次に、API をユーザーのプロジェクトに統合する方法を説明する手順が提供され、最後に、変更および発生する可能性のある一般的な問題についてのリファレンスが提供されます。
使用される略語:
- UART: ユニバーサル非同期レシーバ/トランスミッタ
- API: アプリケーションプログラミングインターフェース
- LSB: 最下位ビット
- MSB: 上位ビット
- パソコン: パソコン
- SK: スターター キット、HT32 開発ボード
- IDE: 統合開発環境
UART通信プロトコル
UART は、送信機でパラレルからシリアルへのデータ変換を実装し、同様の受信機とシリアル通信を行うシリアル通信タイプのインターフェイスです。 受信機はデータ受信後にシリアルからパラレルへのデータ変換を実行します。 図 1 は、データがビット単位でどのように転送されるかを示すシリアル通信の概略図を示しています。 したがって、送信機と受信機の間の双方向通信の場合、相互にデータをシリアルに転送するには TX と RX の XNUMX 本のワイヤだけが必要です。 TX は、UART がシリアル データを送信するピンで、レシーバーの RX ピンに接続されます。 したがって、送信機デバイスと受信機デバイスは、図に示すように、TX ピンと RX ピンを相互接続して UART 双方向通信を実行する必要があります。 形 2.
図 1. シリアル通信図
図 2. UART 回路図
UART シリアル通信では、データ送信は非同期で行われます。 これは、送信機と受信機の間にクロックやその他の同期信号が存在しないことを意味します。 ここではボーレートが使用されます。ボーレートはシリアルデータの送受信速度であり、データ転送の前に双方で設定されます。 さらに、スタート ビットやストップ ビットなどの特別なビットがデータ パケットの先頭と末尾に追加されて、完全な UART データ パケットが形成されます。 図 3 は UART データ パケットの構造を示し、図 4 はパリティ ビットのない UART 8 ビット データ パケットを示します。
図 3. UART データ パケットの構造
図 4. UART 8 ビット データ パケットのフォーマット
UART データ パケットの各部分を以下の順序で紹介します。
- スタートビット: これはデータ パケットの開始を示します。 UART TX ピンは通常、送信が開始される前は High ロジック レベルのままです。 データ送信が開始されると、UART トランスミッタは TX ピンを High から Low、つまり 1 から 0 に引き下げ、XNUMX クロック サイクルの間その状態を保持します。 RX ピンで High から Low への遷移が検出されると、UART レシーバーはデータの読み取りを開始します。
- データ: これは実際に転送されるデータで、データ長は 7、8、または 9 ビットです。 データは通常、LSB ファーストで転送されます。
- パリティビット: データ内の論理「1」の数は、送信中にデータが変更されたかどうかを判断するために使用されます。 偶数パリティの場合、データ内の論理「1」の総数は偶数である必要があり、逆に、奇数パリティの場合、データ内の論理「1」の総数は奇数である必要があります。
- ストップビット: これはデータ パケットの終わりを示します。UART トランスミッタは TX ピンを Low から High、つまり 0 から 1 にプルし、1 または 2 ビット期間保持します。
前述したように、UART 回路にはクロック信号がないため、エラーのない送信を実現するには、送信側と受信側で同じシリアル データの送受信速度 (ボー レートと呼ばれます) を定義する必要があります。 ボーレートは、4800 秒あたりに転送されるビット数 (bps (ビット/秒)) によって定義されます。 標準で一般的に使用されるボー レートには、9600bps、19200bps、115200bps、XNUMXbps などがあります。単一のデータ ビットの転送に必要な対応時間を以下に示します。
表 1. ボーレートと 1 ビット送信時間の関係
ボーレート | 1ビット送信 時間 |
4800bps | 208.33µs |
9600bps | 104.16µs |
19200bps | 52.08µs |
115200bps | 8.68µs |
リソースのダウンロードと準備
この章では、使用するアプリケーション コードとソフトウェア ツール、ディレクトリとディレクトリの設定方法を紹介します。 file パス。
ファームウェアライブラリ
まず、アプリケーション コードを使用する前に、Holtek HT32 ファームウェア ライブラリがダウンロードされていることを確認してください。 ダウンロードリンクは以下に表示されます。 ここには 32 つのオプションがあります。HT0F32xxxx シリーズ用の HT5_M32p_Vyyyymmdd.zip と HT3F32xxxx シリーズ用の HT1_MXNUMX_Vyyyymmdd.zip です。 必要なファイルをダウンロードして解凍します file.
ジップ file ドキュメント、ファームウェア ライブラリ、ツール、その他の項目として分類できるいくつかのフォルダーが含まれています。その配置パスは図 5 に示されています。 HT32 ファームウェア ライブラリ zip file と file HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip の名前は、Firmware_Library フォルダーの下にあります。
図 5. HT32_M0p_Vyyyymmdd.zip の内容
アプリケーションコード
以下のリンクからアプリケーションコードをダウンロードしてください。 アプリケーションコードはzipにパッケージ化されています file と file HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip の名前。 見る 図6 のために file 名前の規則。
図 6. アプリケーション コード File 名前の紹介
ダウンロードリンク: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File およびディレクトリ構成
アプリケーションコードにはHT32ファームウェアライブラリが含まれていないため、 files、解凍されたアプリケーション コードとファームウェア ライブラリ fileコンパイルを開始する前に、s を正しいパスに配置する必要があります。 アプリケーションコードのzip file 通常、図 7 に示すように、アプリケーションやライブラリなどの 32 つ以上のフォルダが含まれています。アプリケーション フォルダを HTXNUMX ファームウェア ライブラリのルート ディレクトリの下に配置して、 file または、アプリケーション コードと HT8 ファームウェア ライブラリを同じパスに同時に解凍して、同じ構成結果を実現します。
図 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip の内容
図 8. 解凍パス
ターミナルソフトウェア
アプリケーション コードは、COM ポートを介してメッセージを転送し、機能の選択やステータス表示を実装できます。 このためには、ホスト側にターミナル ソフトウェアが事前にインストールされている必要があります。 ユーザーは適切な接続ソフトウェアを選択することも、Tera Term などの無料ライセンス ソフトウェアを使用することもできます。 アプリケーション コードでは、UART チャネルは 8 ビットのワード長、パリティなし、1 ストップ ビット、および 115200bps のボー レートで構成されています。
機能説明
この章では、ディレクトリ構造、API アーキテクチャ、設定の説明などの情報を含む、アプリケーション コードの機能について説明します。
ディレクトリ構造
アプリケーションコード file アプリケーションフォルダーが含まれています。 次の層は「Module_UART」フォルダで、XNUMX つのアプリケーション プログラム「UART_Module_Ex」が含まれています。amp「le」と「UART_Bridge」。 関連する file以下にリストして説明します。
表 2. アプリケーション コードのディレクトリ構造
フォルダー/ File 名前 | 説明 |
\\アプリケーション\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | プロジェクト作成用のバッチスクリプト files |
_プロジェクトソース.ini | 初期化 file プロジェクトにソースコードを追加するため |
ht32_board_config.h | 設定 file ICの周辺I/O割り当てに関するもの |
ht32fxxxxx_01_it.c | 割り込みサービスプログラム file |
main.c | メインプログラムのソースコード |
\\アプリケーション\モジュール_UART\UART_Bridge*2 | |
_CreateProject.bat | プロジェクト作成用のバッチスクリプト files |
_プロジェクトソース.ini | 初期化 file プロジェクトにソースコードを追加するため |
ht32_board_config.h | 設定 file ICの周辺I/O割り当てに関するもの |
ht32fxxxxx_01_it.c | 割り込みサービスプログラム file |
main.c | メインプログラムのソースコード |
uart_bridge.h uart_bridge.c | UARTブリッジヘッダー file およびソースコード file |
\\ユーティリティ\ミドルウェア | |
uart_module.h*3 uart_module.c*3 | APIヘッダー file およびソースコード file |
\\ユーティリティ\共通 | |
リングバッファ.h リングバッファ.c | ソフトウェアリングバッファヘッダ file およびソースコード file |
注記:
- 「UART_Module_Ex」内ample」アプリケーション コードでは、API の読み取りおよび書き込み操作がループバック方式で実行されます。「API 使用例」を参照してください。amp詳細については、「les」セクションを参照してください。
- 「UART_Bridge」アプリケーション コードでは、0 つの UART チャネル、UART CH1 と UART CHXNUMX がアクティブになり、COMMAND 構造体を介したカスタム通信プロトコルが XNUMX つの UART デバイス間に実装されます。 詳細については、「API 使用例」を参照してください。amples」セクション。
- アプリケーション コードは uart_module.c/h を使用する必要があります。 fileファームウェア ライブラリのバージョン要件がある。 要件はアップデートに応じて随時変更される可能性があります。 現在のファームウェア ライブラリのバージョン要件を確認するには、main.c でキーワード「依存関係チェック」を検索し、依存関係チェックの内容を参照してください。 file。 ファームウェア ライブラリのバージョンが要件を満たしていない場合は、「ファームウェア ライブラリ」セクションにあるリンクから最新バージョンをダウンロードしてください。
API アーキテクチャ
各 API には重要なパラメータ CH (UART チャネル) があります。 これにより、どの UART チャネルを制御するかが決まります。 現在、最大 XNUMX つの UART チャネルがサポートされているため、XNUMX つの定数シンボルが次のように定義されています。 これらは、API に制御の基礎を提供するパラメータ CH として使用されます。
- UARTM_CH0: 入力パラメータ – UART CH0 を制御または設定します
- UARTM_CH1: 入力パラメータ – UART CH1 を制御または設定します
- UARTM_CH2: 入力パラメータ – UART CH2 を制御または設定します
- UARTM_CH3: 入力パラメータ – UART CH3 を制御または設定します
UART チャネルを XNUMX つだけ使用する場合、メモリ空間は無駄になりません。 これは、サポートされる UART チャネルの数を設定でき、未使用の UART チャネル コードがプリプロセッサによって削除されて、使用可能なメモリ領域が増えるためです。 API アーキテクチャを以下に示します。 図9.
図 9. API アーキテクチャのブロック図
各 API は、UART チャネル関連の設定またはコントロールの XNUMX つのグループで構成されているため、ユーザーは必要な CH パラメータを入力するだけで済みます。 関連する API を設定するには、構造形式 USART_InitTypeDef を持つ追加の UART 基本設定パラメータ テーブルが必要なだけです。 API は、表のパラメータの内容に従って UART の基本構成を実装します。 UART の基本構成構造表については、「API の説明」セクションを参照してください。
uart_module.c/.h file各 UART チャネルの割り込み (CHx_IRQ) とステータス テーブル (CHx Status) のみが含まれていますが、UART 通信に必要なすべての設定は ht32_board_config.h によって提供されます。 ht32_board_config.h のハードウェア関連パラメータ file 以下の表に示します。 詳細については、「設定の説明」セクションを参照してください。
ht32_board_config.h のハードウェア関連パラメータには、次のような I/O 設定と物理 UART ポート設定が含まれます。
表 3. ht32_board_config.h の定義記号
シンボル | 説明 |
HTCFG_UARTM_CH0 | 物理 UART ポート名。 元ampファイル: UART0、UART1… |
HTCFG_UARTM0_TX_GPIO_PORT | CH0 の TX のポート名を定義します。 元ampル:A、B、C… |
HTCFG_UARTM0_TX_GPIO_PIN | CH0 の TX のピン番号を定義します。 元ampル:0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | CH0 の RX のポート名を定義します。 元ampル:A、B、C… |
HTCFG_UARTM0_RX_GPIO_PIN | CH0 の TX のピン番号を定義します。 元ampル:0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | CH0 の TX バッファ サイズを定義します。 元ample:128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | CH0 の RX バッファ サイズを定義します。 元ample:128 |
UART チャネルの AFIO 構成を変更するには、関連するデバイスのデータシートを参照してください。 ht0_board_config.h では UART CH0 のみが設定されているため、現在は UART CH32 の I/O 定義のみが有効になります。 UART CH1~3 を追加するには、UART CH0 の定義を参照するか、「設定変更と FAQ」セクションを参照して、その I/O 定義を完了する必要があります。
API アーキテクチャには XNUMX つの主な機能があります。
- 最大 0 つの UART チャネルがサポートされます。 それらの入力パラメータは、UARTM_CH1、UARTM_CH2、UARTM_CH3、および UARTM_CHXNUMX です。
- UART チャネルの数を設定でき、未使用のチャネルによって使用可能なメモリ容量が減少することはありません。
- すべての UART 設定と I/O 定義は API から完全に分離されています。 これにより、設定値の管理の利便性が向上し、誤った設定や設定漏れの可能性が減少します。
設定の説明
このセクションでは、ht32_board_config.h および uart_module.h のパラメーター設定を紹介します。 files.
- ht32_board_config.h: これ file ピン定義と開発ボード関連の設定に使用されます。これには、スターター キット (SK) で使用される UART IP チャネル (UART0、UART1、USART0…)、対応する TX/RX ピンの位置、および TX/RX バッファ サイズが含まれます。 HT10F32 スターターキットの設定内容を図 52352 に示します。 開発の機能統合に応じて、ユーザーは使用するデバイスのデータシートの「ピン割り当て」セクションを参照してピン定義を実装できます。 設定変更の詳細については「設定変更とよくある質問」で説明します。
図 10. ht32_board_config.h 設定 (HT32F52352)
- uart_module.h: これは API ヘッダーです file 図 11 に示すように、デフォルト設定の内容は、ht32_board_config.h の設定などの外部構成によって上書きできます。 file.
図 11. uart_module.h のデフォルト設定
APIの説明
- アプリケーションコードのデータ型の説明。
- USART_InitTypeDef
これは、以下に示すように、BaudRate、WordLength、StopBits、Parity、および Mode 構成で構成される UART の基本構成構造です。変数 名前 タイプ 説明 USART_ボーレート u32 UART通信ボーレート USART_WordLength u16 UART通信ワード長:7、8、9ビット USART_ストップビット u16 UART通信ストップビット長:1または2ビット USART_パリティ u16 UART 通信パリティ: 偶数、奇数、マーク、スペース、またはパリティなし USART_モード u16 UART通信モード。 API は通常モードのみをサポートします
- USART_InitTypeDef
- API 関数を使用する前に、メイン プログラムで UART の基本設定を完了してください。 このアプリケーション コードの UART 基本構成を図 12 に示します。ここでは、ボー レートは 115200bps、ワード長は 8 ビット、ストップ ビット長は 1 ビットで、パリティはありません。
図 12. UART の基本構成
- 図 13 は、uart_module.h で宣言された API 関数を示しています。 file。 次の表では、API 関数の関数、入力パラメータ、および使用法を説明します。
図 13. uart_module.h の API 関数宣言
名前 | void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
関数 | UARTモジュールの初期化 | |
入力 | CH | UARTチャンネル |
pUART_Init | UART基本構成構造体ポインタ | |
uRxTimeOutValue | UART RX FIFO タイムアウト値。 RX FIFO が新しいデータを受信すると、カウンタがリセットされ、再起動されます。 カウンタが事前に設定されたタイムアウト値に達し、対応するタイムアウト割り込みが有効になると、タイムアウト割り込みが生成されます。 | |
使用法 | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//UART 基本構成を実行//USART_InitStructure 構成については図 12 を参照 |
名前 | u32 UARTM_WriteByte(u32 CH、u8 uData) | |
関数 | UARTモジュールのバイト書き込み動作(TX) | |
入力 | CH | UARTチャンネル |
uData | 書き込むデータ | |
出力 | 成功 | 成功 |
エラー | 失敗した | |
使用法 | UARTM_WriteByte(UARTM_CH0, 'A'); //UART は 1 バイトを書き込みます – 'A' |
名前 | u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength) | |
関数 | UARTモジュール書き込み動作(TX) | |
入力 | CH | UARTチャンネル |
pバッファ | バッファポインタ | |
u長さ | 書き込むデータの長さ | |
出力 | 成功 | 成功 |
エラー | 失敗した | |
使用法 | u8 Test[] = “これはテストです!\r\n”; UARTM_Write(UARTM_CH0, テスト, sizeof(テスト) -1); //UART は pBuffer データを書き込みます |
名前 | u32 UARTM_ReadByte(u32 CH、u8 *pData) | |
関数 | UARTモジュールのバイト読み取り動作(RX) | |
入力 | CH | UARTチャンネル |
pデータ | 読み出したデータを配置するアドレス | |
出力 | 成功 | 成功 |
エラー | 失敗しました (データなし) | |
使用法 | u8 温度データ; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//UARTM_ReadByte() が SUCCESS を返した場合、UART はこのデータ バイトを書き込みます |
名前 | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength) | |
関数 | UARTモジュール読み出し動作(RX) | |
入力 | CH | UARTチャンネル |
pバッファ | バッファポインタ | |
u長さ | 読み込むデータの長さ | |
出力 | 読み取り回数 | 読み取られたデータの長さ |
使用法 | u8 テスト 2[10]; u32 レン; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() は 5 バイトのデータを読み取り、データを Test2 に保存し、読み取りバイト数を割り当てますto Len//Test2 から取得したデータを書き込みます |
名前 | u32 UARTM_GetReadBufferLength(u32 CH) | |
関数 | リードバッファ長(RX)の取得 | |
入力 | CH | UARTチャンネル |
出力 | u長さ | 読み取りバッファ長 |
使用法 | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART モジュールの初期化 while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//UARTM_ReadBuffer が 5 バイトのデータを受信するまで待機します |
名前 | u32 UARTM_GetWriteBufferLength(u32 CH) | |
関数 | ライトバッファ長(TX)の取得 | |
入力 | CH | UARTチャンネル |
出力 | u長さ | 書き込みバッファ長 |
名前 | u8 UARTM_IsTxFinished(u32 CH) | |
関数 | 送信ステータスを取得する | |
入力 | CH | UARTチャンネル |
出力 | 真実 | 送信ステータス: 完了 |
間違い | 送信ステータス: 未完了 | |
使用法 | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //この API は、上に示したように、TX ステータスを確認するために使用できます。 UARTM_WriteByte() API が終了するまで待機します。つまり、TX ステータスが TRUE になるまで待ってから、後続のアクションを続行します。//この関数は uart_module.c の SVN バージョン番号が 525 になるまで追加されないため、制限が追加されます。 |
名前 | 空所 UARTM_DiscardReadBuffer(u32 CH) | |
関数 | 読み取りバッファ内のデータを破棄します | |
入力 | CH | UARTチャンネル |
API 使用例ampレ
このセクションでは、API の書き込みと読み取りの例を示します。amp初期化プロセスと「UART_Module_Ex」を使用した「Module_UART」アプリケーション コードのファイルample」アプリケーション コード プロセス。 API を使用する前に、ユーザーは API ヘッダーを含める必要があります file メインプログラムのソースコードに file (#include “middleware/uart_module.h”)。
図 14 に示すように、初期化プロセスに入るときは、まず UART の基本構成構造を定義します。 次に、BaudRate、WordLength、StopBits、Parity、Mode などの UART 基本構成構造のメンバーを構成します。 最後に、API 初期化関数を呼び出します。この関数の完了は、初期化プロセスの終了を示します。 この後、ユーザーはプリセットされた UART 基本構成に基づいて書き込みおよび読み取り操作を続行できます。
図 14. 初期化フローチャート
「UART_Module_Ex」ample」アプリケーション コードは、ループバック方式での API の読み取りおよび書き込み操作を示しています。 このフローチャートを図 15 に示します。使用される API 関数には、UARTM_WriteByte()、UARTM_Write()、UARTM_ReadByte()、UARTM_Read()、および UARTM_GetReadBufferLength() が含まれます。 それらの説明は「API の説明」セクションに記載されています。
図 15. Write および Read Ex のフローチャートampレ
「Module_UART」フォルダーの下に別の「UART_Bridge」アプリケーション コードがあります。 file 説明は「ディレクトリ構造」セクションで説明されています。 「UART_Bridge」アプリケーション コードは、0 つの UART チャネル、UART CH1 と UART CH1 をアクティブにし、COMMAND 構造体、gCMD2 と gCMD1 を通じて 1 つの UART デバイス間の通信プロトコルをカスタマイズします。 これらは、次に示すように uart_bridge.c で定義されます。 UARTBridge_CMDXNUMXTypeDef gCMDXNUMX:
変数 名前 | タイプ | 説明 |
uヘッダー | u8 | ヘッダ |
uCmd | u8 | 指示 |
uData[3] | u8 | データ |
UARTBridge_CMD2TypeDef gCMD2:
変数 名前 | タイプ | 説明 |
uヘッダー | u8 | ヘッダ |
uCmda | u8 | コマンドA |
uCmdB | u8 | コマンドB |
uData[3] | u8 | データ |
「UART_Bridge」アプリケーションコードでは、gCMD1を使用してデータをコマンドパケットとして受信し、解析します。 そして、カスタマイズした通信プロトコルに従い、gCMD2を応答パケットとして設定して送信します。 以下は元ですampコマンドパケット(gCMD1)と応答パケット(gCMD2)のファイル。 コマンド パケット (UARTBridge_CMD1TypeDef gCMD1):
バイト0 | バイト1 | バイト2~バイト4 |
uヘッダー | uCmd | uデータ [3] |
「あ」 | 「1」 | 「x、y、z」 |
応答パケット (UARTBridge_CMD2TypeDef gCMD2):
バイト0 | バイト1 | バイト2 | バイト3~バイト5 |
uヘッダー | uCmda | uCmdB | uデータ [3] |
「B」 | 「あ」 | 「1」 | 「x、y、z」 |
リソースの占有
HT32F52352を例にとるとampファイルでは、UART モジュールが占有するリソースを以下に示します。
HT32F52352 | |
ROMサイズ | 946 バイト |
RAMサイズ | 40*1 + 256*2 バイト |
注記:
- 単一チャネルのフラグやステータスを含むグローバル変数は 40 バイトの RAM を占有します。
- これは、単一チャネルが使用され、TX/RX バッファ サイズが 128/128 バイトの条件用です。 バッファ サイズはアプリケーションの要件に応じて設定できます。
表 4. アプリケーション コードのリソース占有
- コンパイル環境: MDK-Arm V5.36、ARMCC V5.06 アップデート 7 (ビルド 960)
- 最適化オプション: レベル 2 (-O2)
使用方法
この章では、「Module_UART」アプリケーション コードの環境準備と、コンパイルとテストの手順を紹介します。
環境整備
「Module_UART」アプリケーションコードに必要なハードウェアとソフトウェアは以下のとおりです。
表 5. ハードウェア/ソフトウェア環境の準備
ハードウェア/ソフトウェア | カウント | 注記 |
スターターキット | 1 | このアプリケーション ノートでは、HT32F52352 スターター キットをexとして使用します。ample |
USBケーブル | 1 | マイクロUSB、PCに接続 |
アプリケーションコード | — | ダウンロードパス、 file およびディレクトリ構成については、「リソースのダウンロードと準備」セクションで説明されています。パス: 「\\application\Module_UART\UART_Module_Ex」amp」 |
テラターム | — | 「ターミナルソフトウェア」セクションを参照してください。 |
ケイル・アイデ | — | Keil uVision V5.xx |
まず、UART アプリケーションの導入には、HT32F52352 スターター キットと e-Link32 Lite の仮想 COM ポート (VCP) 機能を組み合わせて使用します。 これには、次の環境準備を実装する必要があります。
- ボードには 32 つの USB インターフェイスがあります。 図 16-(a) に示すように、USB ケーブルを使用して PC とボード上の eLinkXNUMX Lite インターフェイスを接続します。
- アプリケーションコードでは e-Link32 Lite 仮想 COM ポート (VCP) 機能を使用する必要があるため、UART Jumper-J2*2 の PAx*1 と DAP_Tx がジャンパでショートされていることを確認してください。 J2 の位置は図 16-(b) に示されています。
注記
- スターター キットの J2 には、PAx と DAP_Tx の短絡、または PAx と RS232_Tx の短絡の XNUMX つのオプションがあります。 詳しい設定機能についてはスターターキットの取扱説明書を参照してください。
- 異なるスターター キットの MCU UART RX ピンの位置は異なります。 この元ampファイルは PAx を使用して RX ピンを示します。
図 16. HT32 スターター キットのブロック図
e-Link32 Proの仮想COMポート(VCP)機能と組み合わせたユーザーターゲットボードをUARTアプリケーションの導入に使用します。 これには、次の環境準備を実装する必要があります。
- e-Link32 Pro の片側は Mini USB ケーブルを使用して PC に接続され、もう一方の側は 10 ビット グレー ケーブルを介してユーザー ターゲット ボードに接続されます。 ケーブルの SWD インターフェイスとターゲット ボード間の接続は、図 17-(a) に示すように、Dupont ラインを使用して実装されます。
- e-Link32 Pro のシリアル通信ピンは、ピン #7 VCOM_RXD とピン #8-VCOM_TXD です。 これらは、図 17-(b) に示すように、ユーザー ターゲット ボードの TX ピンと RX ピンに接続する必要があります。
図 17. e-Link32 Pro + ユーザー ターゲット ボードのブロック図
コンパイルとテスト
このセクションでは、「application\Module_UART\UART_Module_Ex」を取り上げます。amp元としての「ル」ampコンパイルとテストのプロセスを紹介します。 その前に、前のセクションで説明したすべての準備が実行されていること、および Tera Term ターミナル ソフトウェアがダウンロードされていることを確認してください。
詳細な操作手順を以下にまとめます。
ステップ 1. 電源投入テスト
前のセクションの説明に従ってハードウェア環境をセットアップします。 電源を入れると、スターター キットの左下にある D9 電源 LED が点灯します。 USB エニュメレーションが完了すると、右上の e-Link1 Lite の D32 USB LED が点灯します。 長時間経っても D1 が点灯しない場合は、USB ケーブルが通信できるかどうかを確認してください。 そうでない場合は、取り外して再度挿入してください。
ステップ 2. プロジェクトを生成する
アプリケーション\Module_UART\UART_Module_Ex を開きますampファイルフォルダーで、_CreateProject.bat をクリックします。 file 図 18 に示すように、プロジェクトを生成します。このアプリケーション ノートでは HT32F52352 スターター キットを使用するため、MDK_ARMv52352 フォルダーの下にある Keil IDE プロジェクト「Project_5.uvprojx」を開きます。
図 18. _CreateProject.bat を実行してプロジェクトを生成する
ステップ 3. コンパイルとプログラム
プロジェクトを開いたら、まず「Build」をクリックし(またはショートカット「F7」を使用)、次に「Download」をクリックします(またはショートカット「F8」を使用)。 この後、ビルドとダウンロードの結果が [ビルド出力] ウィンドウに表示されます。 図 19 を参照してください。
図 19. ビルドとダウンロードの結果
ステップ4。 Tera Term ソフトウェアを開き、シリアル ポートを設定します。
Tera Term ソフトウェアと COM ポートを開きます。 スターターキットが生成するCOMポート番号が正しいかどうかに注意してください。 次に、「セットアップ >> シリアル ポート」をクリックして、設定インターフェイスに入ります。 「Module_UART」アプリケーション コードの UART インターフェイス構成については、「ターミナル ソフトウェア」セクションで説明します。 セットアップ結果を図 20 に示します。
図 20. Tera Term シリアル ポートの設定結果
ステップ 5. システムをリセットしてテストする
SK リセット キー – B1 リセットを押します。 この後は「ABCThis is test!」 メッセージは
受信機能に関しては、Tera Term ウィンドウにデータを入力するときに、関連する API を使用して受信バッファ長が決定されます。 PCが受信したデータが21バイトに達すると、受信した5バイトのデータを順次送信します。 図22に示すように、順番に入力されるデータは「1、2、3、4、5」であり、これをAPIを介して受信して決定する。 この後、5回の入力で「22、1、2、3、4」というデータが出力されます。
図 21. 「Module_UART」アプリケーション コードの機能テスト – 送信
図 22. 「Module_UART」アプリケーション コードの機能テスト – 受信
移植の指示
このセクションでは、API をユーザーのプロジェクトに統合する方法を紹介します。
ステップ1。 uart_module.c を追加します file プロジェクトに参加します。 ユーザーフォルダーを右クリックします。 「既存のものを追加」を選択します Files をグループ「ユーザー」に…」を選択し、uart_module.c を選択します。 file 図 23 に示すように、[追加] をクリックします。詳細については、「ディレクトリ構造」セクションを参照してください。 file パスの説明。
図 23. uart_module.c の追加 File 映し出すために
ステップ2。 Ring_buffer.c を追加します。 file プロジェクトに参加します。 ユーザーフォルダーを右クリックします。 「既存のものを追加」を選択します Files をグループ「ユーザー」に…」を選択し、ring_buffer.c を選択します。 file 図 24 に示すように、[追加] をクリックします。\ 詳細については、「ディレクトリ構造」セクションを参照してください。 file パスの説明。
図 24.ring_buffer.c の追加 File 映し出すために
ステップ3。 APIヘッダーを含める file 図 25 に示すように、main.c の先頭に追加します。(拡張子: #include “middleware/uart_module.h”)
図 25. API ヘッダーを含める File main.c へ
ステップ4。 ht32_board_config.hを使用してUART通信に必要な設定を実施します。 file。 「設定の説明」「設定変更とFAQ」で詳しく紹介しています。
設定変更とよくある質問
このセクションでは、UART 設定を変更する方法を紹介し、使用中に発生するいくつかのよくある質問について説明します。
UART ピン割り当ての変更
- HT32F52352 データシートの「ピン割り当て」の章を参照して、デバイス タイプの AFIO 機能をリストした代替機能マッピングの表を調べてください。 UART 関連のピンについては、図 6 に示す「AF26 USART/UART」列を参照してください。
図 26. HT32F52352 代替機能マッピング テーブル
- このステップでは、ユーザーが上記の表を使用して対応する UART ピンを見つけることができます。 HT32F52352 元ampファイルは USART1 をデフォルトのチャネルとして使用します。 ここで、TX ピンと RX ピンは USR1_TX と USR1_RX で、それぞれ PA4 と PA5 にあります。 図 27 にピンの対応と「ht32_board_config.h」のピン定義を示します。 ピン割り当てテーブルの「パッケージ」のフィールドが空である場合は、このパッケージに関連する GPIO が存在しないことを意味します。 UART ピンを変更するには、ターゲットのピンの位置を見つけて、「ht32_board_config.h」を使用してピンを再定義します。 file.
Figure 27. 端子対応と設定変更
UART チャネルを追加する
HT32F52352 HTCFG_UARTM_CH1 を例として取り上げますampここでは、新しい UART チャネルを追加する方法について説明します。
ht32_board_config.h を変更します。 file
HT32F52352 データシートの「ピン割り当て」の章を参照して、デバイス タイプの AFIO 機能をリストした代替機能マッピングの表を調べてください。 USART1 は HTCFG_UARTM_CH0 として使用されているため、新しく追加された HTCFG_UARTM_CH1 は USART0 を選択できます。 ここで、図 2 の上半分に示すように、TX ピンと RX ピンはそれぞれ PA3 と PA28 に配置されています。対応する変更は、図の赤い点線のボックスで示すように、ht120_board_config.h のコード行 126 ~ 32 を使用して実装されます。 28.
図 28. UART チャネルの追加
よくある質問
Q: 「コンパイルとテスト」セクションのステップ 5 では、送信機能テストは正常です。 ここでは、『ABCThis is test!』 メッセージは正常に表示されましたが、受信関数では XNUMX つの入力値が返されず、表示されないのはなぜですか?
A: UART Jumper-J2 の MCU UART RX ピンと DAP_Tx ピンがジャンパを使用して短絡されているかどうかを確認します。 「Module_UART」アプリケーション コードは e-Link32 Lite の仮想 COM ポート (VCP) を使用する必要があるため、図 2 に示すように、UART Jumper-J29 の左側の XNUMX つのピンに短絡設定を適用する必要があります。
図 29. UART ジャンパ J2 設定
Q:その後 「ビルド」(またはショートカット「F7」)を実行すると、ファームウェア ライブラリのバージョンが必要なバージョンよりも古いことを示すエラー メッセージが表示されます。 図 30 を参照してください。
A: 「Module_UART」アプリケーション コードの実装には、uart_module.c/h を含める必要があります。 files には、特定のファームウェア ライブラリ バージョンの要件があります。 このようなエラーメッセージが表示された場合は、現在使用しているファームウェアライブラリのバージョンが古いことを意味します。 したがって、「ファームウェア ライブラリ」セクションにあるリンクから最新バージョンをダウンロードする必要があります。
図 30. ファームウェア ライブラリのバージョンのエラー メッセージ
結論
このドキュメントは、ユーザーが「Module_UART」アプリケーション コードと UART 通信プロトコルをより深く理解できるようにするための基本的な概要を提供します。 続いて、リソースのダウンロードと準備が行われます。 機能の説明の章では、 file ディレクトリ構造、API アーキテクチャ、API の説明、API の使用例ampレス。 「使用説明書」の章では、「Module_UART」アプリケーション コードの環境の準備、コンパイル、テストについて説明しました。 また、コードの移植と変更設定の手順、および遭遇する可能性のあるいくつかの一般的な問題についても説明しました。 これらすべてを組み合わせることで、ユーザーは API の使用方法をすぐに理解できるようになり、使用を開始するまでの時間が短縮されます。
参考資料
詳細については、ホルテックを参照してください。 webサイト: www.holtek.com
バージョンと変更情報
日付 | 著者 | リリース | 変更情報 |
2022.04.30 | 蔡期育(Chi-Yu Tsai) | バージョン1.00 | 最初のバージョン |
免責事項
ここに表示されるすべての情報、商標、ロゴ、グラフィック、ビデオ、オーディオ クリップ、リンク、およびその他のアイテム webサイト (「情報」) は参考用であり、事前の通知なく、Holtek Semiconductor Inc. およびその関連会社 (以下「Holtek」、「会社」、「私たち」、「私たち」または「私たちの」)。 Holtek は、これに関する情報の正確性を確保するよう努めていますが、 webHoltek は、情報の正確性について明示的または黙示的な保証を行いません。 Holtek は、誤りや漏洩について一切の責任を負わないものとします。
Holtek は、本製品の使用または使用に関連して発生したいかなる損害 (コンピューター ウイルス、システムの問題、またはデータ損失を含むがこれらに限定されない) についても責任を負わないものとします。 web任意の当事者によるサイト。 このエリアにリンクがある場合があります。 web他社のサイト。
これら webサイトは Holtek によって管理されていません。 Holtek は、そのようなサイトに表示されるいかなる情報に対しても責任を負うものではなく、保証するものでもありません。 その他へのハイパーリンク webサイトは自己責任です。
責任の制限
いかなる場合も、Holtek Limited は、お客様による本書へのアクセスまたは使用に関連して直接的または間接的に生じたいかなる損失または損害についても、他の当事者に対して責任を負わないものとします。 webサイト、そのコンテンツ、または商品、資料、またはサービス。
準拠法
に含まれる免責事項 webサイトは、中華民国の法律に準拠し、解釈されるものとします。 ユーザーは、中華民国の裁判所の非専属管轄権に服するものとします。
免責事項の更新
Holtek は、事前の通知の有無にかかわらず、いつでも免責事項を更新する権利を留保します。すべての変更は、 webサイト。
ドキュメント / リソース
![]() |
HOLTEK HT32 MCU UART アプリケーション ノート [pdf] ユーザーマニュアル HT32 MCU、UART アプリケーション ノート、HT32 MCU UART、アプリケーション ノート、HT32、MCU UART アプリケーション ノート、HT32 MCU UART アプリケーション ノート |