HOLTEK HT32 MCU UART Application Note Manual User
HOLTEK HT32 MCU UART Application Note

Panimula

Ang Universal Asynchronous Receiver/Transmitter – UART ay isang malawakang ginagamit na serial transmission interface na nagbibigay ng flexible asynchronous full-duplex na pagpapadala ng data. Ang "Module_UART" na application code na ibinigay sa application note na ito ay gumagamit ng TX/RX interrupts na may software ring buffers upang ipatupad ang mga simpleng UART transmit/receive function sa pamamagitan ng mga API, na ang mga nauugnay na function ay inilalarawan sa ibaba. Ito ay magpapasimple sa buong proseso ng paghahatid ng data at magbibigay-daan sa mga user na mabilis na maunawaan at maipatupad ang mga aplikasyon ng komunikasyon sa UART.

  • Magpadala/makatanggap ng mga function: byte read, byte write, buffer read, buffer write, atbp.
  • Mga function ng status: makuha ang haba ng buffer, status ng TX, atbp.

Ang dokumentong ito ay unang magpapakilala sa UART communication protocol, na tutulong sa mga user na mas maunawaan ang UART na komunikasyon mula sa prinsipyo hanggang sa aplikasyon. Sinusundan ito ng pag-download at paghahanda ng mga mapagkukunang kinakailangan para sa application code, kabilang ang firmware library, pag-download ng application code, file at configuration ng direktoryo pati na rin ang isang panimula sa terminal software tool na ginamit sa application note. Sa kabanata ng Functional Description, ang istraktura ng direktoryo ng code ng application, mga setting ng parameter at paglalarawan ng API ay ipakikilala. Ang paggamit ng API ay ilalarawan gamit ang "Module_UART" application code at ang Flash/RAM resource consumption na kinakailangan para sa mga API ay ililista din. Ang kabanata ng Mga Tagubilin para sa Paggamit ay gagabay sa gumagamit sa mga hakbang ng paghahanda sa kapaligiran, pagsasama-sama at pagsubok upang kumpirmahin na gagana nang maayos ang code ng aplikasyon. Pagkatapos ay magbibigay ito ng mga tagubilin na nagpapaliwanag kung paano isama ang mga API sa mga proyekto ng user at sa wakas ay magbibigay ng sanggunian para sa mga pagbabago at karaniwang mga problema na maaaring makaharap.

Ginamit ang mga pagpapaikli: 

  • UART: Universal Asynchronous Receiver/Transmitter
  • API: Application Programming Interface
  • LSB: Pinakamaliit na Makabuluhang Bit
  • MSB: Pinakamahalagang Bit
  • PC: Personal na Computer
  • SK: Starter Kit, HT32 development board
  • IDE: Pinagsamang Kapaligiran sa Pag-unlad

UART Communication Protocol

Ang UART ay isang serial na uri ng komunikasyon ng interface na nagpapatupad ng parallel-to-serial na conversion ng data sa transmitter nito at pagkatapos ay nakikipag-ugnayan nang serial sa isang katulad na receiver. Ang receiver ay nagsasagawa ng isang serial-to-parallel na conversion ng data pagkatapos ng pagtanggap ng data. Ipinapakita ng Figure 1 ang isang schematic diagram ng serial communication na nagpapakita kung paano inililipat ang data sa isang bitwise order. Samakatuwid para sa bidirectional na komunikasyon sa pagitan ng transmitter at receiver, dalawang wire lamang, TX at RX, ang kinakailangan upang maglipat ng data sa pagitan ng bawat isa. Ang TX ay ang pin kung saan ipinapadala ng UART ang serial data at nakakonekta sa RX pin ng receiver. Samakatuwid, kailangang i-cross-connect ng transmitter at receiver device ang kanilang mga TX at RX pin upang maisagawa ang UART two-way na komunikasyon, tulad ng ipinapakita sa Pigura 2.

Larawan 1. Serial Communication Diagram
Serial Communication Diagram

Larawan 2. UART Circuit Diagram
UART Circuit Diagram

Sa panahon ng serial communication ng UART, ang paghahatid ng data ay asynchronous. Nangangahulugan ito na walang orasan o iba pang signal ng pag-synchronize sa pagitan ng transmitter at receiver. Dito ginagamit ang isang baud rate, na siyang serial data sa pagpapadala/pagtanggap ng bilis at na itinakda ng magkabilang panig bago ang paglilipat ng data. Bilang karagdagan, ang mga espesyal na bit tulad ng start at stop bit ay idinaragdag sa simula at dulo ng data packet upang bumuo ng kumpletong UART data packet. Ang Figure 3 ay nagpapakita ng UART data packet structure habang ang Figure 4 ay nagpapakita ng UART 8-bit data packet na walang parity bit.
Figure 3. Structure ng UART Data Packet
Istruktura ng UART Data Packet

Figure 4. UART 8-bit Data Packet Format
Format ng Data Packet
Ang bawat bahagi ng UART data packet ay ipinakilala sa pagkakasunud-sunod sa ibaba.

  • Start Bit: Ito ay nagpapahiwatig ng pagsisimula ng isang data packet. Ang UART TX pin ay karaniwang nananatili sa isang mataas na antas ng lohika bago magsimula ang paghahatid. Kung magsisimula ang paghahatid ng data, hihilahin ng UART transmitter ang TX pin mula sa mataas hanggang sa mababa, ibig sabihin, mula 1 hanggang 0, at pagkatapos ay hahawakan ito doon para sa isang ikot ng orasan. Ang UART receiver ay magsisimulang magbasa ng data kapag may nakitang mataas hanggang mababang transition sa RX pin.
  • Data: Ito ang aktwal na data na inilipat, na may haba ng data na 7, 8 o 9 bits. Ang data ay karaniwang inililipat sa LSB muna.
  • Parity Bit: Ang bilang ng logic na "1" sa data ay ginagamit upang matukoy kung ang anumang data ay nagbago sa panahon ng paghahatid. Para sa even parity, ang kabuuang bilang ng logic na "1" sa data ay dapat na even number, sa kabaligtaran, ang kabuuang bilang ng logic na "1" sa data ay dapat na isang odd number para sa odd parity.
  • Stop Bit: Ipinapahiwatig nito ang pagtatapos ng isang packet ng data, kung saan hihilahin ng transmitter ng UART ang TX pin mula mababa hanggang mataas, ibig sabihin, mula 0 hanggang 1, at pagkatapos ay hahawakan ito doon sa loob ng 1 o 2-bit na yugto ng panahon.

