HOLTEK HT32 MCU UART 應用筆記用戶手冊
HOLTEK HT32 MCU UART應用筆記

介紹

通用異步接收器/發送器 – UART 是一種廣泛使用的串行傳輸接口,可提供靈活的異步全雙工數據傳輸。 本應用筆記中提供的“Module_UART”應用程序代碼使用帶有軟件環形緩衝區的 TX/RX 中斷,通過 API 實現簡單的 UART 發送/接收功能,其相關功能如下所述。 這將簡化整個數據傳輸過程,讓用戶快速理解和實現UART通信應用。

  • 發送/接收功能:字節讀取、字節寫入、緩衝區讀取、緩衝區寫入等。
  • 狀態函數:獲取緩衝區長度、TX狀態等。

本文檔首先介紹UART通信協議,有助於用戶更好地理解UART通信從原理到應用。 接下來是應用代碼所需資源的下載和準備,包括固件庫、應用代碼下載、 file 和目錄配置以及應用筆記中使用的終端軟件工具的介紹。 功能描述章節將介紹應用代碼目錄結構、參數設置和API說明。 API 的使用將使用“Module_UART”應用程序代碼進行描述,並且還將列出 API 所需的閃存/RAM 資源消耗。 使用說明章節將指導用戶完成環境準備、編譯和測試的步驟,以確認應用代碼能夠正常運行。 然後,它將提供說明,解釋如何將 API 集成到用戶的項目中,最後提供修改和可能遇到的常見問題的參考。

使用的縮寫: 

  • UART: 通用異步接收器/發送器
  • 應用程式介面: 應用程式介面
  • 最低標準: 最低有效位
  • 最高分: 最高有效位
  • 個人電腦: 個人電腦
  • SK: 入門套件、HT32 開發板
  • 整合開發環境: 整合開發環境

UART 通訊協議

UART 是一種串行通信類型的接口,它在發送器處實現並串數據轉換,然後與類似的接收器進行串行通信。 接收器在接收到數據後執行串並數據轉換。 圖 1 顯示了串行通信的示意圖,顯示了數據如何按位順序傳輸。 因此,對於發送器和接收器之間的雙向通信,只需要 TX 和 RX 兩條線即可在彼此之間串行傳輸數據。 TX是UART發送串行數據的引腳,連接到接收器的RX引腳。 因此發送器和接收器設備需要交叉連接其TX和RX引腳來進行UART雙向通信,如圖所示 數位 2.

圖 1. 串行通信圖
串行通訊圖

圖 2. UART 電路圖
串口電路圖

UART串行通信時,數據傳輸是異步的。 這意味著發送器和接收器之間沒有時鐘或其他同步信號。 這裡使用波特率,它是串行數據發送/接收的速度,由雙方在數據傳輸之前設置。 另外,在數據包的開頭和結尾添加起始位、停止位等特殊位,構成完整的UART數據包。 圖 3 顯示了 UART 數據包結構,圖 4 顯示了不帶奇偶校驗位的 UART 8 位數據包。
圖 3. UART 數據包結構
UART數據包結構

圖 4. UART 8 位數據包格式
數據包格式
下面按順序介紹UART數據包的各部分。

  • 起始位: 這表示數據包的開始。 在發送開始之前,UART TX 引腳通常保持在高邏輯電平。 如果數據傳輸開始,UART 發送器會將 TX 引腳從高電平拉至低電平,即從 1 拉至 0,然後保持該狀態一個時鐘週期。 當 RX 引腳上檢測到高電平到低電平的轉換時,UART 接收器將開始讀取數據。
  • 數據: 這是實際傳輸的數據,數據長度為7、8或9位。 數據通常首先傳輸 LSB。
  • 奇偶校驗位: 通過數據中邏輯“1”的個數來判斷數據在傳輸過程中是否發生變化。 對於偶校驗,數據中邏輯“1”的總數應為偶數,反之,對於奇校驗,數據中邏輯“1”的總數應為奇數。
  • 停止位: 這表示數據包的結束,UART 發送器會將 TX 引腳從低拉到高,即從 0 拉到 1,然後將其保持 1 或 2 位時間週期。

