HOLTEK HT32 MCU UART Application Note Manwal sa Gumagamit
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
Figure 2. 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
Figure 4. UART 8-bit Data Packet Format
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
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/
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
Figure 8. Decompression Path
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:
- 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.
- 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.
- 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
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:
- 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.
- Ang gidaghanon sa mga channel sa UART mahimong itakda ug ang wala magamit nga mga channel dili makapakunhod sa magamit nga memory space.
- 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.
- 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)
- 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
Deskripsyon sa API
- 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
- USART_InitTypeDef
- 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
- 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
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
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
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:
- Ang mga global variable lakip ang mga bandila ug status alang sa usa ka channel nag-okupar sa 40 bytes sa RAM.
- 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:
- 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).
- 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
- 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.
- 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
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:
- 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).
- 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
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
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
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
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
Figure 22. "Module_UART" Application Code Functional Test - Pagdawat
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
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
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
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
- 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
- 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
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
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
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
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 |