Gaya ng nabanggit dati, dahil walang signal ng orasan sa UART circuit, ang parehong serial data na nagpapadala/nagtatanggap ng bilis, na kilala bilang baud rate, ay dapat tukuyin sa pagitan ng transmitter at receiver upang maipatupad ang walang error na transmission. Ang baud rate ay tinutukoy ng bilang ng mga bit na inilipat sa bawat segundo, sa bps (bit bawat segundo). Ang ilang karaniwang at karaniwang ginagamit na baud rate ay 4800bps, 9600bps, 19200bps, 115200bps, atbp. Ang kaukulang oras na kinakailangan para sa paglilipat ng isang bit ng data ay ipinapakita sa ibaba.
Talahanayan 1. Baud Rate kumpara sa 1-Bit na Oras ng Pagpapadala 

Rate ng Baud 1-Bit na Pagpapadala Oras
4800bps 208.33µs
9600bps 104.16µs
19200bps 52.08µs
115200bps 8.68µs

Pag-download at Paghahanda ng Resource

Ipakikilala ng kabanatang ito ang application code at ang software tool na ginamit, pati na rin kung paano i-configure ang direktoryo at file landas.

Firmware Library 

Una, tiyakin na ang Holtek HT32 firmware library ay na-download bago gamitin ang application code. Ang link sa pag-download ay ipinapakita sa ibaba. Narito ang dalawang opsyon, HT32_M0p_Vyyyymmdd.zip para sa HT32F5xxxx series at HT32_M3_Vyyyymmdd.zip para sa HT32F1xxxx series. I-download at i-unzip ang ninanais file.

Ang zip file naglalaman ng ilang mga folder na maaaring uriin bilang Dokumento, Firmware Library, Mga Tool at iba pang mga item, ang path ng placement na kung saan ay ipinapakita sa Figure 5. Ang HT32 firmware library zip file may a file pangalan ng HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip ay matatagpuan sa ilalim ng folder ng Firmware_Library.

Larawan 5. HT32_M0p_Vyyyymmdd.zip Mga Nilalaman
Mga nilalaman

Code ng Application
I-download ang application code mula sa sumusunod na link. Ang code ng aplikasyon ay nakabalot sa isang zip file may a file pangalan ng HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Tingnan mo Larawan 6 para sa file mga kumbensyon ng pangalan.

Larawan 6. Application Code File Pagpapakilala ng Pangalan 

Download link: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Code ng Application

File at Configuration ng Direktoryo
Dahil ang application code ay hindi naglalaman ng HT32 firmware library files, na-unzip ang application code at firmware library files ay dapat ilagay sa tamang landas bago simulan ang compilation. Ang application code zip file karaniwang naglalaman ng isa o higit pang mga folder, tulad ng application at library, tulad ng ipinapakita sa Figure 7. Ilagay ang folder ng application sa ilalim ng root directory ng HT32 firmware library upang makumpleto ang file path configuration, tulad ng ipinapakita sa Figure 8. Bilang kahalili, i-unzip ang application code at HT32 firmware library nang sabay-sabay sa parehong landas upang makamit ang parehong mga resulta ng configuration.

Larawan 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Mga Nilalaman
Mga nilalaman

Figure 8. Decompression Path
Daan ng Decompression

Terminal Software
Ang application code ay maaaring maglipat ng mga mensahe sa pamamagitan ng COM port upang ipatupad ang pagpili ng function o pagpapakita ng katayuan. Nangangailangan ito sa panig ng host na mai-install nang maaga ang terminal software. Maaaring pumili ang mga user ng naaangkop na software ng koneksyon, o gumamit ng libreng lisensyadong software gaya ng Tera Term. Sa application code, ang channel ng UART ay na-configure na may haba ng salita na 8-bit, walang parity, 1 stop bit at baud rate na 115200bps.

Functional na Paglalarawan

Ang kabanatang ito ay magbibigay ng functional na paglalarawan para sa application code, kabilang ang impormasyon sa istraktura ng direktoryo, arkitektura ng API, paglalarawan ng setting, atbp

Istruktura ng Direktoryo
Ang application code file naglalaman ng folder ng application. Ang susunod na layer ay ang "Module_UART" na folder na naglalaman ng dalawang application program, "UART_Module_Example” at “UART_Bridge”. Ang nauugnay files ay nakalista at inilarawan sa ibaba.
Talahanayan 2. Istruktura ng Direktoryo ng Application Code

Folder / File Pangalan Paglalarawan
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Mga batch na script para sa paggawa ng proyekto files
_ProjectSource.ini Pagsisimula file para sa pagdaragdag ng source code sa mga proyekto
ht32_board_config.h Setup file nauugnay sa IC peripheral I/O assignment
ht32fxxxxx_01_it.c Makagambala sa programa ng serbisyo file
pangunahing.c Pangunahing program source code
\\application\Module_UART\UART_Bridge*2
_CreateProject.bat Mga batch na script para sa paggawa ng proyekto files
_ProjectSource.ini Pagsisimula file para sa pagdaragdag ng source code sa mga proyekto
ht32_board_config.h Setup file nauugnay sa IC peripheral I/O assignment
ht32fxxxxx_01_it.c Makagambala sa programa ng serbisyo file
pangunahing.c Source code ng pangunahing programa
uart_bridge.h uart_bridge.c UART bridge header file at source code file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 API header file at source code file
\\utilities\common
ringbuffer.h ring_buffer.c Header ng buffer ring ng software file at source code file