如前所述,由於UART電路中沒有時鐘信號,因此發送器和接收器之間必須定義相同的串行數據發送/接收速度,即波特率,以實現無差錯傳輸。 波特率由每秒傳輸的位數定義,以 bps(每秒位數)為單位。 一些標準和常用的波特率有4800bps、9600bps、19200bps、115200bps等。傳輸單個數據位所需的相應時間如下所示。
表 1. 波特率與 1 位傳輸時間 

波特率 1 位傳輸 時間
4800bps 208.33微秒
9600bps 104.16微秒
19200bps 52.08微秒
115200bps 8.68微秒

資源下載與準備

本章將介紹應用程序代碼和使用的軟件工具,以及如何配置目錄和 file 小路。

固件庫 

首先,在使用應用代碼之前,請確保已下載 Holtek HT32 固件庫。 下載鏈接如下所示。 這裡有兩個選項,HT32F0xxxx 系列的為 HT32_M5p_Vyyyymmdd.zip,HT32F3xxxx 系列的為 HT32_M1_Vyyyymmdd.zip。 下載並解壓所需的 file.

拉鍊 file 包含幾個文件夾,可分為Document、Firmware Library、Tools等項,其放置路徑如圖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 通常包含一個或多個文件夾,如application、library等,如圖7所示。將application文件夾放在HT32固件庫根目錄下即可完成 file 路徑配置,如圖8所示。或者,將應用程序代碼和HT32固件庫同時解壓到同一路徑中,以達到相同的配置結果。

圖 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip 內容
內容

圖 8. 解壓路徑
減壓路徑

終端軟件
應用程序代碼可以通過COM端口傳輸消息來實現功能選擇或狀態顯示。 這就需要主機端提前安裝好終端軟件。 用戶可以選擇合適的連接軟件,也可以使用Tera Term等免費許可軟件。 在應用代碼中,UART通道配置為字長8位、無奇偶校驗、1個停止位、波特率115200bps。

功能說明

本章將提供應用程序代碼的功能描述,包括目錄結構、API架構、設置描述等信息

目錄結構
申請代碼 file 包含一個應用程序文件夾。 下一層是“Module_UART”文件夾,其中包含兩個應用程序“UART_Module_Ex”ample”和“UART_Bridge”。 相關的 file下面列出並描述了這些。
表 2. 應用程序代碼目錄結構

文件夾 / File 姓名 描述
\\應用程序\Module_UART\UART_Module_Example*1
_創建項目.bat 用於創建項目的批處理腳本 files
_ProjectSource.ini 初始化 file 用於將源代碼添加到項目中
ht32_board_config.h 設定 file 與IC外圍I/O分配相關
ht32fxxxxx_01_it.c 中斷服務程序 file
主文件 主程序源碼
\\應用程序\Module_UART\UART_Bridge*2
_創建項目.bat 用於創建項目的批處理腳本 files
_ProjectSource.ini 初始化 file 用於將源代碼添加到項目中
ht32_board_config.h 設定 file 與IC外圍I/O分配相關
ht32fxxxxx_01_it.c 中斷服務程序 file
主文件 主程序源碼
uart_bridge.h uart_bridge.c UART 橋接頭 file 和源代碼 file
\\實用程序\中間件
串口模塊.h*3 串口模塊.c*3 API頭 file 和源代碼 file
\\實用程序\通用
ringbuffer.hring_buffer.c 軟件環形緩衝區標頭 file 和源代碼 file

筆記: 

  1. 在“UART_Module_Example”應用程序代碼中,API讀寫操作都是以環回的方式進行的,參見“API使用示例”amples”部分了解更多詳細信息。
  2.  在“UART_Bridge”應用程序代碼中,激活了兩個 UART 通道 UART CH0 和 UART CH1,並通過 COMMAND 結構在兩個 UART 設備之間實現自定義通信協議。 欲了解更多信息,請參閱“API使用示例”amples”部分。
  3. 應用程序代碼需要使用uart_module.c/h file有固件庫版本要求的。 要求可能會根據更新而隨時更改。 要確認當前固件庫版本要求,請在main.c中搜索關鍵字“Dependency check”參考依賴檢查內容 file。 如果固件庫版本不滿足要求,請從“固件庫”部分提供的鏈接下載最新版本。

API架構
每個API都有一個重要的參數CH,即UART Channel。 這決定了要控制哪個 UART 通道。 目前最多支持四個 UART 通道,因此四個常量符號定義如下。 這些用作參數 CH,為 API 提供控制基礎。

  • UARTM_CH0:輸入參數——控製或配置UART CH0
  • UARTM_CH1:輸入參數——控製或配置UART CH1
  • UARTM_CH2:輸入參數——控製或配置UART CH2
  • UARTM_CH3:輸入參數——控製或配置UART CH3

如果只使用一個UART通道,不會浪費內存空間。 這是因為支持的 UART 通道數量是可以設置的,未使用的 UART 通道代碼將被預處理器刪除以增加可用內存空間。 API架構如圖所示 圖9.

圖 9. API 架構框圖
架構框圖

每個API由四組UART通道相關的設置或控件組成,用戶只需輸入所需的CH參數即可。 配置相關API只需要額外增加一個UART基本配置參數表,結構形式為USART_InitTypeDef。 API將根據表中參數內容進行UART基本配置。 UART 基本配置結構表請參見“API 說明”部分。

uart_module.c/.h fileht32_board_config.h 只包含每個 UART 通道的中斷(CHx_IRQ)和狀態表(CHx Status),而 UART 通信所需的所有設置均由 ht32_board_config.h 提供。 htXNUMX_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 緩衝區大小; 前任amp樂:128
HTCFG_UARTM0_RX_BUFFER_SIZE 定義CH0的RX緩衝區大小; 前任amp樂:128

要修改 UART 通道 AFIO 配置,請參閱相關器件數據表。 目前只有 UART CH0 的 I/O 定義生效,因為 ht0_board_config.h 中只配置了 UART CH32。 添加 UART CH1~3 時,需要參考 UART CH0 定義或參考“設置修改及常見問題”部分完成其 I/O 定義。

API架構主要有以下三個特點: 

  1. 最多支持四個 UART 通道。 它們的輸入參數是UARTM_CH0、UARTM_CH1、UARTM_CH2和UARTM_CH3。
  2.  UART通道數可設置,未使用的通道不會減少可用內存空間。
  3. 所有 UART 設置和 I/O 定義與 API 完全分離。 這增加了設置值的管理便利性,並減少了錯誤或丟失設置的可能性。

設定說明 

本節將介紹ht32_board_config.h和uart_module.h中的參數設置 files.

  1. ht32_board_config.h:這個 file 用於引腳定義和開發板相關設置,其中包括 Starter Kit (SK) 使用的 UART IP 通道(UART0、UART1、USART0…)、相應的 TX/RX 引腳位置和 TX/RX 緩衝區大小。 圖 10 顯示了 HT32F52352 Starter Kit 的設置內容。 根據開發的功能集成,用戶可以參考所用器件數據手冊的“引腳分配”部分來實現引腳定義。 有關設置修改的更多詳細信息將在“設置修改和常見問題解答”部分中介紹。
    圖 10. ht32_board_config.h 設置(HT32F52352)
    設定
  2. 串口模塊.h: 這是 API 標頭 file 應用程序代碼使用的內容,包括相關的默認設置、函數定義等。如圖11所示,默認設置內容可以被外部配置覆蓋,例如ht32_board_config.h中的設置 file.
    圖 11. uart_module.h 中的默認設置
    預設設定
接口說明
  1. 應用程序代碼數據類型描述。
    • USART_InitTypeDef
      這是UART基本配置結構,由BaudRate、WordLength、StopBits、Parity和Mode配置組成,如下所示。
      多變的 姓名 類型 描述
      USART_波特率 u32 UART通訊波特率
      USART_WordLength u16 UART通信字長:7、8或9位
      USART_StopBits u16 UART通信停止位長度:1或2位
      USART_奇偶校驗 u16 UART 通信奇偶校驗:偶數、奇數、標記、空格或無奇偶校驗
      USART_模式 u16 UART通訊方式; API僅支持普通模式
  2. 在使用API​​函數之前,請在主程序中完成UART的基本配置。 該應用代碼的UART基本配置如圖12所示。這里波特率為115200bps,字長為8位,停止位長度為1位,並且沒有奇偶校驗。
    圖 12. UART 基本配置
    基本配置
  3. 圖 13 顯示了 uart_module.h 中聲明的 API 函數 file。 下表解釋了API函數的功能、輸入參數和使用方法。
    圖 13. uart_module.h 中的 API 函數聲明 
    API函數聲明
姓名 void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
功能 UART模塊初始化
  輸入 CH 串口通道
pUART_初始化 UART基本配置結構體指針
 uRx超時值 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 串口通道
數據 要寫入的數據
輸出 成功 成功的
錯誤 失敗的
用法 UARTM_WriteByte(UARTM_CH0, 'A'); //UART寫入1個字節-'A'
姓名 u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
功能 UART模塊寫操作(TX)
 輸入 CH 串口通道
緩衝區 緩衝區指針
u長度 待寫入數據的長度
輸出 成功 成功的
錯誤 失敗的
 用法 u8 Test[] = “這是測試!\r\n”; UARTM_Write(UARTM_CH0, 測試, sizeof(測試) -1); //UART寫入pBuffer數據
姓名 u32 UARTM_ReadByte(u32 CH, u8 *pData)
功能 UART模塊讀字節操作(RX)
輸入 CH 串口通道
數據 放置讀取數據的地址
輸出 成功 成功的
錯誤 失敗(無數據)
   用法 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 串口通道
緩衝區 緩衝區指針
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 中文)
功能 獲取讀緩衝區長度(RX)
輸入 CH 串口通道
輸出 u長度 讀緩衝區長度
  用法 UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART模塊初始化 while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//等待,直到UARTM_ReadBuffer接收到5個字節的數據
姓名 u32 UARTM_GetWriteBufferLength(u32 中文)
功能 獲取寫緩衝區長度(TX)
輸入 CH 串口通道
輸出 u長度 寫緩衝區長度
姓名 u8 UARTM_IsTxFinished(u32 中文)
功能 獲取TX狀態
輸入 CH 串口通道
輸出 真的 TX狀態:已完成
錯誤的 TX狀態:未完成
      用法 UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 required while (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //該API可用於檢查TX狀態,如上所示; 等待UARTM_WriteByte() API完成,即TX狀態為TRUE,然後繼續後續操作。//添加一個限制,因為直到uart_module.c中的SVN版本號為525時才添加該函數。
姓名 空白 UARTM_DiscardReadBuffer(u32 中文)
功能 丟棄讀緩衝區中的數據
輸入 CH 串口通道

API 使用示例amp萊斯 

本節將演示 API 寫入和讀取 examp使用初始化過程的“Module_UART”應用程序代碼的文件和“UART_Module_Example”應用程序代碼過程。 在使用API​​之前,用戶需要包含API標頭 file 進入主程序源碼 file (#include“中間件/uart_module.h”)。

如圖14所示,進入初始化流程時,首先定義UART基本配置結構。 然後配置UART基本配置結構體成員,包括BaudRate、WordLength、StopBits、Parity和Mode。 最後調用API初始化函數,該函數完成即表示初始化過程結束。 此後用戶可以根據預設的UART基本配置繼續進行寫入和讀取操作。

圖 14. 初始化流程圖
初始化流程圖

“UART_Module_Example”應用程序代碼演示了以環回方式進行的API讀寫操作。 其流程圖如圖 15 所示。使用的 API 函數包括 UARTM_WriteByte()、UARTM_Write()、UARTM_ReadByte()、UARTM_Read() 和 UARTM_GetReadBufferLength()。 它們的描述在“API 描述”部分中提供。

圖 15. 寫入和讀取 Ex 的流程圖amp萊斯
寫入和讀取Ex的流程圖amp萊斯

“Module_UART”文件夾下還有一個“UART_Bridge”應用程序代碼,其相關 file 描述在“目錄結構”部分介紹。 “UART_Bridge”應用程序代碼激活兩個UART通道,UART CH0和UART CH1,然後通過COMMAND結構gCMD1和gCMD2定制兩個UART設備之間的通信協議。 這些在uart_bridge.c中定義,如下所示。 UARTBridge_CMD1TypeDef gCMD1:

多變的 姓名 類型 描述
u標頭 u8 標頭
指令 u8 命令
數據[3] u8 數據

UARTBridge_CMD2TypeDef gCMD2:

多變的 姓名 類型 描述
u標頭 u8 標頭
uCmdA u8 命令A
微分貝 u8 命令B
數據[3] u8 數據

在“UART_Bridge”應用程序代碼中,使用gCMD1接收數據作為命令包,然後進行分析。 然後根據定制的通信協議,將gCMD2設置為響應包並發送。 以下是前amp命令包gCMD1)和響應包(gCMD2)的文件。 命令包(UARTBridge_CMD1TypeDef gCMD1):

字節 0 字節 1 字節 2 ~ 字節 4
u標頭 指令 數據[3]
“一個” “1” “x、y、z”

響應數據包(UARTBridge_CMD2TypeDef gCMD2):

字節 0 字節 1 字節 2 字節 3 ~ 字節 5
u標頭 uCmdA 微分貝 數據[3]
“B” “一個” “1” “x、y、z”

資源佔用
以 HT32F52352 為例amp下圖是UART模塊佔用的資源。

HT32F52352
ROM 大小 946 位元組
記憶體大小 40*1 + 256*2 位元組

筆記:

  1. 包括單個通道的標誌和狀態在內的全局變量佔用 40 字節的 RAM。
  2.  這是針對使用單通道且 TX/RX 緩衝區大小為 128/128 字節的情況。 緩衝區大小可以根據應用需求設置。

表4. 應用代碼資源佔用情況 

  • 編譯環境: MDK-Arm V5.36、ARMCC V5.06 更新 7(內部版本 960)
  • 優化選項: 2 級 (-O2)

使用說明

本章將介紹“Module_UART”應用程序代碼的環境準備,以及編譯和測試步驟。

環境準備
下面列出了“Module_UART”應用程序代碼所需的硬件和軟件。
表 5. 硬件/軟件環境準備 

硬體/軟體 數數 筆記
入門套件 1 本應用筆記使用 HT32F52352 入門套件作為前ample
USB 線 1 Micro USB,連接至 PC
申請代碼 下載路徑, file 以及目錄配置在“資源下載與準備”一節中介紹。路徑:“\\application\Module_UART\UART_Module_Examp樂”
太拉術語 請參閱“終端軟件”部分
凱爾集成開發環境 Keil uVision V5.xx

首先,使用 HT32F52352 Starter Kit 結合 e-Link32 Lite 的 Virtual COM Port (VCP) 功能進行 UART 應用介紹。 這需要實施以下環境準備:

  1. 板上有兩個USB接口。 使用USB線連接PC和開發板上的eLink32 Lite接口,如圖16-(a)所示。
  2. 由於應用程序代碼需要使用e-Link32 Lite Virtual COM Port (VCP)功能,請確保UART Jumper-J2*2的PAx*1和DAP_Tx已使用跳線短接。 J2 位置如圖 16-(b) 所示。

筆記

  1. 入門套件上的 J2 有兩個選項:PAx 和 DAP_Tx 短接或 PAx 和 RS232_Tx 短接。 詳細設置功能請參見Starter Kit用戶手冊。
  2. 不同入門套件上的 MCU UART RX 引腳位置不同。 這個前任ample 使用 PAx 來指示 RX 引腳。

圖 16. HT32 入門套件框圖
套件框圖

現在使用用戶目標板結合e-Link32 Pro的虛擬COM端口(VCP)功能進行UART應用介紹。 這需要實施以下環境準備:

  1. e-Link32 Pro 的一側使用 Mini USB 電纜連接到 PC,另一側通過其 10 位灰色電纜連接到用戶目標板。 電纜的SWD接口與目標板的連接採用杜邦線實現,如圖17-(a)所示。
  2. e-Link32 Pro 的串行通信引腳為 Pin#7 VCOM_RXD 和 Pin#8-VCOM_TXD。 這些應連接到用戶目標板的 TX 和 RX 引腳,如圖 17-(b) 所示。
    圖 17. e-Link32 Pro + 用戶目標板框圖
    用戶目標板

編譯與測試
本節將採用“application\Module_UART\UART_Module_Example”作為前任ample 介紹編譯和測試過程。 在此之前,請確保上一節所述的所有準備工作均已完成,並且Tera Term終端軟件已下載。

詳細操作步驟總結如下。
步驟1. 上電測試

按照上一節所述設置硬件環境。 上電後,入門套件左下角的 D9 電源 LED 會亮起。 USB 枚舉完成後,e-Link1 Lite 右上角的 D32 USB LED 將亮起。 如果長時間後D1不亮,請確認USB線是否能夠通訊。 如果沒有,請將其取出並重新插入。

步驟2.生成項目
打開應用程序\Module_UART\UART_Module_Examp文件文件夾,單擊_CreateProject.bat file 生成工程,如圖 18 所示。由於本應用筆記使用 HT32F52352 Starter Kit,請打開位於 MDK_ARMv52352 文件夾下的 Keil IDE 工程“Project_5.uvprojx”。

圖 18. 執行 _CreateProject.bat 生成項目
生成項目

步驟3.編譯和編程
項目打開後,首先單擊“Build”(或使用快捷鍵“F7”),然後單擊“Download”(或使用快捷鍵“F8”)。 此後,構建和下載結果將顯示在“構建輸出”窗口中。 參見圖 19。

圖 19. 構建和下載結果
構建並下載結果

步驟4。 打開Tera Term軟件並配置串口
打開 Tera Term 軟件和 COM 端口。 請注意Starter Kit生成的COM端口號是否正確。 然後點擊“設置>>串口”進入配置界面。 “Module_UART”應用程序代碼的 UART 接口配置在“終端軟件”部分中描述。 設置結果如圖 20 所示。

圖 20. Tera Term 串行端口設置結果
設置結果
步驟5.重置系統並測試
按 SK 重置鍵 – B1 重置。 之後,會出現“ABCThis is test!” 消息將是
通過API傳輸,並顯示在Tera Term窗口中,如圖21所示。關於接收功能,在Tera Term窗口中輸入數據時,將使用相關API來確定接收緩衝區長度。 當PC接收到的數據達到5個字節時,將接收到的5個字節的數據依次發送出去。 如圖22所示,依次輸入的數據為“1、2、3、4、5”,通過API接收並確定。 此後,五次輸入後將打印數據“1”。

圖 21.“Module_UART”應用代碼功能測試 – 發送
應用程序代碼功能測試

圖 22.“Module_UART”應用代碼功能測試 – 接收
應用程序代碼功能測試

移植說明
本節將介紹如何將API集成到用戶的項目中。
步驟1。 添加uart_module.c file 進入項目。 右鍵單擊用戶文件夾。 選擇“添加現有 Files to Group 'User'...”,然後選擇 uart_module.c file 點擊“添加”,如圖23所示。詳細信息請參見“目錄結構”部分 file 路徑描述。

圖 23. 添加 uart_module.c File 項目
File 項目

步驟2。 添加ring_buffer.c file 進入項目。 右鍵單擊用戶文件夾。 選擇“添加現有 Files to Group 'User'...”,然後選擇ring_buffer.c file 點擊“添加”,如圖24所示。\參考“目錄結構”部分了解 file 路徑描述。
圖 24. 添加ring_buffer.c File 項目 
File 項目

步驟3。 包含 API 標頭 file 進入 main.c 的開頭,如圖 25 所示。(Ext:#include “middleware/uart_module.h”)
圖 25. 包含 API 標頭 File 到main.c
包含 API 標頭 File

步驟4。 使用 ht32_board_config.h 實現 UART 通信所需的設置 file。 在“設置說明”和“設置修改及常見問題”部分有詳細介紹。

設置修改及常見問題解答 

本節將介紹如何修改UART設置並解釋使用過程中遇到的一些常見問題。

更改 UART 引腳分配 

  1. 參考 HT32F52352 Datasheet“Pin Assignment”一章,查找備用功能映射表,其中列出了該器件類型的 AFIO 功能。 UART相關管腳請參見“AF6 USART/UART”欄目,如圖26所示。
    圖 26. HT32F52352 復用功能映射表
    復用功能映射表
  2. 此步驟將引導用戶使用上表找到相應的 UART 引腳。 HT32F52352 前ample 使用 USART1 作為默認通道。 這裡,TX和RX引腳是USR1_TX和USR1_RX,分別位於PA4和PA5上。 圖 27 顯示了引腳對應關係以及“ht32_board_config.h”中的引腳定義。 引腳分配表中“Package”字段為空表示該封裝中沒有相關的 GPIO。 要修改 UART 引腳,請找到目標引腳位置並使用“ht32_board_config.h”重新定義引腳 file.
    圖 27. 引腳對應關係和設置修改
    設置修改

添加 UART 通道
以HT32F52352 HTCFG_UARTM_CH1為前身amp文件中,介紹瞭如何添加新的UART通道。

修改ht32_board_config.h file
參考 HT32F52352 Datasheet“Pin Assignment”一章,查找備用功能映射表,其中列出了該器件類型的 AFIO 功能。 由於USART1已用作HTCFG_UARTM_CH0,因此新添加的HTCFG_UARTM_CH1可以選擇USART0。 這裡,TX和RX引腳分別位於PA2和PA3上,如圖28上半部分所示。使用ht120_board_config.h中的126~32行代碼實現相應的修改,如圖28中紅色虛線框所示XNUMX.

圖 28. 添加 UART 通道
串口通道

常見問題解答
Q: 在編譯和測試部分的第5步中,發送功能測試正常。 在這裡,“ABCThis is test!” 消息已經成功顯示,但是對於接收函數,為什麼五個輸入值沒有返回並顯示?
A: 檢查UART跳線-J2的MCU UART RX和DAP_Tx引腳是否已通過跳線短接。 由於“Module_UART”應用程序代碼需要使用e-Link32 Lite的虛擬COM端口(VCP),因此應將短路設置應用於UART跳線-J2的左側兩個引腳,如圖29所示。

圖 29. UART 跳線 J2 設置
串口跳線

問:之後 執行“Build”(或快捷鍵“F7”)時,出現錯誤消息,提示固件庫版本比所需版本舊? 參見圖 30。
A: “Module_UART”應用程序代碼的實現需要包含uart_module.c/h file對某個固件庫版本有要求的。 當出現這樣的錯誤信息時,說明當前使用的固件庫是舊版本。 因此,有必要通過“固件庫”部分中提供的鏈接下載最新版本。

圖 30. 固件庫版本錯誤消息
版本錯誤信息

結論

本文檔提供了基本介紹,以幫助用戶更好地了解“Module_UART”應用程序代碼和 UART 通信協議。 接下來是資源下載和準備。 功能描述章節介紹了 file 目錄結構、API架構、API描述和API使用示例amp萊斯。 使用說明章節演示了“Module_UART”應用代碼的環境準備、編譯和測試。 還提供了代碼移植和修改設置的說明以及可能遇到的一些常見問題的解釋。 所有這些結合起來將使用戶能夠快速了解如何使用 API,從而減少上手時間。

參考資料

欲了解更多信息,請參閱盛群 web網址:www.holtek.com

版本和修改信息

日期 作者 發布 修改信息
2022.04.30 蔡期育(Chi-Yu Tsai) V1.00 第一版

免責聲明

出現在此的所有信息、商標、徽標、圖形、視頻、音頻剪輯、鏈接和其他項目 web網站(“信息”)僅供參考,如有更改,恕不另行通知,並由 Holtek Semiconductor Inc. 及其關聯公司(以下簡稱“Holtek”、“公司”、“我們”、“我們'或'我們的')。 雖然 Holtek 努力確保此信息的準確性 web網站,Holtek 不對信息的準確性作出任何明示或暗示的保證。 Holtek 對任何錯誤或洩漏不承擔任何責任。
Holtek 對因使用或與使用本產品有關的任何損害(包括但不限於計算機病毒、系統問題或數據丟失)不承擔任何責任。 web任何一方的網站。 該區域可能有鏈接,可讓您訪問 web其他公司的網站。
這些 web網站不受盛群控制。 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 應用筆記

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *