HOLTEK HT32 MCU UART Application Note Manwal sa Gumagamit
HOLTEK HT32 MCU UART Application Note

Pasiuna

Ang Universal Asynchronous Receiver/Transmitter - Ang UART kay kaylap nga gigamit nga serial transmission interface nga naghatag ug flexible asynchronous full-duplex data transmission. Ang "Module_UART" nga kodigo sa aplikasyon nga gihatag niini nga nota sa aplikasyon naggamit sa TX/RX nga mga interrupt sa software ring buffers aron ipatuman ang yano nga UART nga pagpadala/pagdawat sa mga gimbuhaton pinaagi sa mga API, kansang mga may kalabutan nga mga gimbuhaton gihulagway sa ubos. Kini mopasimple sa tibuok proseso sa pagpasa sa datos ug motugot sa mga tiggamit sa dali nga pagsabot ug pagpatuman sa mga aplikasyon sa komunikasyon sa UART.

  • Pagpadala / pagdawat mga function: byte read, byte write, buffer read, buffer write, etc.
  • Mga gimbuhaton sa kahimtang: makuha ang gitas-on sa buffer, kahimtang sa TX, ug uban pa.

Kini nga dokumento una nga magpaila sa protocol sa komunikasyon sa UART, nga makatabang sa mga tiggamit nga mas masabtan ang komunikasyon sa UART gikan sa prinsipyo hangtod sa aplikasyon. Gisundan kini sa pag-download ug pag-andam sa mga kapanguhaan nga gikinahanglan alang sa code sa aplikasyon, lakip ang librarya sa firmware, pag-download sa code sa aplikasyon, file ug directory configuration ingon man usa ka pasiuna sa terminal software tool nga gigamit sa application note. Sa Functional Description nga kapitulo, ang application code directory structure, parameter settings ug API description ipaila. Ang paggamit sa API ihulagway gamit ang "Module_UART" nga code sa aplikasyon ug ang Flash/RAM nga konsumo sa kapanguhaan nga gikinahanglan alang sa mga API ilista usab. Ang kapitulo sa Mga Instruksyon sa Paggamit mogiya sa tiggamit pinaagi sa mga lakang sa pag-andam sa kalikopan, pag-compile ug pagsulay aron makumpirma nga ang code sa aplikasyon molihok sa husto. Maghatag dayon kini og mga panudlo nga nagpatin-aw kung giunsa ang pag-integrate sa mga API sa mga proyekto sa tiggamit ug sa katapusan maghatag usa ka pakisayran alang sa mga pagbag-o ug sagad nga mga problema nga mahimong masugatan.

Gigamit nga mga pagmubu: 

  • UART: Universal Asynchronous Receiver/Transmitter
  • API: Aplikasyon Programming Interface
  • LSB: Labing Gamay nga Importante nga Bit
  • MSB: Labing Mahinungdanon nga Bitaw
  • PC: Personal nga Kompyuter
  • SK: Starter Kit, HT32 development board
  • IDE: Integrated Development Environment

UART Communication Protocol

Ang UART usa ka serial communication nga tipo sa interface nga nagpatuman sa parallel-to-serial data conversion sa transmitter niini ug dayon nakig-estorya sa usa ka susama nga receiver. Ang tigdawat dayon naghimo sa usa ka serial-to-parallel nga pagkakabig sa datos pagkahuman sa pagdawat sa datos. Ang Figure 1 nagpakita sa usa ka schematic diagram sa serial communication nga nagpakita kung giunsa ang data gibalhin sa usa ka bitwise order. Busa alang sa bidirectional nga komunikasyon tali sa transmitter ug receiver, duha lamang ka wire, TX ug RX, ang gikinahanglan nga magbalhin sa data nga serially tali sa usag usa. Ang TX mao ang pin diin ang UART nagpadala sa serial data ug konektado sa RX pin sa receiver. Busa ang transmitter ug receiver nga mga device kinahanglang mag-cross-connect sa ilang TX ug RX pins aron mahimo ang UART two-way communication, sama sa gipakita sa Hulagway 2.

Hulagway 1. Serial Communication Diagram
Serial Communication Diagram

Figure 2. UART Circuit Diagram
UART Circuit Diagram

Atol sa UART serial communication, ang data transmission kay asynchronous. Kini nagpasabot nga walay orasan o uban pang signal sa pag-synchronize tali sa transmitter ug receiver. Dinhi gigamit ang baud rate, nga mao ang serial data nga nagpadala/nagdawat sa gikusgon ug nga gitakda sa duha ka kilid sa wala pa ang pagbalhin sa datos. Dugang pa, ang mga espesyal nga piraso sama sa pagsugod ug paghunong nga mga bit idugang sa sinugdanan ug katapusan sa pakete sa datos aron maporma ang usa ka kompleto nga pakete sa datos sa UART. Ang Figure 3 nagpakita sa UART data packet structure samtang ang Figure 4 nagpakita sa UART 8-bit data packet nga walay parity bit.
Figure 3. UART Data Packet Structure
UART Data Packet Structure

Figure 4. UART 8-bit Data Packet Format
Format sa Pakete sa Data
Ang matag bahin sa UART data packet gipaila sa han-ay sa ubos.

  • Pagsugod Bit: Kini nagpakita sa pagsugod sa usa ka data packet. Ang UART TX pin kasagarang magpabilin sa taas nga lebel sa lohika sa dili pa magsugod ang transmission. Kung magsugod ang pagpasa sa data, ang UART transmitter mobira sa TX pin gikan sa taas ngadto sa ubos, ie, gikan sa 1 ngadto sa 0, ug dayon ibutang kini didto sulod sa usa ka siklo sa orasan. Ang tigdawat sa UART magsugod sa pagbasa sa datos kung ang usa ka taas ngadto sa ubos nga transisyon nakit-an sa RX pin.
  • Data: Kini ang aktuwal nga datos nga gibalhin, nga adunay gitas-on sa datos nga 7, 8 o 9 ka bit. Ang datos kasagarang ibalhin sa LSB una.
  • Parity Bit: Ang gidaghanon sa lohika nga "1" sa datos gigamit aron mahibal-an kung adunay bisan unsang datos nga nausab sa panahon sa transmission. Para sa parehas nga parity, ang kinatibuk-ang ihap sa logic "1" sa data kinahanglan nga usa ka even nga numero, sukwahi, ang kinatibuk-ang gidaghanon sa logic "1" sa data kinahanglan usa ka odd nga numero para sa odd parity.
  • Hunong Bit: Kini nagpaila sa katapusan sa usa ka data packet, diin ang UART transmitter mobira sa TX pin gikan sa ubos ngadto sa taas, ie, gikan sa 0 ngadto sa 1, ug dayon ibutang kini didto sulod sa 1 o 2-bit nga yugto sa panahon.

Sama sa nahisgotan na, tungod kay walay signal sa orasan sa UART circuit, ang parehas nga serial data nga nagpadala/nagdawat sa gikusgon, nga nailhan nga baud rate, kinahanglang ipasabot tali sa transmitter ug receiver aron mapatuman ang walay sayop nga transmission. Ang baud rate gihubit pinaagi sa gidaghanon sa mga bit nga gibalhin kada segundo, sa bps (bit kada segundo). Ang ubang mga standard ug kasagarang gigamit nga baud rates mao ang 4800bps, 9600bps, 19200bps, 115200bps, ug uban pa. Ang katugbang nga oras nga gikinahanglan alang sa pagbalhin sa usa ka data bit gipakita sa ubos.
Talaan 1. Baud Rate kumpara sa 1-Bit Transmission Time 

Baud Rate 1-Bit nga Transmission Panahon
4800bps 208.33µs
9600bps 104.16µs
19200bps 52.08µs
115200bps 8.68µs

Pag-download ug Pag-andam sa Kapanguhaan

Kini nga kapitulo magpaila sa code sa aplikasyon ug sa software tool nga gigamit, ingon man kung giunsa ang pag-configure sa direktoryo ug file dalan.

Firmware Library 

Una, siguroha nga ang Holtek HT32 firmware library na-download na sa dili pa gamiton ang application code. Ang link sa pag-download gipakita sa ubos. Dinhi adunay duha ka kapilian, HT32_M0p_Vyyyymmdd.zip para sa HT32F5xxxx series ug HT32_M3_Vyyyymmdd.zip para sa HT32F1xxxx series. I-download ug i-unzip ang gusto file.

Ang zip file adunay daghang mga folder nga mahimong maklasipikar ingon Dokumento, Firmware Library, Mga Himan ug uban pang mga butang, ang agianan sa pagbutang nga gipakita sa Figure 5. Ang HT32 firmware library zip file uban sa a file ngalan sa HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip nahimutang ubos sa Firmware_Library folder.

Hulagway 5. HT32_M0p_Vyyyymmdd.zip Mga sulod
Mga sulod

Kodigo sa Aplikasyon
I-download ang application code gikan sa mosunod nga link. Ang code sa aplikasyon giputos sa usa ka zip file uban sa a file ngalan sa HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Tan-awa Hulagway 6 para sa file mga kombensiyon sa ngalan.

Hulagway 6. Application Code File Pagpaila sa Ngalan 

Download link: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Kodigo sa Aplikasyon

File ug Directory Configuration
Ingon nga ang aplikasyon code wala naglangkob sa HT32 firmware librarya files, ang code sa aplikasyon ug ang librarya sa firmware gi-unzip files kinahanglan nga ibutang sa husto nga dalan sa dili pa magsugod sa compilation. Ang aplikasyon code zip file kasagaran adunay usa o daghan pa nga mga folder, sama sa aplikasyon ug librarya, sama sa gipakita sa Figure 7. Ibutang ang folder sa aplikasyon ubos sa HT32 firmware library root directory aron makompleto ang file path configuration, sama sa gipakita sa Figure 8. Sa laing paagi, unzip ang application code ug HT32 firmware library dungan ngadto sa samang dalan aron makab-ot ang samang resulta sa configuration.

Hulagway 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Mga sulod
Mga sulod

Figure 8. Decompression Path
Decompression nga Dalan

Terminal Software
Ang code sa aplikasyon mahimong magbalhin sa mga mensahe pinaagi sa COM port aron ipatuman ang pagpili sa function o pagpakita sa status. Nagkinahanglan kini sa host side nga ma-install daan ang terminal software. Ang mga tiggamit makapili ug angay nga software sa koneksyon, o mogamit ug libre nga lisensyado nga software sama sa Tera Term. Sa code sa aplikasyon, ang channel sa UART gi-configure nga adunay gitas-on sa pulong nga 8-bits, walay parity, 1 stop bit ug baud rate nga 115200bps.

Functional nga Deskripsyon

Kini nga kapitulo maghatag usa ka magamit nga paghulagway alang sa code sa aplikasyon, lakip ang kasayuran sa istruktura sa direktoryo, arkitektura sa API, paghulagway sa setting, ug uban pa

Istruktura sa Direktoryo
Ang code sa aplikasyon file adunay usa ka folder sa aplikasyon. Ang sunod nga layer mao ang "Module_UART" folder nga adunay duha ka mga programa sa aplikasyon, "UART_Module_Example" ug "UART_Bridge". Ang may kalabutan files gilista ug gihulagway sa ubos.
Talaan 2. Aplikasyon Code Direktoryo Structure

Folder / File Ngalan Deskripsyon
\\aplikasyon\Module_UART\UART_Module_Example*1
_CreateProject.bat Batch nga mga script alang sa paghimo sa proyekto files
_ProjectSource.ini Pagsugod file alang sa pagdugang sa source code sa mga proyekto
ht32_board_config.h Setup file nga may kalabutan sa IC peripheral I/O assignment
ht32fxxxxx_01_it.c Interrupt service nga programa file
panguna.c Panguna nga program source code
\\aplikasyon\Module_UART\UART_Bridge*2
_CreateProject.bat Batch nga mga script alang sa paghimo sa proyekto files
_ProjectSource.ini Pagsugod file alang sa pagdugang sa source code sa mga proyekto
ht32_board_config.h Setup file nga may kalabutan sa IC peripheral I/O assignment
ht32fxxxxx_01_it.c Interrupt service nga programa file
panguna.c Source code sa nag-unang programa
uart_bridge.h uart_bridge.c UART bridge header file ug source code file
\\ utility\middleware
uart_module.h*3 uart_module.c*3 API header file ug source code file
\\ mga utility\komon
ringbuffer.h ring_buffer.c Software ring buffer header file ug source code file

Mubo nga sulat: 

  1. Sa "UART_Module_Example" nga code sa aplikasyon, ang mga operasyon sa pagbasa ug pagsulat sa API gihimo sa usa ka loopback nga paagi, nagtumong sa "API Usage Examples” nga seksyon alang sa dugang mga detalye.
  2.  Sa code sa aplikasyon nga "UART_Bridge", duha ka channel sa UART, UART CH0 ug UART CH1, ang gi-activate, ug ang custom communication protocol pinaagi sa COMMAND structures gipatuman tali sa duha ka UART device. Para sa dugang nga impormasyon, tan-awa ang “API Usage Examples" nga seksyon.
  3. Ang kodigo sa aplikasyon kinahanglang mogamit sa uart_module.c/h files nga adunay gikinahanglan nga bersyon sa librarya sa firmware. Ang kinahanglanon mahimong usbon matag karon ug unya sumala sa pag-update. Aron makumpirma ang karon nga kinahanglanon sa bersyon sa librarya sa firmware, tan-awa ang sulud sa pagsusi sa dependency pinaagi sa pagpangita sa keyword nga "Pagsusi sa pagsalig" sa main.c file. Kung ang bersyon sa librarya sa firmware wala makaabot sa mga kinahanglanon, i-download ang pinakabag-o nga bersyon gikan sa link nga gihatag sa seksyon sa "Firmware Library".

Arkitektura sa API
Ang matag API adunay importante nga parameter CH, nga mao ang UART Channel. Gitino niini kung unsang channel sa UART ang kontrolon. Sa pagkakaron hangtod sa upat ka mga channel sa UART ang gisuportahan ug busa upat ka kanunay nga mga simbolo ang gihubit ingon sa mosunod. Gigamit kini isip parameter CH nga naghatag sa mga API nga basehan sa pagkontrol.

  • UARTM_CH0: input parameter – kontrola o i-configure ang UART CH0
  • UARTM_CH1: input parameter – kontrola o i-configure ang UART CH1
  • UARTM_CH2: input parameter – kontrola o i-configure ang UART CH2
  • UARTM_CH3: input parameter – kontrola o i-configure ang UART CH3

Ang luna sa memorya dili mausik kon usa lang ka channel sa UART ang gamiton. Kini tungod kay ang gidaghanon sa gisuportahan nga mga channel sa UART mahimong itakda ug ang wala magamit nga UART channel code tangtangon sa preprocessor aron madugangan ang magamit nga espasyo sa memorya. Ang arkitektura sa API gipakita sa Hulagway 9.

Figure 9. API Architecture Block Diagram
Arkitektura Block Diagram

Ang matag API gilangkuban sa upat ka grupo sa mga setting o kontrol nga may kalabotan sa channel sa UART aron ang mga tiggamit kinahanglan ra nga mag-input sa gusto nga parameter sa CH. Aron ma-configure ang may kalabutan nga API, gikinahanglan lamang nga adunay dugang nga UART basic configuration parameter table nga adunay porma sa istruktura, USART_InitTypeDef. Ang API mopatuman sa UART basic configuration sumala sa parameter contents sa table. Tan-awa ang seksyon nga "Deskripsyon sa API" alang sa lamesa sa istruktura nga sukaranan sa UART.

Ang uart_module.c/.h files naglangkob lamang sa interrupt (CHx_IRQ) ​​ug status table (CHx Status) sa matag channel sa UART samtang ang tanang setting nga gikinahanglan alang sa komunikasyon sa UART gihatag sa ht32_board_config.h. Ang hardware may kalabutan nga mga parameter sa ht32_board_config.h file gipakita sa lamesa sa ubos. Ang dugang nga mga detalye gihatag sa seksyon nga "Paghulagway sa Setting".

Ang mga parameter nga may kalabutan sa hardware sa ht32_board_config.h naglakip sa mga setting sa I/O ug mga setting sa pisikal nga port sa UART, ingon sa mosunod.

Talaan 3. Kahulugan nga mga Simbolo sa ht32_board_config.h

Simbolo Deskripsyon
HTCFG_UARTM_CH0 Pisikal nga UART port ngalan; Example: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Naghubit sa ngalan sa pantalan sa TX alang sa CH0; Exampug: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Gihubit ang numero sa pin sa TX alang sa CH0; Exampug: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Naghubit sa ngalan sa pantalan sa RX alang sa CH0; Exampug: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Gihubit ang numero sa pin sa TX alang sa CH0; Exampug: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Naghubit sa gidak-on sa buffer sa TX alang sa CH0; Exampug: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Naghubit sa gidak-on sa RX buffer alang sa CH0; Exampug: 128

Aron usbon ang configuration sa AFIO sa channel sa UART, tan-awa ang may kalabutan nga datasheet sa device. Sa pagkakaron ang mga kahulugan lamang sa I/O para sa UART CH0 ang mu-epekto kay UART CH0 ra ang na-configure sa ht32_board_config.h. Aron idugang ang UART CH1~3, ang ilang mga kahulugan sa I/O kinahanglang makompleto pinaagi sa paghisgot sa kahulugan sa UART CH0 o paghisgot sa seksyon nga "Pagbag-o sa Pag-set ug Mga FAQ".

Adunay tulo ka mga nag-unang bahin sa arkitektura sa API: 

  1. Hangtod sa upat ka mga channel sa UART ang gisuportahan. Ang ilang input parameters mao ang UARTM_CH0, UARTM_CH1, UARTM_CH2 ug UARTM_CH3.
  2.  Ang gidaghanon sa mga channel sa UART mahimong itakda ug ang wala magamit nga mga channel dili makapakunhod sa magamit nga memory space.
  3. Ang tanan nga mga setting sa UART ug mga kahulugan sa I/O hingpit nga nahimulag gikan sa mga API. Gidugangan niini ang kasayon ​​​​sa pagdumala sa pagtakda sa mga kantidad ug gipakunhod ang posibilidad sa sayup o nawala nga mga setting.

Deskripsyon sa Setting 

Kini nga seksyon magpaila sa mga setting sa parameter sa ht32_board_config.h ug uart_module.h files.

  1. ht32_board_config.h: Kini file gigamit alang sa mga kahulugan sa pin ug development board nga may kalabutan nga mga setting, nga naglakip sa UART IP channel (UART0, UART1, USART0…) nga gigamit sa Starter Kit (SK), katugbang nga TX/RX pin nga mga lokasyon ug TX/RX buffer size. Ang Figure 10 nagpakita sa setting sa sulod sa HT32F52352 Starter Kit. Depende sa functional integration sa development, ang mga user mahimong mag-refer sa "Pin Assignment" nga seksyon sa datasheet sa gigamit nga device aron ipatuman ang pin definitions. Ang dugang nga mga detalye bahin sa pagbag-o sa setting ihulagway sa seksyon nga "Pagbag-o sa setting ug Mga FAQ".
    Hulagway 10. ht32_board_config.h Settings (HT32F52352)
    Mga setting
  2. uart_module.h: Kini ang ulohan sa API file gigamit sa code sa aplikasyon, nga naglakip sa mga may kalabutan nga default setting, function definition, ug uban pa. Sama sa gipakita sa Figure 11, ang default setting sulod mahimong overwritten sa external configurations, sama sa mga setting sa ht32_board_config.h file.
    Figure 11. Default Settings sa uart_module.h
    Default nga mga Setting
Deskripsyon sa API
  1. Deskripsyon sa tipo sa datos sa code sa aplikasyon.
    • USART_InitTypeDef
      Kini ang UART nga sukaranan nga istruktura sa pag-configure nga gilangkuban sa BaudRate, WordLength, StopBits, Parity ug mga pag-configure sa Mode, sama sa gipakita sa ubos.
      Variable Ngalan Type Deskripsyon
      USART_BaudRate u32 UART komunikasyon baud rate
      USART_WordLength u16 Ang gitas-on sa pulong sa komunikasyon sa UART: 7, 8 o 9 ka bit
      USART_StopBits u16 UART komunikasyon mohunong bit gitas-on: 1 o 2 bits
      USART_Parity u16 Pagkaparehas sa komunikasyon sa UART: bisan, katingad-an, marka, luna o walay pagkaparehas
      USART_Mode u16 mode sa komunikasyon sa UART; ang mga API nagsuporta lamang sa normal nga mode
  2. Sa dili pa gamiton ang API functions, kompletoha ang UART basic configuration sa main program. Ang UART basic configuration alang niini nga application code gipakita sa Figure 12. Dinhi ang baud rate mao ang 115200bps, ang gitas-on sa pulong mao ang 8-bit, ang stop bit nga gitas-on mao ang 1-bit, ug walay parity.
    Figure 12. UART Basic Configuration
    Panguna nga Configuration
  3. Gipakita sa Figure 13 ang mga gimbuhaton sa API nga gipahayag sa uart_module.h file. Ang mosunod nga mga lamesa nagpatin-aw sa function, input parameters ug paggamit sa API functions.
    Figure 13. Mga Deklarasyon sa Function sa API sa uart_module.h 
    Mga Deklarasyon sa Function sa API
Ngalan walay UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Kalihokan Pagsugod sa UART module
  Input CH UART channel
pUART_Init UART nga sukaranan nga estruktura sa pag-configure nga pointer
 uRxTimeOutValue UART RX FIFO time-out nga bili. Sa diha nga ang RX FIFO makadawat og bag-ong datos ang counter i-reset ug i-restart. Sa higayon nga ang counter makaabot sa preset nga time-out value ug ang katugbang nga time-out interrupt ma-enable na, usa ka time-out interrupt ang mamugna.
 Paggamit UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Ipatuman ang UART basic configuration//Refer sa Figure 12 para sa USART_InitStructure configuration
Ngalan u32 UARTM_WriteByte(u32 CH, u8 uData)
Kalihokan UART module pagsulat byte nga operasyon (TX)
Input CH UART channel
uData Ang datos nga isulat
Output KALAMPUSAN Malampuson
SAYOP Napakyas
Paggamit UARTM_WriteByte(UARTM_CH0, 'A'); // Nagsulat ang UART og 1 byte - 'A'
Ngalan u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Kalihokan UART module pagsulat operasyon (TX)
 Input CH UART channel
pBuffer Buffer pointer
uLength Ang gitas-on sa datos nga isulat
Output KALAMPUSAN Malampuson
SAYOP Napakyas
 Paggamit u8 Pagsulay[] = "Kini ang pagsulay!\r\n"; UARTM_Write(UARTM_CH0, Test, gidak-on sa(Test) -1); //UART misulat pBuffer data
Ngalan u32 UARTM_ReadByte(u32 CH, u8 *pData)
Kalihokan UART module read byte operation (RX)
Input CH UART channel
pData Ang adres nga ibutang ang gibasa nga datos
Output KALAMPUSAN Malampuson
SAYOP Napakyas (walay datos)
   Paggamit u8 TempData; kon (UARTM_ReadByte(UARTM_CH0, &TempData) == KALAMPUSAN){UARTM_WriteByte(UARTM_CH0, TempData);}//Kon ang UARTM_ReadByte() mubalik ug SUCCESS unya ang UART magsulat niini nga data byte
Ngalan u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Kalihokan UART module read operation (RX)
 Input CH UART channel
pBuffer Buffer pointer
uLength Ang gitas-on sa datos nga basahon
Output Ihap sa pagbasa Gibasa ang gitas-on sa datos
     Paggamit u8 Pagsulay2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);kon (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() mobasa ug 5 bytes sa data ug magtipig og data ngadto sa Test2, ug mag-assign sa read byte count ngadto kang Len // Isulat ang datos gikan sa Test2
Ngalan u32 UARTM_GetReadBufferLength(u32 CH)
Kalihokan Pagkuha sa gibasa nga buffer length (RX)
Input CH UART channel
Output uLength Basaha ang gitas-on sa buffer
  Paggamit UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART module initialization samtang (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Paghulat hangtod ang UARTM_ReadBuffer nakadawat ug 5 bytes sa datos
Ngalan u32 UARTM_GetWriteBufferLength(u32 CH)
Kalihokan Pagkuha sa write buffer length (TX)
Input CH UART channel
Output uLength Isulat ang gitas-on sa buffer
Ngalan u8 UARTM_IsTxFinished(u32 CH)
Kalihokan Kuhaa ang kahimtang sa TX
Input CH UART channel
Output TINUOD TX status: nahuman
BAKAK TX status: wala nahuman
      Paggamit UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Kini nga API mahimong gamiton sa pagsusi sa kahimtang sa TX, sama sa gipakita sa ibabaw; paghulat hangtud nga ang UARTM_WriteByte() API mahuman, ie, TX status mao ang TINUOD, ug dayon ipadayon ang sunod-sunod nga mga aksyon.//Usa ka restriction gidugang tungod kay kini nga function wala gidugang hangtud nga ang SVN version number sa uart_module.c kay 525.
Ngalan walay sulod UARTM_DiscardReadBuffer(u32 CH)
Kalihokan Isalikway ang datos sa gibasa nga buffer
Input CH UART channel

Paggamit sa API Examples 

Kini nga seksyon magpakita sa pagsulat ug pagbasa sa API examples sa “Module_UART” application code gamit ang initialization process ug ang “UART_Module_Example" proseso sa code sa aplikasyon. Sa dili pa gamiton ang mga API, ang mga tiggamit kinahanglan nga maglakip sa header sa API file ngadto sa main program source code file (#include “middleware/uart_module.h”).

Ingon sa gipakita sa Figure 14, kung mosulod sa proseso sa pag-initialization, una nga ipasabut ang UART nga sukaranan nga istruktura sa pag-configure. Dayon i-configure ang UART basic configuration structure nga mga miyembro lakip ang BaudRate, WordLength, StopBits, Parity ug Mode. Sa katapusan, tawga ang API initialization function, ang pagkompleto niini nagpaila sa katapusan sa proseso sa initialization. Human niini ang mga tiggamit makapadayon sa pagsulat ug pagbasa sa mga operasyon base sa preset nga UART basic configuration.

Figure 14. Inisyal nga Flowchart
Inisyal nga Flowchart

Ang "UART_Module_Example" nga application code nagpakita sa API sa pagbasa ug pagsulat nga mga operasyon sa usa ka loopback nga paagi. Ang flowchart alang niini gipakita sa Figure 15. Ang API functions nga gigamit naglakip sa UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() ug UARTM_GetReadBufferLength(). Ang ilang paghulagway gihatag sa seksyon nga "Paghulagway sa API".

Figure 15. Flowchart sa Pagsulat ug Pagbasa Examples
Flowchart sa Pagsulat ug Pagbasa Examples

Adunay lain nga "UART_Bridge" nga code sa aplikasyon ubos sa "Module_UART" nga folder nga adunay kalabutan file Ang paghulagway gipaila sa seksyon nga "Estruktura sa Direktoryo". Ang "UART_Bridge" nga kodigo sa aplikasyon nagpalihok sa duha ka mga channel sa UART, UART CH0 ug UART CH1, ug dayon i-customize ang protocol sa komunikasyon tali sa duha ka UART device pinaagi sa COMMAND structures, gCMD1 ug gCMD2. Kini gihubit sa uart_bridge.c, ingon sa gipakita sa ubos. UARTBridge_CMD1TypeDef gCMD1:

Variable Ngalan Type Deskripsyon
uHeader u8 Ulohan
uCmd u8 Sugo
uData[3] u8 Data

UARTBridge_CMD2TypeDef gCMD2:

Variable Ngalan Type Deskripsyon
uHeader u8 Ulohan
uCmdA u8 Sugo A
uCmdB u8 Sugo B
uData[3] u8 Data

Sa "UART_Bridge" nga kodigo sa aplikasyon, gamita ang gCMD1 aron makadawat og datos isip command packet ug dayon analisa kini. Dayon sumala sa customized communication protocol, ibutang ang gCMD2 isip response packet ug ipadala kini. Ang mosunod kay example sa usa ka command packet gCMD1) ug usa ka response packet (gCMD2). Command Packet (UARTBridge_CMD1TypeDef gCMD1):

Bayte 0 Bayte 1 Byte 2 ~ Byte 4
uHeader uCmd uData [3]
“A” “1” "x, y, z"

Packet sa Tubag (UARTBridge_CMD2TypeDef gCMD2):

Bayte 0 Bayte 1 Bayte 2 Byte 3 ~ Byte 5
uHeader uCmdA uCmdB uData [3]
“B” "usa ka" “1” "x, y, z"

Resource Trabaho
Gikuha ang HT32F52352 isip example, ang mga kapanguhaan nga giokupar sa UART module gipakita sa ubos.

HT32F52352
Gidak-on sa ROM 946 Bytes
Gidak-on sa RAM 40*1 + 256*2 Bytes

Mubo nga sulat:

  1. Ang mga global variable lakip ang mga bandila ug status alang sa usa ka channel nag-okupar sa 40 bytes sa RAM.
  2.  Kini alang sa usa ka kondisyon diin usa ka channel ang gigamit ug ang TX/RX buffer size kay 128/128 bytes. Ang gidak-on sa buffer mahimong itakda sumala sa mga kinahanglanon sa aplikasyon.

Talaan 4. Application Code Resource Occupation 

  • Kompilasyon palibot: MDK-Arm V5.36, ARMCC V5.06 update 7 (build 960)
  • Opsyon sa pag-optimize: Level 2 (-O2)

Mga Instruksyon sa Paggamit

Kini nga kapitulo magpaila sa pag-andam sa kalikopan alang sa "Module_UART" nga kodigo sa aplikasyon, ingon man ang pagtipon ug mga lakang sa pagsulay.

Pagpangandam sa Kalikopan
Ang hardware ug software nga gikinahanglan alang sa "Module_UART" nga code sa aplikasyon gilista sa ubos.
Talaan 5. Pagpangandam sa Kalikopan sa Hardware/Software 

Hardware/Software Ihap Nota
Starter Kit 1 Kini nga nota sa aplikasyon naggamit sa HT32F52352 Starter Kit isip usa ka example
USB Cable 1 Micro USB, konektado sa PC
Kodigo sa Aplikasyon Ang dalan sa pag-download, file ug directory configuration gipaila sa "Resource Download and Preparation" section. Path: "\\application\Module_UART\UART_Module_Example ”
Termino sa Tera Tan-awa ang seksyon nga "Terminal Software".
Keil IDE Keil uVision V5.xx

Una, gamita ang HT32F52352 Starter Kit inubanan sa Virtual COM Port (VCP) function sa e-Link32 Lite para sa UART application introduction. Kini nagkinahanglan sa mosunod nga environmental nga pagpangandam nga ipatuman:

  1. Adunay duha ka USB interface sa board. Gamita ang USB cable aron makonektar ang PC ug ang eLink32 Lite interface sa pisara sama sa gipakita sa Figure 16-(a).
  2. Ingon nga ang aplikasyon code kinahanglan nga mogamit sa e-Link32 Lite Virtual COM Port (VCP) function, siguroha nga ang PAx*2 ug DAP_Tx sa UART Jumper-J2*1 gipamubu gamit ang jumper. Ang lokasyon sa J2 gipakita sa Figure 16-(b).

Nota

  1. Ang J2 sa Starter Kit adunay duha ka kapilian, PAx ug DAP_Tx shorted o PAx ug RS232_Tx shorted. Tan-awa ang manwal sa paggamit sa Starter Kit alang sa detalyado nga mga gimbuhaton sa setting.
  2. Ang MCU UART RX pin nga lokasyon sa lainlaing Starter Kits lahi. Kini nga exampAng paggamit sa PAx aron ipakita ang RX pin.

Hulagway 16. HT32 Starter Kit Block Diagram
Kit Block Diagram

Karon gamita ang user target board inubanan sa Virtual COM Port (VCP) function sa e-Link32 Pro alang sa UART application introduction. Kini nagkinahanglan sa mosunod nga environmental nga pagpangandam nga ipatuman:

  1. Ang usa ka kilid sa e-Link32 Pro konektado sa PC gamit ang Mini USB cable ug ang pikas kilid konektado sa user target board pinaagi sa 10-bit grey cable niini. Ang koneksyon tali sa mga interface sa SWD sa cable ug target board gipatuman gamit ang mga linya sa Dupont, sama sa gipakita sa Figure 17-(a).
  2. Ang serial communication pin sa e-Link32 Pro mao ang Pin#7 VCOM_RXD ug Pin#8- VCOM_TXD. Kini kinahanglan nga konektado sa TX ug RX pin sa user target board, sama sa gipakita sa Figure 17-(b).
    Figure 17. e-Link32 Pro + User Target Board Block Diagram
    User Target Board

Kompilasyon ug Pagsulay
Kini nga seksyon magkuha sa "application\Module_UART\UART_Module_Example" isip usa ka example sa pagpaila sa mga proseso sa compilation ug pagsulay. Sa wala pa kini, siguroha nga ang tanan nga mga pagpangandam nga gihulagway sa miaging seksyon gipatuman ug nga ang Tera Term terminal software na-download na.

Ang detalyado nga mga lakang sa operasyon gisumada sa ubos.
Lakang 1. Power-on nga pagsulay

I-set up ang hardware environment sama sa gihulagway sa miaging seksyon. Human sa power-on, ang D9 power LED sa ubos nga wala sa Starter Kit madan-agan. Ang D1 USB LED sa e-Link32 Lite sa taas nga tuo madan-agan human makompleto ang USB enumeration. Kung ang D1 dili madan-agan pagkahuman sa taas nga yugto sa panahon, kumpirmahi kung ang USB cable makahimo ba sa komunikasyon. Kung dili, kuhaa kini ug isulod pag-usab.

Lakang 2. Paghimo og proyekto
Ablihi ang aplikasyon\Module_UART\UART_Module_Exampsa folder, i-klik ang _CreateProject.bat file aron makamugna og proyekto, ingon sa gipakita sa Figure 18. Tungod kay kini nga nota sa aplikasyon naggamit sa HT32F52352 Starter Kit, ablihi ang proyekto sa Keil IDE nga "Project_52352.uvprojx" nga nahimutang ubos sa MDK_ARMv5 folder.

Figure 18. Ipatuman ang _CreateProject.bat aron Makahimo og Proyekto
Paghimo og Proyekto

Lakang 3. Compile ug programa
Human maablihan ang proyekto, i-klik una ang "Build" (o gamita ang shortcut "F7"), dayon i-klik ang "Download" (o gamita ang shortcut "F8"). Pagkahuman niini, ang mga resulta sa pagtukod ug pag-download ipakita sa bintana sa Pagtukod sa Output. Tan-awa ang Figure 19.

Figure 19. Pagtukod ug Pag-download sa mga Resulta
Paghimo ug Pag-download sa mga Resulta

Lakang 4. Ablihi ang software sa Tera Term ug i-configure ang serial port
Ablihi ang Tera Term software ug ang COM port. Hatagi'g pagtagad kung ang numero sa COM port nga namugna sa Starter Kit husto o dili. Dayon i-klik ang "Setup >> Serial Port" aron makasulod sa configuration interface. Ang UART interface configuration sa "Module_UART" application code gihulagway sa "Terminal Software" nga seksyon. Ang resulta sa setup gipakita sa Figure 20.

Figure 20. Resulta sa Pag-setup sa Serial Port sa Tera Term
Resulta sa Setup
Lakang 5. I-reset ang sistema ug pagsulay
Pindota ang SK reset key - B1 Reset. Pagkahuman niini, usa ka "ABCKini ang pagsulay!" mensahe mahimong
gipasa pinaagi sa API ug ipakita sa Tera Term window, sama sa gipakita sa Figure 21. Mahitungod sa receive function, sa pagsulod sa data ngadto sa Tera Term window, ang may kalabutan nga API gamiton sa pagtino sa dawaton nga buffer length. Kung ang datos nga nadawat sa PC moabot sa 5 bytes, ang nadawat nga 5 bytes nga data ipadala nga sunud-sunod. Ingon sa gipakita sa Figure 22, ang data nga sunud-sunod nga gisulod mao ang "1, 2, 3, 4, 5", nga nadawat ug gitino pinaagi sa API. Pagkahuman niini, ang datos nga "1, 2, 3, 4, 5" maimprinta pagkahuman sa lima ka mga input.

Figure 21. "Module_UART" Application Code Functional Test - Ipadala
Application Code Functional Test

Figure 22. "Module_UART" Application Code Functional Test - Pagdawat
Application Code Functional Test

Mga Instruksyon sa Pag-transplant
Kini nga seksyon magpaila kung giunsa ang pag-integrate sa mga API sa mga proyekto sa tiggamit.
Lakang 1. Idugang ang uart_module.c file sa proyekto. Pag-right-click sa folder sa User. Pilia ang "Add Existing Files sa Group 'User'…”, unya pilia ang uart_module.c file ug i-klik ang "Add", ingon sa gipakita sa Figure 23. Tan-awa ang seksyon nga "Directory Structure" para sa file paghulagway sa dalan.

Hulagway 23. Idugang ang uart_module.c File sa Project
File sa Project

Lakang 2. Idugang ang ring_buffer.c file sa proyekto. Pag-right-click sa folder sa User. Pilia ang "Add Existing Files sa Group 'User'…”, unya pilia ang ring_buffer.c file ug i-klik ang “Add”, ingon sa gipakita sa Figure 24.\ Refer to the “Directory Structure” section para sa file paghulagway sa dalan.
Hulagway 24. Idugang ang ring_buffer.c File sa Project 
File sa Project

Lakang 3. Iapil ang API header file ngadto sa sinugdanan sa main.c, sama sa gipakita sa Figure 25. (Ext: #include “middleware/uart_module.h”)
Figure 25. Iapil ang API Header File sa main.c
Ilakip ang API Header File

Lakang 4. Ipatuman ang mga setting nga gikinahanglan alang sa komunikasyon sa UART gamit ang ht32_board_config.h file. Kini gipaila sa detalye sa "Setting Description" ug "Setting Modification ug FAQs" nga mga seksyon.

Pagbutang ug Pagbag-o ug mga FAQ 

Kini nga seksyon magpaila kon unsaon pag-usab ang mga setting sa UART ug ipatin-aw ang pipila ka kasagarang mga pangutana nga masugatan panahon sa paggamit.

Usba ang UART Pin Assignment 

  1. Naghisgot sa HT32F52352 Datasheet nga “Pin Assignment” nga kapitulo, pangitaa ang Alternate Function Mapping table nga naglista sa mga function sa AFIO sa tipo sa device. Para sa UART nga may kalabutan nga mga pin, tan-awa ang "AF6 USART/UART" nga kolum, sama sa gipakita sa Figure 26.
    Figure 26. HT32F52352 Alternate Function Mapping Table
    Alternate Function Mapping Table
  2. Kini nga lakang maggiya sa mga tiggamit sa pagpangita sa katugbang nga UART pin gamit ang lamesa sa ibabaw. Ang HT32F52352 exampGigamit ni le ang USART1 isip default channel. Dinhi, ang TX ug RX pins mao ang USR1_TX ug USR1_RX ug nahimutang sa PA4 ug PA5 matag usa. Gipakita sa Figure 27 ang mga sulat sa pin ingon man ang mga kahulugan sa pin sa "ht32_board_config.h". Ang walay sulod nga mga natad sa "Package" sa lamesa sa assignment sa pin nagpasabot nga walay mga may kalabutan nga mga GPIO niini nga pakete. Aron usbon ang UART nga mga pin, pangitaa ang target nga mga lokasyon sa pin ug ipasabut pag-usab ang mga pin gamit ang "ht32_board_config.h" file.
    Figure 27. Pin Correspondence ug Setting Modification
    Pagbag-o sa Pagtakda

Pagdugang ug UART Channel
Gikuha ang HT32F52352 HTCFG_UARTM_CH1 isip example, dinhi gihulagway kung giunsa pagdugang usa ka bag-ong channel sa UART.

Usba ang ht32_board_config.h file
Naghisgot sa HT32F52352 Datasheet "Pin Assignment" nga kapitulo, pangitaa ang Alternate Function Mapping nga lamesa nga naglista sa mga function sa AFIO sa tipo sa device. Ingon nga gigamit ang USART1 isip HTCFG_UARTM_CH0, ang bag-ong gidugang nga HTCFG_UARTM_CH1 makapili sa USART0. Dinhi, ang TX ug RX pins nahimutang sa PA2 ug PA3 matag usa, ingon sa gipakita sa ibabaw nga katunga sa Figure 28. Ang katugbang nga mga pagbag-o gipatuman gamit ang mga linya sa code 120 ~ 126 sa ht32_board_config.h, ingon sa gipakita sa pula nga tuldok nga kahon sa Figure 28.

Figure 28. Pagdugang ug UART Channel
UART Channel

Mga FAQ
Q: Sa lakang 5 sa seksyon sa Compilation and Test, normal ang transmit functional test. Dinhi, ang "ABCKini ang pagsulay!" Ang mensahe malampuson nga gipakita, apan alang sa pagdawat nga function, nganong ang lima ka input values ​​wala ibalik ug gipakita?
A: Susiha kung ang MCU UART RX ug DAP_Tx pin sa UART Jumper-J2 gipamubu gamit ang jumper. Ingon nga ang "Module_UART" nga kodigo sa aplikasyon kinahanglan nga mogamit sa Virtual COM Port (VCP) sa e-Link32 Lite, ang short-circuit setting kinahanglan i-apply sa wala nga duha ka pin sa UART Jumper-J2, ingon sa gipakita sa Figure 29.

Figure 29. UART Jumper-J2 Setting
UART Jumper

T: Pagkahuman sa pagpatuman sa "Pagtukod" (o laktod nga "F7"), usa ka mensahe sa sayup nga makita nga nagpakita nga ang bersyon sa librarya sa firmware mas tigulang kaysa sa usa nga gikinahanglan? Tan-awa ang Figure 30.
A: Ang pagpatuman sa “Module_UART” nga kodigo sa aplikasyon kinahanglang maglakip sa uart_module.c/h files nga adunay kinahanglanon alang sa usa ka bersyon sa librarya sa firmware. Kung makita ang ingon nga mensahe sa sayup, kini nagpasabut nga ang gigamit karon nga librarya sa firmware usa ka karaan nga bersyon. Busa gikinahanglan nga i-download ang pinakabag-o nga bersyon pinaagi sa link nga gihatag sa seksyon nga "Firmware Library".

Figure 30. Firmware Library Version Error Message
Mensahe sa Error sa Bersyon

Panapos

Kini nga dokumento naghatag ug sukaranan nga pasiuna aron matabangan ang mga tiggamit nga mas masabtan ang "Module_UART" nga code sa aplikasyon ug protocol sa komunikasyon sa UART. Gisundan kini sa pag-download ug pag-andam sa kahinguhaan. Ang Functional Description nga kapitulo nagpaila sa file istruktura sa direktoryo, ang arkitektura sa API, paghulagway sa API ug paggamit sa API examples. Gipakita sa kapitulo sa Mga Instruksyon sa Paggamit ang pag-andam sa kinaiyahan, pag-compile ug pagsulay sa code sa aplikasyon nga "Module_UART". Naghatag usab kini og mga panudlo alang sa pagbalhin sa code ug setting sa pagbag-o ingon man pagpatin-aw sa pipila ka kasagarang mga problema nga mahimong masugatan. Ang tanan niini nga gihiusa magtugot sa mga tiggamit nga dali nga masabtan kung giunsa ang paggamit sa mga API ug pagkahuman makunhuran ang oras sa pagsugod.

Reperensya nga Materyal

Alang sa dugang nga impormasyon, tan-awa ang Holtek website: www.holtek.com

Mga Bersyon ug Impormasyon sa Pagbag-o

Petsa Awtor Ipagawas Impormasyon sa Pagbag-o
2022.04.30 蔡期育(Chi-Yu Tsai) V1.00 Una nga Bersyon

Disclaimer

Ang tanan nga impormasyon, mga marka sa pamatigayon, mga logo, mga graphic, mga video, mga audio clip, mga link ug uban pang mga butang nga makita niini website ('Information') kay alang lamang sa pakisayran ug mahimong usbon sa bisan unsang oras nga walay una nga pahibalo ug sa pagkabuotan sa Holtek Semiconductor Inc. kami' o 'among'). Samtang ang Holtek naningkamot sa pagsiguro sa katukma sa Impormasyon bahin niini website, walay gipahayag o gipasabot nga garantiya nga gihatag sa Holtek sa katukma sa Impormasyon. Ang Holtek walay responsibilidad sa bisan unsang sayup o pagtulo.
Ang Holtek dili manubag sa bisan unsang mga kadaot (lakip apan dili limitado sa virus sa kompyuter, mga problema sa sistema o pagkawala sa datos) bisan unsa nga motumaw sa paggamit o kalambigitan sa paggamit niini. website sa bisan unsang partido. Mahimong adunay mga link sa niini nga lugar, nga nagtugot kanimo sa pagbisita sa website sa ubang mga kompanya.
Kini webAng mga site dili kontrolado sa Holtek. Ang Holtek walay responsibilidad ug walay garantiya sa bisan unsang Impormasyon nga gipakita sa maong mga site. Mga hyperlink sa uban webAng mga site naa sa imong kaugalingon nga peligro.

Limitasyon sa Tulubagon

Sa bisan unsa nga panghitabo nga ang Holtek Limited mahimong manubag sa bisan unsang ubang partido alang sa bisan unsang pagkawala o kadaot bisan unsa o bisan unsang hinungdan direkta o dili direkta nga may kalabotan sa imong pag-access o paggamit niini. website, ang sulod niini o bisan unsang mga butang, materyales o serbisyo.

Nagamandong Balaod
Ang Disclaimer nga anaa sa website pagadumalaon ug hubaron sumala sa mga balaod sa Republika sa China. Ang mga tiggamit mosumite sa dili eksklusibo nga hurisdiksyon sa mga korte sa Republika sa China.

Pag-update sa Disclaimer
Gireserba sa Holtek ang katungod sa pag-update sa Disclaimer sa bisan unsang oras nga adunay o wala’y una nga pahibalo, ang tanan nga mga pagbag-o epektibo dayon sa pag-post sa website.

Mga Dokumento / Mga Kapanguhaan

HOLTEK HT32 MCU UART Application Note [pdf] Manwal sa Gumagamit
HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note

Mga pakisayran

Pagbilin ug komento

Ang imong email address dili mamantala. Ang gikinahanglan nga mga natad gimarkahan *