Tandaan: 

  1. Sa "UART_Module_Example" application code, ang API read and write operations ay isinasagawa sa isang loopback na paraan, sumangguni sa "API Usage Examples” para sa higit pang mga detalye.
  2.  Sa code ng aplikasyon na "UART_Bridge", dalawang channel ng UART, UART CH0 at UART CH1, ang na-activate, at ipinapatupad ang custom na protocol ng komunikasyon sa pamamagitan ng mga istruktura ng COMMAND sa pagitan ng dalawang UART device. Para sa higit pang impormasyon, sumangguni sa “API Usage Examples" na seksyon.
  3. Kailangang gamitin ng application code ang uart_module.c/h files na mayroong kinakailangang bersyon ng library ng firmware. Ang kinakailangan ay maaaring magbago paminsan-minsan ayon sa pag-update. Upang kumpirmahin ang kasalukuyang kinakailangan sa bersyon ng library ng firmware, sumangguni sa content ng dependency check sa pamamagitan ng paghahanap ng keyword na “Dependency check” sa main.c file. Kung ang bersyon ng firmware library ay hindi nakakatugon sa mga kinakailangan, i-download ang pinakabagong bersyon mula sa link na ibinigay sa seksyong "Firmware Library".

Arkitektura ng API
Ang bawat API ay may mahalagang parameter na CH, na siyang UART Channel. Tinutukoy nito kung aling channel ng UART ang dapat kontrolin. Sa kasalukuyan, hanggang sa apat na channel ng UART ang sinusuportahan at samakatuwid, ang apat na pare-parehong simbolo ay tinukoy bilang mga sumusunod. Ginagamit ang mga ito bilang parameter na CH na nagbibigay sa mga API ng batayan para sa kontrol.

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

Hindi masasayang ang memory space kung isang UART channel lang ang gagamitin. Ito ay dahil ang bilang ng mga sinusuportahang channel ng UART ay maaaring itakda at ang hindi nagamit na UART channel code ay aalisin ng preprocessor upang madagdagan ang magagamit na espasyo sa memorya. Ang arkitektura ng API ay ipinapakita sa Larawan 9.

Figure 9. API Architecture Block Diagram
Arkitektura Block Diagram

Ang bawat API ay binubuo ng apat na grupo ng mga setting o kontrol na nauugnay sa channel ng UART upang ang mga user ay kailangan lamang na ipasok ang nais na parameter ng CH. Upang i-configure ang nauugnay na API, kinakailangan lamang na magkaroon ng karagdagang talahanayan ng parameter ng pangunahing configuration ng UART na may form ng istraktura, USART_InitTypeDef. Ipapatupad ng API ang pangunahing configuration ng UART ayon sa mga nilalaman ng parameter sa talahanayan. Sumangguni sa seksyong “API Description” para sa UART basic configuration structure table.

Ang uart_module.c/.h files ay naglalaman lamang ng interrupt (CHx_IRQ) ​​at talahanayan ng status (CHx Status) ng bawat channel ng UART habang ang lahat ng mga setting na kinakailangan para sa komunikasyon ng UART ay ibinibigay ng ht32_board_config.h. Ang mga parameter na nauugnay sa hardware sa ht32_board_config.h file ay ipinapakita sa talahanayan sa ibaba. Higit pang mga detalye ang ibinibigay sa seksyong "Paglalarawan ng Setting".

Kasama sa mga parameter na nauugnay sa hardware sa ht32_board_config.h ang mga setting ng I/O at mga setting ng pisikal na port ng UART, tulad ng sumusunod.

Talahanayan 3. Kahulugan ng mga Simbolo sa ht32_board_config.h

Simbolo Paglalarawan
HTCFG_UARTM_CH0 Pisikal na UART port name; Halample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Tinutukoy ang pangalan ng port ng TX para sa CH0; Halample: A, B, C...
HTCFG_UARTM0_TX_GPIO_PIN Tinutukoy ang pin number ng TX para sa CH0; Halample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Tinutukoy ang pangalan ng port ng RX para sa CH0; Halample: A, B, C...
HTCFG_UARTM0_RX_GPIO_PIN Tinutukoy ang pin number ng TX para sa CH0; Halample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Tinutukoy ang laki ng buffer ng TX para sa CH0; Halampnoong: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Tinutukoy ang laki ng buffer ng RX para sa CH0; Halampnoong: 128

Upang baguhin ang configuration ng AFIO ng channel ng UART, sumangguni sa nauugnay na datasheet ng device. Sa kasalukuyan, ang mga kahulugan lamang ng I/O para sa UART CH0 ang magkakabisa dahil ang UART CH0 lamang ang na-configure sa ht32_board_config.h. Upang magdagdag ng UART CH1~3, ang kanilang mga kahulugan ng I/O ay kailangang kumpletuhin sa pamamagitan ng pagsangguni sa kahulugan ng UART CH0 o pagsangguni sa seksyong "Pagbabago sa Pagtatakda at Mga FAQ".

Mayroong tatlong pangunahing tampok ng arkitektura ng API: 

  1. Hanggang apat na channel ng UART ang sinusuportahan. Ang kanilang mga parameter ng input ay UARTM_CH0, UARTM_CH1, UARTM_CH2 at UARTM_CH3.
  2.  Maaaring itakda ang bilang ng mga channel ng UART at hindi mababawasan ng mga hindi nagamit na channel ang magagamit na espasyo sa memorya.
  3. Ang lahat ng mga setting ng UART at mga kahulugan ng I/O ay ganap na nakahiwalay sa mga API. Pinatataas nito ang kaginhawaan ng pamamahala ng pagtatakda ng mga halaga at binabawasan ang posibilidad ng hindi tama o nawawalang mga setting.

Paglalarawan ng Setting 

Ipakikilala ng seksyong ito ang mga setting ng parameter sa ht32_board_config.h at uart_module.h files.

  1. ht32_board_config.h: Ito file ay ginagamit para sa mga kahulugan ng pin at mga setting na nauugnay sa development board, na kinabibilangan ng UART IP channel (UART0, UART1, USART0...) na ginagamit ng Starter Kit (SK), kaukulang TX/RX pin location at TX/RX buffer size. Ipinapakita ng Figure 10 ang mga nilalaman ng setting ng HT32F52352 Starter Kit. Depende sa functional integration ng development, maaaring sumangguni ang mga user sa seksyong "Pin Assignment" ng datasheet ng ginamit na device para ipatupad ang mga kahulugan ng pin. Ang higit pang mga detalye tungkol sa pagbabago sa pagtatakda ay ilalarawan sa seksyong "Pagbabago sa pagtatakda at Mga FAQ".
    Larawan 10. ht32_board_config.h Mga Setting (HT32F52352)
    Mga setting
  2. uart_module.h: Ito ang API header file ginagamit ng application code, na kinabibilangan ng mga nauugnay na default na setting, mga kahulugan ng function, atbp. Gaya ng ipinapakita sa Figure 11, ang mga nilalaman ng default na setting ay maaaring ma-overwrite ng mga panlabas na configuration, tulad ng mga setting sa ht32_board_config.h file.
    Figure 11. Mga Default na Setting sa uart_module.h
    Mga Default na Setting
Paglalarawan ng API
  1. Paglalarawan ng uri ng data ng code ng aplikasyon.
    • USART_InitTypeDef
      Ito ang UART basic configuration structure na binubuo ng BaudRate, WordLength, StopBits, Parity at Mode na mga configuration, tulad ng ipinapakita sa ibaba.
      Variable Pangalan Uri Paglalarawan
      USART_BaudRate u32 Baud rate ng komunikasyon sa UART
      USART_WordLength u16 Haba ng salita ng komunikasyon ng UART: 7, 8 o 9 bits
      USART_StopBits u16 UART communication stop bit haba: 1 o 2 bits
      USART_Parity u16 Parity ng komunikasyon ng UART: kahit, kakaiba, marka, espasyo o walang parity
      USART_Mode u16 mode ng komunikasyon ng UART; normal na mode lang ang sinusuportahan ng mga API
  2. Bago gamitin ang mga function ng API, kumpletuhin ang pangunahing configuration ng UART sa pangunahing programa. Ang UART basic configuration para sa application code na ito ay ipinapakita sa Figure 12. Dito ang baud rate ay 115200bps, word length ay 8-bit, stop bit length ay 1-bit, at walang parity.
    Figure 12. UART Basic Configuration
    Pangunahing Configuration
  3. Ipinapakita ng Figure 13 ang mga function ng API na idineklara sa uart_module.h file. Ipinapaliwanag ng mga sumusunod na talahanayan ang function, mga parameter ng input at paggamit ng mga function ng API.
    Figure 13. Mga Deklarasyon ng Function ng API sa uart_module.h 
    Mga Deklarasyon ng Function ng API
Pangalan void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Function Pagsisimula ng module ng UART
  Input CH channel ng UART
pUART_Init UART basic configuration structure pointer
 uRxTimeOutValue Halaga ng time-out ng UART RX FIFO. Kapag nakatanggap ang RX FIFO ng bagong data ang counter ay magre-reset at magre-restart. Kapag naabot na ng counter ang preset time-out value at pinagana ang katumbas na time-out interrupt, bubuo ng time-out interrupt.
 Paggamit UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Ipatupad ang UART basic configuration//Sumangguni sa Figure 12 para sa USART_InitStructure configuration
Pangalan u32 UARTM_WriteByte(u32 CH, u8 uData)
Function UART module write byte operation (TX)
Input CH channel ng UART
uData Ang data na isusulat
Output TAGUMPAY Matagumpay
ERROR Nabigo
Paggamit UARTM_WriteByte(UARTM_CH0, 'A'); // Nagsusulat ang UART ng 1 byte - 'A'
Pangalan u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Function UART module write operation (TX)
 Input CH channel ng UART
pBuffer Buffer pointer
uLength Ang haba ng data na isusulat
Output TAGUMPAY Matagumpay
ERROR Nabigo
 Paggamit u8 Test[] = "Ito ang pagsubok!\r\n"; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //Nagsusulat ang UART ng data ng pBuffer
Pangalan u32 UARTM_ReadByte(u32 CH, u8 *pData)
Function UART module read byte operation (RX)
Input CH channel ng UART
pData Ang address upang ilagay ang nabasang data
Output TAGUMPAY Matagumpay
ERROR Nabigo (walang data)
   Paggamit u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//If UARTM_ReadByte() return SUCCESS then UART write this data byte
Pangalan u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Function UART module read operation (RX)
 Input CH channel ng UART
pBuffer Buffer pointer
uLength Ang haba ng data na babasahin
Output Bilang ng pagbasa Ang haba ng data ay nabasa na
     Paggamit u8 Pagsubok2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() ay nagbabasa ng 5 byte ng data at nag-iimbak ng data sa Test2, at nagtatalaga ng read byte count kay Len//Isulat ang data na nagmula sa Test2
Pangalan u32 UARTM_GetReadBufferLength(u32 CH)
Function Kunin ang read buffer length (RX)
Input CH channel ng UART
Output uLength Basahin ang haba ng buffer
  Paggamit UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART module initialization habang (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Maghintay hanggang makatanggap ang UARTM_ReadBuffer ng 5 byte ng data
Pangalan u32 UARTM_GetWriteBufferLength(u32 CH)
Function Kunin ang haba ng write buffer (TX)
Input CH channel ng UART
Output uLength Isulat ang haba ng buffer
Pangalan u8 UARTM_IsTxFinished(u32 CH)
Function Kunin ang katayuan ng TX
Input CH channel ng UART
Output TOTOO Katayuan ng TX: tapos na
MALI Katayuan ng TX: hindi natapos
      Paggamit UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Ang API na ito ay maaaring gamitin upang suriin ang katayuan ng TX, tulad ng ipinapakita sa itaas; maghintay hanggang sa matapos ang UARTM_WriteByte() API, ibig sabihin, TAMA ang status ng TX, at pagkatapos ay ipagpatuloy ang mga kasunod na pagkilos.//May idinagdag na paghihigpit dahil hindi pa naidagdag ang function na ito hanggang sa 525 ang numero ng bersyon ng SVN sa uart_module.c.
Pangalan walang bisa UARTM_DiscardReadBuffer(u32 CH)
Function Itapon ang data sa read buffer
Input CH channel ng UART

Paggamit ng API Halamples 

Ipapakita ng seksyong ito ang API write at read examples ng "Module_UART" application code gamit ang initialization process at ang "UART_Module_Example" na proseso ng code ng aplikasyon. Bago gamitin ang mga API, kailangang isama ng mga user ang API header file sa pangunahing source code ng programa file (#include “middleware/uart_module.h”).

Gaya ng ipinapakita sa Figure 14, kapag pumapasok sa proseso ng pagsisimula, tukuyin muna ang UART basic configuration structure. Pagkatapos ay i-configure ang UART basic configuration structure na mga miyembro kabilang ang BaudRate, WordLength, StopBits, Parity at Mode. Panghuli, tawagan ang function ng pagsisimula ng API, ang pagkumpleto nito ay nagpapahiwatig ng pagtatapos ng proseso ng pagsisimula. Pagkatapos nito, maaaring ipagpatuloy ng mga user ang pagsulat at pagbasa ng mga operasyon batay sa preset na pangunahing configuration ng UART.

Larawan 14. Flowchart ng Pagsisimula
Flowchart ng Pagsisimula

Ang “UART_Module_Example” application code ay nagpapakita ng API read and write operations sa isang loopback na paraan. Ang flowchart para dito ay ipinapakita sa Figure 15. Kasama sa mga function ng API ang UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() at UARTM_GetReadBufferLength(). Ang kanilang paglalarawan ay ibinigay sa seksyong "Paglalarawan ng API."

Larawan 15. Flowchart ng Sumulat at Magbasa Halamples
Flowchart ng Sumulat at Magbasa Halamples

May isa pang code ng aplikasyon na "UART_Bridge" sa ilalim ng folder na "Module_UART" na may kaugnayan file ang paglalarawan ay ipinakilala sa seksyong "Istruktura ng Direktoryo". Ang code ng application na "UART_Bridge" ay nag-a-activate ng dalawang channel ng UART, ang UART CH0 at UART CH1, at pagkatapos ay kino-customize ang protocol ng komunikasyon sa pagitan ng dalawang UART device sa pamamagitan ng mga istruktura ng COMMAND, gCMD1 at gCMD2. Ang mga ito ay tinukoy sa uart_bridge.c, tulad ng ipinapakita sa ibaba. UARTBridge_CMD1TypeDef gCMD1:

Variable Pangalan Uri Paglalarawan
uHeader u8 Header
uCmd u8 Utos
uData[3] u8 Data

UARTBridge_CMD2TypeDef gCMD2:

Variable Pangalan Uri Paglalarawan
uHeader u8 Header
uCmdA u8 Utos A
uCmdB u8 Utos B
uData[3] u8 Data

Sa "UART_Bridge" application code, gamitin ang gCMD1 upang makatanggap ng data bilang command packet at pagkatapos ay suriin ito. Pagkatapos, ayon sa customized na protocol ng komunikasyon, itakda ang gCMD2 bilang isang response packet at ipadala ito. Ang sumusunod ay isang example ng isang command packet gCMD1) at isang response packet (gCMD2). Command Packet (UARTBridge_CMD1TypeDef gCMD1):

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

Packet ng Tugon (UARTBridge_CMD2TypeDef gCMD2):

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

Resource Trabaho
Kinukuha ang HT32F52352 bilang example, ang mga mapagkukunan na inookupahan ng UART module ay ipinapakita sa ibaba.

HT32F52352
Laki ng ROM 946 Bytes
Sukat ng RAM 40*1 + 256*2 Bytes

Tandaan:

  1. Ang mga pandaigdigang variable kabilang ang mga flag at status para sa isang channel ay sumasakop sa 40 byte ng RAM.
  2.  Ito ay para sa isang kundisyon kung saan ang isang channel ay ginagamit at ang TX/RX buffer size ay 128/128 bytes. Maaaring itakda ang laki ng buffer ayon sa mga kinakailangan sa aplikasyon.

Talahanayan 4. Application Code Resource Occupation 

  • Compilation environment: MDK-Arm V5.36, ARMCC V5.06 update 7 (build 960)
  • Opsyon sa pag-optimize: Antas 2 (-O2)

Mga tagubilin para sa paggamit

Ipakikilala ng kabanatang ito ang paghahanda sa kapaligiran para sa code ng aplikasyon na "Module_UART", pati na rin ang mga hakbang sa pagsasama-sama at pagsubok.

Paghahanda sa Kapaligiran
Ang hardware at software na kinakailangan para sa "Module_UART" application code ay nakalista sa ibaba.
Talahanayan 5. Paghahanda sa Pangkapaligiran ng Hardware/Software 

Hardware/Software Bilangin Tandaan
Starter Kit 1 Ang application note na ito ay gumagamit ng HT32F52352 Starter Kit bilang example
USB Cable 1 Micro USB, nakakonekta sa PC
Code ng Application Ang landas ng pag-download, file at ang configuration ng direktoryo ay ipinakilala sa seksyong "Pag-download at Paghahanda ng Resource." Path: "\\application\Module_UART\UART_Module_Example ”
Term ng Tera Sumangguni sa seksyong "Terminal Software".
Keil IDE Keil uVision V5.xx

Una, gamitin ang HT32F52352 Starter Kit na sinamahan ng Virtual COM Port (VCP) function ng e-Link32 Lite para sa pagpapakilala ng UART application. Nangangailangan ito ng sumusunod na paghahanda sa kapaligiran upang maipatupad:

  1. Mayroong dalawang USB interface sa board. Gamitin ang USB cable para ikonekta ang PC at ang eLink32 Lite interface sa board gaya ng ipinapakita sa Figure 16-(a).
  2. Dahil kailangang gamitin ng application code ang e-Link32 Lite Virtual COM Port (VCP) function, tiyaking ang PAx*2 at DAP_Tx ng UART Jumper-J2*1 ay na-short gamit ang jumper. Ang lokasyon ng J2 ay ipinahiwatig ng Figure 16-(b).

Tandaan

  1. Ang J2 sa Starter Kit ay may dalawang opsyon, PAx at DAP_Tx shorted o PAx at RS232_Tx shorted. Sumangguni sa manwal ng gumagamit ng Starter Kit para sa mga detalyadong function ng setting.
  2. Ang lokasyon ng MCU UART RX pin sa iba't ibang Starter Kit ay iba. Itong exampGumagamit ako ng PAx upang ipahiwatig ang RX pin.

Larawan 16. HT32 Starter Kit Block Diagram
Kit Block Diagram

Ngayon gamitin ang user target board na pinagsama sa Virtual COM Port (VCP) function ng e-Link32 Pro para sa pagpapakilala ng UART application. Nangangailangan ito ng sumusunod na paghahanda sa kapaligiran upang maipatupad:

  1. Ang isang bahagi ng e-Link32 Pro ay konektado sa isang PC gamit ang isang Mini USB cable at ang kabilang panig ay nakakonekta sa user target board sa pamamagitan ng 10-bit na gray na cable nito. Ang koneksyon sa pagitan ng mga interface ng SWD ng cable at target board ay ipinatupad gamit ang mga linya ng Dupont, tulad ng ipinapakita sa Figure 17-(a).
  2. Ang mga serial communication pin ng e-Link32 Pro ay Pin#7 VCOM_RXD at Pin#8- VCOM_TXD. Ang mga ito ay dapat na konektado sa TX at RX pin ng user target board, tulad ng ipinapakita sa Figure 17-(b).
    Larawan 17. e-Link32 Pro + User Target Board Block Diagram
    User Target Board

Compilation at Pagsusulit
Ang seksyong ito ay kukuha ng "application\Module_UART\UART_Module_Example” bilang isang example upang ipakilala ang mga proseso ng compilation at pagsubok. Bago ito, tiyaking naipatupad ang lahat ng paghahandang inilarawan sa nakaraang seksyon at na-download na ang terminal software ng Tera Term.

Ang mga detalyadong hakbang sa pagpapatakbo ay ibinubuod sa ibaba.
Hakbang 1. Power-on na pagsubok

I-set up ang kapaligiran ng hardware tulad ng inilarawan sa nakaraang seksyon. Pagkatapos ng power-on, ang D9 power LED sa kaliwang ibaba ng Starter Kit ay iilaw. Ang D1 USB LED sa e-Link32 Lite sa kanang itaas ay iilaw pagkatapos makumpleto ang USB enumeration. Kung ang D1 ay hindi naiilaw pagkatapos ng mahabang panahon, kumpirmahin kung ang USB cable ay nakakapag-usap. Kung hindi, alisin ito at muling ipasok muli.

Hakbang 2. Bumuo ng isang proyekto
Buksan ang application\Module_UART\UART_Module_Exampsa folder, i-click ang _CreateProject.bat file upang makabuo ng proyekto, tulad ng ipinapakita sa Figure 18. Dahil ang application note na ito ay gumagamit ng HT32F52352 Starter Kit, buksan ang Keil IDE project na “Project_52352.uvprojx” na matatagpuan sa ilalim ng MDK_ARMv5 folder.

Figure 18. Ipatupad ang _CreateProject.bat upang Bumuo ng Proyekto
Bumuo ng Proyekto

Hakbang 3. Mag-compile at mag-program
Matapos mabuksan ang proyekto, mag-click muna sa "Bumuo" (o gumamit ng shortcut na "F7"), pagkatapos ay mag-click sa "I-download" (o gumamit ng shortcut na "F8"). Pagkatapos nito, ang mga resulta ng build at download ay ipapakita sa Build Output window. Tingnan ang Larawan 19.

Larawan 19. Bumuo at Mag-download ng mga Resulta
Bumuo at Mag-download ng Mga Resulta

Hakbang 4. Buksan ang software ng Tera Term at i-configure ang serial port
Buksan ang software ng Tera Term at ang COM port. Bigyang-pansin kung tama o hindi ang COM port number na nabuo ng Starter Kit. Pagkatapos ay mag-click sa "Setup >> Serial Port" upang ipasok ang interface ng pagsasaayos. Ang configuration ng interface ng UART ng "Module_UART" na application code ay inilarawan sa seksyong "Terminal Software". Ang resulta ng pag-setup ay ipinapakita sa Figure 20.

Figure 20. Resulta ng Pag-setup ng Serial Port ng Tera Term
Resulta ng Pag-setup
Hakbang 5. I-reset ang system at subukan
Pindutin ang SK reset key – B1 Reset. Pagkatapos nito, isang "ABCThis is test!" magiging mensahe
ipinadala sa pamamagitan ng API at ipapakita sa window ng Tera Term, tulad ng ipinapakita sa Figure 21. Tungkol sa function ng pagtanggap, kapag naglalagay ng data sa window ng Tera Term, ang nauugnay na API ay gagamitin upang matukoy ang haba ng buffer ng pagtanggap. Kapag ang data na natanggap ng PC ay umabot sa 5 bytes, ang natanggap na 5 bytes ng data ay ipapadala nang sunud-sunod. Gaya ng ipinapakita sa Figure 22, ang data na sunud-sunod na ipinasok ay "1, 2, 3, 4, 5", na natatanggap at tinutukoy sa pamamagitan ng API. Pagkatapos nito, ang data na "1, 2, 3, 4, 5" ay ipi-print pagkatapos ng limang input.

Figure 21. “Module_UART” Application Code Functional Test – Ipadala
Application Code Functional Test

Figure 22. “Module_UART” Application Code Functional Test – Receive
Application Code Functional Test

Mga Tagubilin sa Pag-transplant
Ipakikilala ng seksyong ito kung paano isama ang mga API sa mga proyekto ng user.
Hakbang 1. Idagdag ang uart_module.c file sa proyekto. Mag-right-click sa folder ng User. Piliin ang “Magdagdag ng Umiiral Files sa Group 'User'…”, pagkatapos ay piliin ang uart_module.c file at i-click ang "Add", tulad ng ipinapakita sa Figure 23. Sumangguni sa seksyong "Istruktura ng Direktoryo" para sa file paglalarawan ng landas.

Larawan 23. Magdagdag ng uart_module.c File sa Project
File sa Project

Hakbang 2. Idagdag ang ring_buffer.c file sa proyekto. Mag-right-click sa folder ng User. Piliin ang “Magdagdag ng Umiiral Files sa Group 'User'…”, pagkatapos ay piliin ang ring_buffer.c file at i-click ang “Add”, tulad ng ipinapakita sa Figure 24.\ Sumangguni sa seksyong “Directory Structure” para sa file paglalarawan ng landas.
Larawan 24. Magdagdag ng ring_buffer.c File sa Project 
File sa Project

Hakbang 3. Isama ang API header file sa simula ng main.c, gaya ng ipinapakita sa Figure 25. (Ext: #include “middleware/uart_module.h”)
Figure 25. Isama ang API Header File sa main.c
Isama ang API Header File

Hakbang 4. Ipatupad ang mga setting na kinakailangan para sa komunikasyon ng UART gamit ang ht32_board_config.h file. Ito ay ipinakilala nang detalyado sa mga seksyong "Paglalarawan ng Setting" at "Pagbabago sa Pagtatakda at Mga FAQ".

Pagtatakda ng Pagbabago at Mga FAQ 

Ipakikilala ng seksyong ito kung paano baguhin ang mga setting ng UART at ipaliwanag ang ilang karaniwang tanong na nararanasan habang ginagamit.

Baguhin ang UART Pin Assignment 

  1. Sa pagtukoy sa HT32F52352 Datasheet na "Pin Assignment" na kabanata, hanapin ang Alternate Function Mapping table na naglilista ng mga function ng AFIO ng uri ng device. Para sa mga nauugnay na pin ng UART, sumangguni sa column na "AF6 USART/UART", tulad ng ipinapakita sa Figure 26.
    Figure 26. HT32F52352 Alternate Function Mapping Table
    Alternate Function Mapping Table
  2. Gagabayan ng hakbang na ito ang mga user na hanapin ang mga kaukulang UART pin gamit ang talahanayan sa itaas. Ang HT32F52352 halampGinagamit ni le ang USART1 bilang default na channel. Dito, ang mga TX at RX pin ay USR1_TX at USR1_RX at matatagpuan sa PA4 at PA5 ayon sa pagkakabanggit. Ipinapakita ng Figure 27 ang pin correspondence pati na rin ang mga kahulugan ng pin sa "ht32_board_config.h". Ang mga walang laman na field ng "Package" sa talahanayan ng pagtatalaga ng pin ay nangangahulugan na walang mga nauugnay na GPIO sa package na ito. Upang baguhin ang mga UART pin, hanapin ang mga lokasyon ng target na pin at muling tukuyin ang mga pin gamit ang “ht32_board_config.h” file.
    Figure 27. Pin Correspondence at Pagbabago ng Setting
    Pagbabago sa Pagtatakda

Magdagdag ng UART Channel
Kinukuha ang HT32F52352 HTCFG_UARTM_CH1 bilang example, dito ay inilarawan kung paano magdagdag ng bagong channel ng UART.

Baguhin ang ht32_board_config.h file
Sa pagtukoy sa HT32F52352 Datasheet na "Pin Assignment" na kabanata, hanapin ang Alternate Function Mapping table na naglilista ng mga function ng AFIO ng uri ng device. Dahil ang USART1 ay ginamit bilang HTCFG_UARTM_CH0, ang bagong idinagdag na HTCFG_UARTM_CH1 ay maaaring pumili ng USART0. Dito, ang mga TX at RX pin ay matatagpuan sa PA2 at PA3 ayon sa pagkakabanggit, tulad ng ipinapakita sa itaas na kalahati ng Figure 28. Ang kaukulang mga pagbabago ay ipinatupad gamit ang mga linya ng code 120~126 sa ht32_board_config.h, tulad ng ipinapakita ng pulang tuldok na kahon sa Figure 28.

Figure 28. Magdagdag ng UART Channel
UART Channel

Mga FAQ
Q: Sa hakbang 5 ng Compilation and Test section, normal ang transmit functional test. Dito, ang "ABCThis is test!" matagumpay na naipakita ang mensahe, gayunpaman para sa function na tumanggap, bakit hindi ibinalik at ipinapakita ang limang halaga ng input?
A: Suriin kung ang MCU UART RX at DAP_Tx pin ng UART Jumper-J2 ay na-short gamit ang isang jumper. Dahil kailangang gamitin ng "Module_UART" application code ang Virtual COM Port (VCP) ng e-Link32 Lite, ang short-circuit na setting ay dapat ilapat sa kaliwang dalawang pin ng UART Jumper-J2, tulad ng ipinapakita sa Figure 29.

Larawan 29. Setting ng UART Jumper-J2
UART Jumper

Q:Pagkatapos sa pagpapatupad ng "Build" (o shortcut "F7"), may lalabas na mensahe ng error na nagpapahiwatig na ang bersyon ng firmware library ay mas luma kaysa sa kinakailangan? Tingnan ang Larawan 30.
A: Ang pagpapatupad ng "Module_UART" na code ng aplikasyon ay kailangang isama ang uart_module.c/h files na may kinakailangan para sa isang partikular na bersyon ng library ng firmware. Kapag lumitaw ang naturang mensahe ng error, nangangahulugan ito na ang kasalukuyang ginagamit na library ng firmware ay isang mas lumang bersyon. Samakatuwid, kinakailangang i-download ang pinakabagong bersyon sa pamamagitan ng link na ibinigay sa seksyong "Firmware Library".

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

Konklusyon

Ang dokumentong ito ay nagbigay ng pangunahing panimula upang tulungan ang mga user na magkaroon ng mas mahusay na pag-unawa sa "Module_UART" na code ng aplikasyon at protocol ng komunikasyon ng UART. Sinundan ito ng pag-download at paghahanda ng mapagkukunan. Ipinakilala ng kabanata ng Functional Description ang file istraktura ng direktoryo, ang arkitektura ng API, paglalarawan ng API at paggamit ng API halamples. Ang kabanata ng Mga Tagubilin para sa Paggamit ay nagpakita ng paghahanda sa kapaligiran, pagsasama-sama at pagsubok ng code ng aplikasyon na "Module_UART". Nagbigay din ito ng mga tagubilin para sa pag-transplant ng code at setting ng pagbabago pati na rin ang pagpapaliwanag ng ilang karaniwang problema na maaaring makaharap. Ang lahat ng pinagsamang ito ay magbibigay-daan sa mga user na mabilis na maunawaan kung paano gamitin ang mga API at pagkatapos ay bawasan ang dami ng oras upang makapagsimula.

Sangguniang Materyal

Para sa karagdagang impormasyon, sumangguni sa Holtek website: www.holtek.com

Mga Bersyon at Impormasyon sa Pagbabago

Petsa May-akda Palayain Impormasyon sa Pagbabago
2022.04.30 蔡期育(Chi-Yu Tsai) V1.00 Unang Bersyon

Disclaimer

Lahat ng impormasyon, trademark, logo, graphics, video, audio clip, link at iba pang item na lumalabas dito website ('Impormasyon') ay para sa sanggunian lamang at maaaring magbago anumang oras nang walang paunang abiso at sa pagpapasya ng Holtek Semiconductor Inc. at mga kaugnay nitong kumpanya (simula dito 'Holtek', 'ang kumpanya', 'us', ' tayo' o ​​'atin'). Habang sinisikap ni Holtek na tiyakin ang katumpakan ng Impormasyon tungkol dito website, walang malinaw o ipinahiwatig na warranty ang ibinigay ng Holtek sa katumpakan ng Impormasyon. Walang pananagutan ang Holtek para sa anumang pagkakamali o pagtagas.
Hindi mananagot ang Holtek para sa anumang mga pinsala (kabilang ang ngunit hindi limitado sa virus ng computer, mga problema sa system o pagkawala ng data) anuman ang mangyari sa paggamit o kaugnay ng paggamit nito. website ng anumang partido. Maaaring may mga link sa lugar na ito, na nagpapahintulot sa iyo na bisitahin ang webmga site ng iba pang mga kumpanya.
Ang mga ito webAng mga site ay hindi kinokontrol ng Holtek. Walang pananagutan at walang garantiya ang Holtek sa anumang impormasyong ipinapakita sa mga naturang site. Mga hyperlink sa iba webang mga site ay nasa iyong sariling peligro.

Limitasyon ng Pananagutan

Sa anumang pagkakataon ay mananagot ang Holtek Limited sa alinmang ibang partido para sa anumang pagkawala o pinsala anuman o anuman ang sanhi nang direkta o hindi direktang may kaugnayan sa iyong pag-access o paggamit nito. website, ang nilalaman nito o anumang mga produkto, materyales o serbisyo.

Batas na Namamahala
Ang Disclaimer na nakapaloob sa webang lugar ay pamamahalaan at bigyang-kahulugan alinsunod sa mga batas ng Republika ng Tsina. Magsusumite ang mga user sa hindi eksklusibong hurisdiksyon ng mga korte ng Republika ng China.

Update ng Disclaimer
Inilalaan ng Holtek ang karapatang i-update ang Disclaimer anumang oras nang may paunang abiso o walang paunang abiso, lahat ng mga pagbabago ay epektibo kaagad sa pag-post sa website.

Mga Dokumento / Mga Mapagkukunan

HOLTEK HT32 MCU UART Application Note [pdf] User Manual
HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *