HOLTEK HT32 MCU UART Aplikasyon Remak Itilizatè Manyèl
Nòt aplikasyon HOLTEK HT32 MCU UART

Entwodiksyon

Reseptè / Transmetè Asynchrone Inivèsèl la - UART se yon koòdone transmisyon seri lajman itilize ki bay transmisyon done fleksib asynchrone full-duplex. Kòd aplikasyon "Module_UART" yo bay nan nòt aplikasyon sa a sèvi ak entèwonp TX/RX ak tanpon bag lojisyèl pou aplike fonksyon senp UART transmèt/resevwa atravè API, ki gen fonksyon ki gen rapò yo dekri anba a. Sa a pral senplifye tout pwosesis transmisyon done epi pèmèt itilizatè yo byen vit konprann epi aplike aplikasyon kominikasyon UART.

  • Fonksyon transmèt/resevwa: byte read, byte write, tanpon li, tanpon ekri, elatriye.
  • Fonksyon estati: jwenn longè tanpon, estati TX, elatriye.

Dokiman sa a pral premye prezante pwotokòl kominikasyon UART, ki pral ede itilizatè yo pi byen konprann kominikasyon UART soti nan prensip nan aplikasyon an. Sa a se swiv pa telechaje ak preparasyon resous ki nesesè pou kòd aplikasyon an, ki gen ladan bibliyotèk firmwèr la, telechaje kòd aplikasyon an, file ak konfigirasyon anyè kòm byen ke yon entwodiksyon nan zouti lojisyèl tèminal yo itilize nan nòt aplikasyon an. Nan chapit Deskripsyon Fonksyonèl la, yo pral prezante estrikti anyè kòd aplikasyon an, paramèt paramèt ak deskripsyon API. Yo pral dekri itilizasyon API a lè l sèvi avèk kòd aplikasyon "Module_UART" epi yo pral bay lis konsomasyon resous Flash/RAM ki nesesè pou API yo tou. Chapit Enstriksyon pou Itilizasyon an pral gide itilizatè a atravè etap preparasyon anviwònman an, konpilasyon ak tès pou konfime kòd aplikasyon an ap travay byen. Lè sa a, li pral bay enstriksyon ki eksplike kijan pou entegre API yo nan pwojè itilizatè a epi finalman bay yon referans pou modifikasyon ak pwoblèm komen ki ka rankontre.

Abreviyasyon yo itilize: 

  • UART: Inivèsèl Asynchrone reseptè/transmetè
  • API: Entèfas pwogramasyon aplikasyon an
  • LSB: Pi piti ti siyifikatif
  • MSB: Pi enpòtan
  • PC: Odinatè pèsonèl
  • SK: Starter Twous, HT32 devlopman tablo
  • IDE: Anviwònman Devlopman Entegre

Pwotokòl kominikasyon UART

UART a se yon kalite kominikasyon seri koòdone ki aplike konvèsyon done paralèl-a-seri nan transmetè li yo ak Lè sa a, kominike seri ak yon reseptè menm jan an. Lè sa a, reseptè a fè yon konvèsyon done seri-a-paralèl apre resepsyon done. Figi 1 montre yon dyagram chema kominikasyon seri ki montre kouman done yo transfere nan yon lòd bit. Se poutèt sa, pou kominikasyon bidirectionnelle ant transmetè ak reseptè, sèlman de fil, TX ak RX, yo oblije transfere done seri youn ak lòt. TX se PIN kote UART transmèt done seri a epi li konekte ak PIN RX reseptè a. Se poutèt sa, aparèy transmetè ak reseptè yo bezwen konekte broch TX ak RX yo pou fè kominikasyon UART de-fason, jan yo montre nan Figi 2.

Figi 1. Dyagram kominikasyon seri
Dyagram kominikasyon seri

Figi 2. Dyagram sikwi UART
Dyagram sikwi UART

Pandan kominikasyon seri UART, transmisyon done se asynchrone. Sa vle di ke pa gen okenn revèy oswa lòt siyal senkronizasyon ant transmetè a ak reseptè a. Isit la yo itilize yon pousantaj baud, ki se seri done transmèt/resevwa vitès epi tou de bò yo mete an avans transfè done yo. Anplis de sa, Bits espesyal tankou Bits kòmanse ak sispann yo ajoute nan kòmansman ak nan fen pake done a pou fòme yon pake done UART konplè. Figi 3 montre estrikti pake done UART pandan y ap Figi 4 montre yon pake done UART 8-bit san yon bit parite.
Figi 3. UART Done Pake Estrikti
UART Done Pake Estrikti

Figi 4. UART 8-bit Done Pake Fòma
Fòma Pake Done
Chak pati nan pake done UART prezante nan lòd anba a.

  • Kòmanse Bit: Sa a endike kòmansman yon pake done. PIN UART TX anjeneral rete nan yon nivo lojik segondè anvan transmisyon kòmanse. Si transmisyon done kòmanse, transmetè UART la pral rale PIN TX a soti nan wo a ba, sa vle di, soti nan 1 a 0, ak Lè sa a, kenbe l 'la pou yon sik revèy. Reseptè UART a pral kòmanse li done lè yo te detekte yon tranzisyon wo a ba sou pin RX la.
  • Done: Sa a se done aktyèl yo transfere, ak yon longè done nan 7, 8 oswa 9 bit. Done yo anjeneral transfere ak LSB an premye.
  • Bit parite: Nimewo lojik "1" nan done yo itilize pou detèmine si nenpòt done chanje pandan transmisyon. Pou parite menm, kantite total lojik "1" nan done yo ta dwe yon nimewo menm, Kontrèman, kantite total lojik "1" nan done yo ta dwe yon nimewo enpè pou parite enpè.
  • One Stop Bit: Sa a endike nan fen yon pake done, kote transmetè UART la pral rale PIN TX a soti nan ba a wo, sa vle di, soti nan 0 a 1, ak Lè sa a, kenbe l 'la pou yon peryòd tan 1 oswa 2-bit.

Kòm mansyone anvan, depi pa gen okenn siyal revèy nan kous la UART, menm seri done transmèt / resevwa vitès, ki se ke yo rekonèt kòm pousantaj la baud, yo dwe defini ant transmetè a ak reseptè pou aplike transmisyon san erè. Pousantaj baud la defini pa kantite bit transfere pa segonn, an bps (bit pa segonn). Gen kèk pousantaj baud estanda ak souvan itilize yo se 4800bps, 9600bps, 19200bps, 115200bps, elatriye. Tan ki koresponn lan ki nesesè pou transfere yon sèl ti bit done yo montre anba a.
Tablo 1. Pousantaj Baud vs Tan Transmisyon 1-Bit 

Pousantaj Baud 1-Bit transmisyon Tan
4800bps 208.33µs
9600bps 104.16µs
19200bps 52.08µs
115200bps 8.68µs

Download Resous ak Preparasyon

Chapit sa a pral prezante kòd aplikasyon an ak zouti lojisyèl yo itilize a, ansanm ak kijan pou konfigirasyon anyè a ak file chemen.

Bibliyotèk Firmware 

Premyèman, asire ke bibliyotèk Holtek HT32 firmwèr la te telechaje anvan ou sèvi ak kòd aplikasyon an. Lyen telechaje a montre anba a. Isit la gen de opsyon, HT32_M0p_Vyyyymmdd.zip pou seri HT32F5xxxx ak HT32_M3_Vyyyymmdd.zip pou seri HT32F1xxxx. Telechaje epi dekonprime vle a file.

Zip la file gen plizyè dosye ki ka klase kòm Dokiman, Bibliyotèk Firmware, Zouti ak lòt atik, chemen plasman yo montre nan Figi 5. Postal bibliyotèk firmwèr HT32 la. file ak yon file non HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip sitiye anba katab Firmware_Library.

Figi 5. Kontni HT32_M0p_Vyyyymmdd.zip
Kontni

Kòd Aplikasyon an
Telechaje kòd aplikasyon an nan lyen sa a. Kòd aplikasyon an pake nan yon postal file ak yon file non HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Gade Figi 6 pou la file konvansyon non yo.

Figi 6. Kòd aplikasyon File Non Entwodiksyon 

Telechaje lyen: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Kòd Aplikasyon an

File ak Konfigirasyon Anyè
Kòm kòd aplikasyon an pa gen bibliyotèk la firmwèr HT32 files, kòd aplikasyon an ak bibliyotèk firmwèr dekonprese files yo ta dwe mete nan chemen ki kòrèk la anvan yo kòmanse konpilasyon an. Kòd postal aplikasyon an file anjeneral gen youn oswa plis dosye, tankou aplikasyon ak bibliyotèk, jan yo montre nan Figi 7. Mete katab aplikasyon an anba anyè rasin bibliyotèk firmwèr HT32 la pou konplete file konfigirasyon chemen an, jan yo montre nan Figi 8. Altènativman, dekonprime kòd aplikasyon an ak bibliyotèk firmwèr HT32 an menm tan nan menm chemen an pou reyalize menm rezilta konfigirasyon yo.

Figi 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Kontni
Kontni

Figi 8. Chemen dekonpresyon
Chemen dekonpresyon

Lojisyèl Tèminal
Kòd aplikasyon an ka transfere mesaj atravè pò COM pou aplike seleksyon fonksyon oswa ekspozisyon estati. Sa a mande pou bò lame a gen lojisyèl tèminal la enstale davans. Itilizatè yo ka chwazi lojisyèl koneksyon apwopriye, oswa itilize lojisyèl gratis ki gen lisans tankou Tera Term. Nan kòd aplikasyon an, chanèl UART configuré ak yon longè mo 8-bit, pa gen parite, 1 bit stop ak yon vitès baud 115200bps.

Deskripsyon Fonksyonèl

Chapit sa a pral bay yon deskripsyon fonksyonèl pou kòd aplikasyon an, ki gen ladan enfòmasyon sou estrikti anyè, achitekti API, deskripsyon anviwònman, elatriye.

Estrikti Anyè
Kòd aplikasyon an file gen yon dosye aplikasyon. Kouch kap vini an se katab "Module_UART" ki gen de pwogram aplikasyon, "UART_Module_Example" ak "UART_Bridge". Ki enpòtan an fileyo ki nan lis ak dekri anba a.
Tablo 2. Estrikti Anyè Kòd Aplikasyon an

Dosye / File Non Deskripsyon
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Pakèt scripts pou kreye pwojè files
_ProjectSource.ini Inisyalizasyon file pou ajoute kòd sous nan pwojè yo
ht32_board_config.h Enstalasyon file ki gen rapò ak plasman I/O periferik IC
ht32fxxxxx_01_it.c Pwogram sèvis entèwonp file
prensipal.c Kòd sous prensipal pwogram lan
\\application\Module_UART\UART_Bridge*2
_CreateProject.bat Pakèt scripts pou kreye pwojè files
_ProjectSource.ini Inisyalizasyon file pou ajoute kòd sous nan pwojè yo
ht32_board_config.h Enstalasyon file ki gen rapò ak plasman I/O periferik IC
ht32fxxxxx_01_it.c Pwogram sèvis entèwonp file
prensipal.c Kòd sous pwogram prensipal la
uart_bridge.h uart_bridge.c UART pon tèt file ak kòd sous file
\\utilite\middleware
uart_module.h*3 uart_module.c*3 Tèt API file ak kòd sous file
\\ sèvis piblik \ komen
ringbuffer.h ring_buffer.c Lojisyèl bag tanpon header file ak kòd sous file

Nòt: 

  1. Nan "UART_Module_Example" kòd aplikasyon an, API li ak ekri operasyon yo fèt nan yon fason loopback, al gade nan "API Itilizasyon Ex la.amples" seksyon pou plis detay.
  2.  Nan kòd aplikasyon "UART_Bridge", de chanèl UART, UART CH0 ak UART CH1, yo aktive, ak pwotokòl kominikasyon koutim atravè estrikti COMMAND yo aplike ant de aparèy UART yo. Pou plis enfòmasyon, al gade nan "API Itilizasyon Examples” seksyon.
  3. Kòd aplikasyon an bezwen sèvi ak uart_module.c/h files ki gen yon kondisyon pou vèsyon bibliyotèk firmwèr. Kondisyon an ka chanje tan zan tan dapre aktyalizasyon a. Pou konfime egzijans vèsyon bibliyotèk aktyèl la, al gade nan kontni chèk depandans la lè w chèche mo kle "chèk depandans" nan main.c. file. Si vèsyon bibliyotèk firmwèr la pa satisfè kondisyon yo, telechaje dernye vèsyon an nan lyen ki bay nan seksyon "Firmware Library".

API Achitekti
Chak API gen yon CH paramèt enpòtan, ki se Chèn UART. Sa a detèmine ki kanal UART yo dwe kontwole. Aktyèlman jiska kat chanèl UART yo sipòte epi kidonk kat senbòl konstan yo defini jan sa a. Yo itilize sa yo kòm paramèt CH bay API yo baz pou kontwòl.

  • UATM_CH0: paramèt opinyon - kontwole oswa konfigirasyon UART CH0
  • UATM_CH1: paramèt opinyon - kontwole oswa konfigirasyon UART CH1
  • UATM_CH2: paramèt opinyon - kontwole oswa konfigirasyon UART CH2
  • UATM_CH3: paramèt opinyon - kontwole oswa konfigirasyon UART CH3

Espas memwa p ap gaspiye si yo itilize yon sèl kanal UART. Sa a se paske kantite chanèl UART sipòte yo ka mete epi preprocesseur a pral retire kòd chanèl UART ki pa itilize pou ogmante espas memwa ki disponib. Achitekti API a montre nan Figi 9.

Figi 9. Dyagram blòk API Achitekti
Dyagram blòk Achitekti

Chak API konpoze de kat gwoup anviwònman oswa kontwòl UART ki gen rapò ak chanèl pou itilizatè yo sèlman bezwen antre paramèt CH vle a. Pou konfigirasyon API ki enpòtan an, li nesesè sèlman pou gen yon tab paramèt konfigirasyon debaz UART adisyonèl ak fòm estrikti a, USART_InitTypeDef. API a pral aplike konfigirasyon debaz UART selon sa ki paramèt ki nan tablo a. Ale nan seksyon "API Deskripsyon" pou tablo estrikti konfigirasyon debaz UART la.

uart_module.c/.h files sèlman genyen entèwonp (CHx_IRQ) ​​ak estati tablo (CHx Status) nan chak chanèl UART pandan tout paramèt ki nesesè pou kominikasyon UART yo bay pa ht32_board_config.h. Paramèt pyès ki nan konpitè ki enpòtan nan ht32_board_config.h la file yo montre nan tablo ki anba a. Yo bay plis detay nan seksyon "Deskripsyon Anviwònman".

Paramèt pyès ki nan konpitè ki enpòtan nan ht32_board_config.h la gen ladan anviwònman I/O ak anviwònman pò UART fizik, jan sa a.

Tablo 3. Definisyon Senbòl nan ht32_board_config.h

Senbòl Deskripsyon
HTCFG_UARTM_CH0 Non pò UART fizik; Egzample: UART0, UART1...
HTCFG_UARTM0_TX_GPIO_PORT Defini non pò TX pou CH0; Egzample: A, B, C...
HTCFG_UARTM0_TX_GPIO_PIN Defini nimewo PIN TX pou CH0; Egzample: 0 ~ 15
HTCFG_UARTM0_RX_GPIO_PORT Defini non pò RX pou CH0; Egzample: A, B, C...
HTCFG_UARTM0_RX_GPIO_PIN Defini nimewo PIN TX pou CH0; Egzample: 0 ~ 15
HTCFG_UARTM0_TX_BUFFER_SIZE Defini gwosè tanpon TX pou CH0; Egzample: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Defini gwosè tanpon RX pou CH0; Egzample: 128

Pou modifye konfigirasyon chanèl UART AFIO, al gade nan fèy done aparèy ki enpòtan an. Kounye a sèlman I/O definisyon yo pou UART CH0 pran efè kòm sèlman UART CH0 te configuré nan ht32_board_config.h. Pou ajoute UART CH1 ~ 3, definisyon I/O yo dwe ranpli lè w refere a definisyon UART CH0 oswa refere li a seksyon "Anviwònman Modifikasyon ak FAQ".

Gen twa karakteristik prensipal achitekti API: 

  1. Jiska kat chanèl UART yo sipòte. Paramèt opinyon yo se UARTM_CH0, UARTM_CH1, UARTM_CH2 ak UARTM_CH3.
  2.  Kantite chanèl UART yo ka mete epi chanèl ki pa itilize yo pa pral redwi espas memwa ki disponib.
  3. Tout paramèt UART yo ak definisyon I/O yo konplètman separe de API yo. Sa a ogmante konvenyans nan jesyon nan mete valè ak diminye posiblite pou anviwònman kòrèk oswa ki manke.

Anviwònman Deskripsyon 

Seksyon sa a pral prezante paramèt yo nan ht32_board_config.h ak uart_module.h. files.

  1. ht32_board_config.h: Sa a file yo itilize pou definisyon peny ak anviwònman devlopman tablo ki enpòtan, ki gen ladan chanèl IP UART (UART0, UART1, USART0...) itilize pa Twous Starter (SK), korespondan TX / RX kote PIN ak gwosè tanpon TX / RX. Figi 10 montre sa ki nan anviwònman HT32F52352 Starter Kit la. Tou depan de entegrasyon fonksyonèl devlopman an, itilizatè yo ka refere a seksyon "Pin Plasman" nan fèy done aparèy yo itilize a pou aplike definisyon PIN yo. N ap dekri plis detay sou modifikasyon anviwònman an nan seksyon "Modifikasyon anviwònman ak FAQ".
    Figi 10. ht32_board_config.h Anviwònman (HT32F52352)
    Anviwònman
  2. uart_module.h: Sa a se header API a file itilize pa kòd aplikasyon an, ki gen ladann paramèt defo ki enpòtan yo, definisyon fonksyon, elatriye. Jan yo montre nan Figi 11, sa ki nan anviwònman default yo ka ranplase pa konfigirasyon ekstèn, tankou paramèt ki nan ht32_board_config.h. file.
    Figi 11. Anviwònman Default nan uart_module.h
    Anviwònman Default
Deskripsyon API
  1. Kòd aplikasyon kalite done deskripsyon.
    • USART_InitTypeDef
      Sa a se estrikti konfigirasyon debaz UART ki konpoze de konfigirasyon BaudRate, WordLength, StopBits, Parity ak Mode, jan yo montre anba a.
      Varyab Non Kalite Deskripsyon
      USART_BaudRate u32 UART kominikasyon baud vitès
      USART_WordLength u16 Longè mo kominikasyon UART: 7, 8 oswa 9 bit
      USART_StopBits u16 UART kominikasyon sispann bit longè: 1 oswa 2 bit
      USART_Parite u16 Parite kominikasyon UART: menm, enpè, make, espas oswa pa gen parite
      USART_Mode u16 mòd kominikasyon UART; API yo sèlman sipòte mòd nòmal
  2. Anvan w itilize fonksyon API yo, ranpli konfigirasyon debaz UART nan pwogram prensipal la. Konfigirasyon debaz UART pou kòd aplikasyon sa a montre nan Figi 12. Isit la pousantaj baud se 115200bps, longè mo a se 8-bit, longè bit sispann se 1-bit, epi pa gen okenn parite.
    Figi 12. Konfigirasyon debaz UART
    Konfigirasyon debaz
  3. Figi 13 montre fonksyon API yo te deklare nan uart_module.h file. Tablo sa yo eksplike fonksyon an, paramèt opinyon ak itilizasyon fonksyon API yo.
    Figi 13. Deklarasyon Fonksyon API nan uart_module.h 
    Deklarasyon Fonksyon API
Non void UARTM_Init (u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Fonksyon Inisyalizasyon modil UART
  Antre CH chanèl UART
pUART_Init UART de baz konfigirasyon èstrikti konsèy
 uRxTimeOutValue UART RX FIFO valè tan-soti. Lè RX FIFO a resevwa nouvo done kontwa an ap reset ak rekòmanse. Yon fwa kontwa a rive nan valè tan-soti prereglaj la ak entèwonp tan-soti ki koresponn lan te pèmèt, yo pral pwodwi yon entèwonp tan-soti.
 Itilizasyon UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Egzekite konfigirasyon debaz UART//Al gade nan Figi 12 pou konfigirasyon USART_InitStructure
Non u32 UARTM_WriteByte (u32 CH, u8 uData)
Fonksyon UART modil ekri byte operasyon (TX)
Antre CH chanèl UART
uData Done yo dwe ekri
Sòti SIKSÈ Siksè
ERÈ Echwe
Itilizasyon UARTM_WriteByte (UARTM_CH0, 'A'); //UART ekri 1 byte - 'A'
Non u32 UARTM_Write (u32 CH, u8 *pTampon, u32 uLength)
Fonksyon Operasyon ekri modil UART (TX)
 Antre CH chanèl UART
pTapon Pointeur tanpon
uLength Longè done yo dwe ekri
Sòti SIKSÈ Siksè
ERÈ Echwe
 Itilizasyon u8 Test[] = "Sa a se tès!\r\n"; UARTM_Write(UARTM_CH0, Tès, sizeof(Tès) -1); //UART ekri done pBuffer
Non u32 UARTM_ReadByte(u32 CH, u8 *pData)
Fonksyon UART modil li byte operasyon (RX)
Antre CH chanèl UART
pData Adrès pou mete done li yo
Sòti SIKSÈ Siksè
ERÈ Echwe (pa gen done)
   Itilizasyon u8 TempData; si (UARTM_ReadByte(UARTM_CH0, &TempData) == SIKSÈ){UARTM_WriteByte(UARTM_CH0, TempData);}//Si UARTM_ReadByte() retounen SIKKS Lè sa a, UART ekri byte done sa a
Non u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Fonksyon Operasyon li modil UART (RX)
 Antre CH chanèl UART
pTapon Pointeur tanpon
uLength Longè done yo dwe li
Sòti Li konte Yo te li longè done yo
     Itilizasyon u8 Tès2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);si (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() li 5 octets done ak estoke done nan Test2, epi bay konte a byte li pou Len//Ekri done ki soti nan Test2
Non u32 UARTM_GetReadBufferLength(u32 CH)
Fonksyon Jwenn longè tanpon li (RX)
Antre CH chanèl UART
Sòti uLength Li longè tanpon
  Itilizasyon UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inisyalizasyon modil UART pandan (UARTM_GetReadBufferLength(UARTM_CH0) <5);//Tann jiskaske UARTM_ReadBuffer resevwa 5 octets done
Non u32 UARTM_GetWriteBufferLength(u32 CH)
Fonksyon Jwenn longè tanpon ekri (TX)
Antre CH chanèl UART
Sòti uLength Ekri longè tanpon
Non u8 UARTM_IsTxFinished(u32 CH)
Fonksyon Jwenn estati TX la
Antre CH chanèl UART
Sòti VRE TX estati: fini
FO Estati TX: pa fini
      Itilizasyon UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif // API sa a ka itilize pou tcheke estati TX, jan yo montre pi wo a; tann jiskaske API UARTM_WriteByte() fini, sa vle di, estati TX se VRE, epi answit kontinye aksyon ki vin apre yo.//Yon restriksyon te ajoute paske fonksyon sa a pa te ajoute jiskaske nimewo vèsyon SVN nan uart_module.c se 525.
Non anile UARTM_DiscardReadBuffer(u32 CH)
Fonksyon Jete done yo nan tanpon lekti a
Antre CH chanèl UART

Itilizasyon API Egzamples 

Seksyon sa a pral montre API ekri ak li ansyenamples nan kòd aplikasyon "Module_UART" lè l sèvi avèk pwosesis inisyalizasyon an ak "UART_Module_Example” pwosesis kòd aplikasyon an. Anvan yo itilize API yo, itilizatè yo bezwen mete tèt API a file nan kòd sous prensipal pwogram lan file (#include "middleware/uart_module.h").

Jan yo montre nan Figi 14, lè w ap antre nan pwosesis inisyalizasyon an, premye defini estrikti konfigirasyon debaz UART la. Lè sa a, konfigirasyon manm estrikti konfigirasyon debaz UART ki gen ladan BaudRate, WordLength, StopBits, Parite ak Mode. Finalman, rele fonksyon inisyalizasyon API a, fini nan ki endike fen pwosesis inisyalizasyon an. Apre sa, itilizatè yo ka kontinye operasyon ekri ak li ki baze sou konfigirasyon debaz UART prereglaj la.

Figi 14. Organigram Inisyalizasyon
Organigram inisyalizasyon

"UART_Module_Example” kòd aplikasyon demontre API li ak ekri operasyon yo nan yon fason loopback. Diagram pou sa a montre nan Figi 15. Fonksyon API yo itilize yo enkli UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() ak UARTM_GetReadBufferLength(). Yo bay deskripsyon yo nan seksyon "Deskripsyon API".

Figi 15. Organigram Ekri ak Lekti Egzamples
Organigram pou ekri ak li Egzamples

Gen yon lòt kòd aplikasyon "UART_Bridge" anba katab "Module_UART" ki gen rapò file deskripsyon an prezante nan seksyon "Anyè Estrikti". Kòd aplikasyon "UART_Bridge" aktive de chanèl UART, UART CH0 ak UART CH1, ak Lè sa a, pèsonalize pwotokòl kominikasyon ant de aparèy UART yo atravè estrikti COMMAND, gCMD1 ak gCMD2. Sa yo defini nan uart_bridge.c, jan yo montre anba a. UARTBridge_CMD1TypeDef gCMD1:

Varyab Non Kalite Deskripsyon
uHeader u8 Header
uCmd u8 Kòmandman
uData[3] u8 Done

UARTBridge_CMD2TypeDef gCMD2:

Varyab Non Kalite Deskripsyon
uHeader u8 Header
uCmdA u8 Kòmandman A
uCmdB u8 Kòmandman B
uData[3] u8 Done

Nan kòd aplikasyon "UART_Bridge", sèvi ak gCMD1 pou resevwa done kòm yon pake kòmand epi analize li. Lè sa a, dapre pwotokòl kominikasyon Customized, mete gCMD2 kòm yon pake repons epi transmèt li. Sa ki anba la a se yon ansyenample nan yon pake lòd gCMD1) ak yon pake repons (gCMD2). Pake kòmand (UARTBridge_CMD1TypeDef gCMD1):

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

Pake Repons (UARTBridge_CMD2TypeDef gCMD2):

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

Okipasyon Resous
Pran HT32F52352 la kòm yon ansyenample, resous yo okipe pa modil la UART yo montre anba a.

HT32F52352
Gwosè ROM 946 Byte
Gwosè RAM 40*1 + 256*2 Bytes

Nòt:

  1. Varyab mondyal ki gen ladan drapo ak estati pou yon sèl chanèl okipe 40 octets nan RAM.
  2.  Sa a se pou yon kondisyon kote yon sèl chanèl yo itilize ak gwosè a tanpon TX / RX se 128/128 bytes. Ka gwosè a tanpon dwe mete selon kondisyon aplikasyon yo.

Tablo 4. Kòd Aplikasyon Okipasyon Resous 

  • Anviwònman konpilasyon: MDK-Arm V5.36, ARMCC V5.06 aktyalizasyon 7 (build 960)
  • Optimize opsyon: Nivo 2 (-O2)

Enstriksyon pou itilize

Chapit sa a pral prezante preparasyon anviwònman an pou kòd aplikasyon "Module_UART", ansanm ak etap konpilasyon ak tès yo.

Preparasyon anviwònman an
Materyèl ak lojisyèl ki nesesè pou kòd aplikasyon "Module_UART" yo endike anba a.
Tablo 5. Materyèl/Lojisyèl Preparasyon anviwònman an 

Materyèl/Lojisyèl Konte Remak
Twous pou kòmanse 1 Nòt aplikasyon sa a sèvi ak Twous Starter HT32F52352 kòm yon ansyenample
USB kab 1 Mikwo USB, konekte ak PC
Kòd Aplikasyon an Chemen telechaje a, file ak konfigirasyon anyè yo prezante nan seksyon "Telechaje Resous ak Preparasyon". Chemen: "\\application\Module_UART\UART_Module_Example ”
Tera tèm Gade nan seksyon "Tèminal Software".
Keil IDE Keil uVision V5.xx

Premyèman, sèvi ak Twous Starter HT32F52352 konbine avèk fonksyon Virtual COM Port (VCP) e-Link32 Lite pou entwodiksyon aplikasyon UART. Sa a mande pou yo aplike preparasyon anviwònman an:

  1. Gen de interfaces USB sou tablo a. Sèvi ak kab USB a pou konekte PC a ak koòdone eLink32 Lite sou tablo a jan yo montre nan Figi 16-(a).
  2. Kòm kòd aplikasyon an bezwen sèvi ak fonksyon e-Link32 Lite Virtual COM Port (VCP), asire ke PAx * 2 ak DAP_Tx nan UART Jumper-J2 * 1 te kout lè l sèvi avèk yon kavalye. Figi 2-(b) endike pozisyon J16 a.

Remak

  1. J2 sou Twous Starter a gen de opsyon, PAx ak DAP_Tx kout oswa PAx ak RS232_Tx kout. Gade manyèl itilizatè Starter Kit la pou jwenn fonksyon detaye anviwònman yo.
  2. Kote PIN MCU UART RX sou diferan Twous Starter yo diferan. Ansyen sa aample itilize PAx pou endike PIN RX a.

Figi 16. Dyagram blòk HT32 Starter Kit
Dyagram blòk twous

Koulye a, sèvi ak tablo sib itilizatè a konbine avèk fonksyon Virtual COM Port (VCP) nan e-Link32 Pro a pou entwodiksyon aplikasyon UART. Sa a mande pou yo aplike preparasyon anviwònman an:

  1. Yon bò nan e-Link32 Pro konekte ak yon PC lè l sèvi avèk yon kab Mini USB ak lòt bò a konekte ak tablo sib itilizatè a atravè kab gri 10-bit li yo. Koneksyon ki genyen ant koòdone SWD nan kab ak tablo sib yo aplike lè l sèvi avèk liy Dupont, jan yo montre nan Figi 17-(a).
  2. Pins kominikasyon seri e-Link32 Pro a se Pin#7 VCOM_RXD ak Pin#8-VCOM_TXD. Sa yo ta dwe konekte ak broch TX ak RX nan tablo sib itilizatè a, jan yo montre nan Figi 17-(b).
    Figi 17. Dyagram blòk e-Link32 Pro + User Target Board
    Konsèy sib itilizatè

Konpilasyon ak tès
Seksyon sa a pral pran "application\Module_UART\UART_Module_Example" kòm yon ansyenample pou prezante pwosesis konpilasyon ak tès yo. Anvan sa, asire w ke tout preparasyon ki dekri nan seksyon anvan an te aplike epi yo te telechaje lojisyèl tèminal Tera Term la.

Etap operasyon detaye yo rezime anba a.
Etap 1. Tès pouvwa-sou

Mete anviwònman pyès ki nan konpitè jan sa dekri nan seksyon anvan an. Apre pouvwa-sou, pouvwa D9 ki ap dirije ki sou bò gòch la nan Twous Starter a pral eklere. D1 USB ki ap dirije sou e-Link32 Lite sou bò dwat anwo a pral eklere apre enimerasyon USB a fini. Si D1 pa eklere apre yon peryòd tan long, konfime si wi ou non kab USB a kapab kominike. Si se pa sa, retire li epi re-mete li ankò.

Etap 2. Jenere yon pwojè
Louvri aplikasyon an\Module_UART\UART_Module_Example dosye, klike sou _CreateProject.bat la file pou jenere yon pwojè, jan yo montre nan Figi 18. Piske nòt aplikasyon sa a sèvi ak Twous Starter HT32F52352, louvri pwojè Keil IDE “Project_52352.uvprojx” ki sitiye anba katab MDK_ARMv5 la.

Figi 18. Egzekite _CreateProject.bat pou jenere pwojè
Jenere Pwojè

Etap 3. Konpile ak pwogram
Apre pwojè a te louvri, premye klike sou "Build" (oswa itilize chemen kout "F7"), Lè sa a, klike sou "Download" (oswa itilize chemen kout "F8"). Apre sa, rezilta yo bati ak telechaje yo pral parèt nan fenèt la Bati Sòti. Gade figi 19.

Figi 19. Konstwi ak telechaje rezilta yo
Bati ak telechaje rezilta yo

Etap 4. Louvri lojisyèl Tera Term ak konfigirasyon pò seri a
Louvri lojisyèl Tera Term ak pò COM la. Peye atansyon sou si nimewo pò COM ki te pwodwi pa Starter Kit la kòrèk oswa ou pa. Lè sa a klike sou "Enstalasyon >> Serial Port" pou antre nan koòdone konfigirasyon an. Konfigirasyon koòdone UART nan kòd aplikasyon "Module_UART" yo dekri nan seksyon "Tèminal Software". Rezilta konfigirasyon an montre nan Figi 20.

Figi 20. Tera Term Serial Port Setup Rezilta
Rezilta konfigirasyon
Etap 5. Reyajiste sistèm lan ak tès
Peze kle reset SK - B1 Reyajiste. Apre sa, yon "ABCTi se tès!" mesaj pral ye
transmèt atravè API a epi yo pral parèt nan fenèt Tera Term, jan yo montre nan Figi 21. Konsènan fonksyon resevwa a, lè w ap antre done nan fenèt Tera Term, API ki enpòtan yo pral itilize pou detèmine longè tanpon resevwa a. Lè done yo resevwa pa PC rive nan 5 bytes, yo pral resevwa 5 bytes nan done yo pral voye soti sekans. Jan yo montre nan Figi 22, done yo antre nan sekans se "1, 2, 3, 4, 5", ki resevwa epi detèmine atravè API a. Apre sa, done "1, 2, 3, 4, 5" yo pral enprime apre senk antre yo.

Figi 21. Tès Fonksyonèl Kòd Aplikasyon "Module_UART" - Transmèt
Kòd Aplikasyon Tès Fonksyonèl

Figi 22. Tès Fonksyonèl Kòd Aplikasyon “Module_UART” – Resevwa
Kòd Aplikasyon Tès Fonksyonèl

Enstriksyon transplantasyon
Seksyon sa a pral prezante kijan pou entegre API yo nan pwojè itilizatè a.
Etap 1. Ajoute uart_module.c la file nan pwojè a. Dwa-klike sou katab itilizatè a. Chwazi "Ajoute ki deja egziste Files nan gwoup 'Itilizatè'...”, Lè sa a, chwazi uart_module.c la file epi klike sou "Ajoute", jan yo montre nan Figi 23. Gade nan seksyon "Anyè Estrikti" pou file deskripsyon chemen an.

Figi 23. Ajoute uart_module.c File nan Pwojè
File nan Pwojè

Etap 2. Ajoute ring_buffer.c file nan pwojè a. Dwa-klike sou katab itilizatè a. Chwazi "Ajoute ki deja egziste Files nan gwoup 'Itilizatè'...”, Lè sa a, chwazi ring_buffer.c file epi klike sou "Ajoute", jan yo montre nan Figi 24.\ Ale nan seksyon "Anyè Estrikti" pou file deskripsyon chemen an.
Figi 24. Ajoute ring_buffer.c File nan Pwojè 
File nan Pwojè

Etap 3. Mete header API a file nan kòmansman main.c, jan yo montre nan Figi 25. (Ext: #include “middleware/uart_module.h”)
Figi 25. Mete Header API File to main.c
Mete API Header File

Etap 4. Aplike paramèt ki nesesè pou kominikasyon UART lè l sèvi avèk ht32_board_config.h file. Sa a se prezante an detay nan seksyon "Deskripsyon Anviwònman" ak "Modifikasyon Anviwònman ak FAQ".

Anviwònman Modifikasyon ak FAQ 

Seksyon sa a pral prezante kijan pou modifye paramèt UART yo epi eksplike kèk kesyon komen yo rankontre pandan w ap itilize.

Chanje Plasman Pin UART 

  1. An referans a HT32F52352 Datasheet "Pin Assignment" chapit la, gade nan tablo altènatif Katografik Fonksyon ki bay lis fonksyon AFIO nan kalite aparèy la. Pou pikèt ki enpòtan pou UART yo, al gade nan kolòn "AF6 USART/UART", jan yo montre nan Figi 26.
    Figi 26. HT32F52352 Tablo Katograf Fonksyon Altènatif
    Tablo altènatif kat fonksyon
  2. Etap sa a pral gide itilizatè yo pou yo lokalize broch UART korespondan yo lè l sèvi avèk tablo ki anwo a. HT32F52352 egzanp lanample itilize USART1 kòm chanèl default la. Isit la, broch TX ak RX yo USR1_TX ak USR1_RX epi yo sitiye sou PA4 ak PA5 respektivman. Figi 27 montre korespondans peny la ansanm ak definisyon peny yo nan "ht32_board_config.h". Jaden yo vid nan "Pake" nan tablo plasman pin vle di ke pa gen okenn GPIO ki enpòtan nan pake sa a. Pou modifye broch UART yo, jwenn kote pin sib yo epi redefini broch yo lè l sèvi avèk "ht32_board_config.h" file.
    Figi 27. Korespondans Pin ak Modifikasyon Anviwònman
    Anviwònman Modifikasyon

Ajoute yon chanèl UART
Pran HT32F52352 HTCFG_UARTM_CH1 a kòm yon ansyenample, isit la li dekri kijan pou ajoute yon nouvo chanèl UART.

Modifye ht32_board_config.h la file
An referans a HT32F52352 Datasheet "Pin Assignment" chapit la, gade nan tablo altènatif Katografik Fonksyon ki bay lis fonksyon AFIO nan kalite aparèy la. Kòm USART1 te itilize kòm HTCFG_UARTM_CH0, HTCFG_UARTM_CH1 ki fèk ajoute a ka chwazi USART0. Isit la, broch TX ak RX yo sitiye sou PA2 ak PA3 respektivman, jan yo montre nan mwatye siperyè nan Figi 28. Modifikasyon ki koresponn yo aplike lè l sèvi avèk liy kòd 120 ~ 126 nan ht32_board_config.h, jan yo montre nan bwat la pwentiye wouj nan Figi a. 28.

Figi 28. Ajoute yon chanèl UART
Chèn UART

FAQ
Q: Nan etap 5 nan seksyon Konpilasyon ak Tès, tès fonksyonèl transmèt la nòmal. Isit la, "ABCThis se tès la!" mesaj te parèt avèk siksè, sepandan pou fonksyon resevwa a, poukisa senk valè opinyon yo pa retounen ak parèt?
A: Tcheke si broch MCU UART RX ak DAP_Tx nan UART Jumper-J2 yo te kout lè l sèvi avèk yon kavalye. Kòm kòd aplikasyon "Module_UART" la bezwen sèvi ak Virtual COM Port (VCP) nan e-Link32 Lite, anviwònman kout sikwi a ta dwe aplike nan de broch gòch UART Jumper-J2, jan yo montre nan Figi 29.

Figi 29. Anviwònman UART Jumper-J2
UART kavalye

K: Apre Lè w ap egzekite "Build" (oswa chemen kout "F7"), yon mesaj erè parèt ki endike ke vèsyon bibliyotèk firmwèr la pi gran pase sa ki nesesè? Gade Figi 30.
A: Aplikasyon kòd aplikasyon "Module_UART" la bezwen gen ladan uart_module.c/h files ki gen yon kondisyon pou yon sèten vèsyon bibliyotèk firmwèr. Lè yon mesaj erè sa a parèt, sa vle di bibliyotèk firmwèr ki itilize kounye a se yon vèsyon ki pi gran. Se poutèt sa, li nesesè telechaje dernye vèsyon an atravè lyen ki bay nan seksyon "Firmware Library".

Figi 30. Mesaj erè vèsyon bibliyotèk la
Mesaj erè vèsyon an

Konklizyon

Dokiman sa a bay yon entwodiksyon debaz pou ede itilizatè yo ak yon pi bon konpreyansyon sou kòd aplikasyon "Module_UART" ak pwotokòl kominikasyon UART. Sa a te swiv pa telechaje resous la ak preparasyon. Chapit deskripsyon fonksyonèl la prezante file estrikti anyè, achitekti API, deskripsyon API ak itilizasyon API examples. Chapit Enstriksyon pou Itilizasyon an te demontre preparasyon anviwònman an, konpilasyon ak tès kòd aplikasyon "Module_UART". Li te bay tou enstriksyon pou grèf kòd ak anviwònman modifikasyon epi li te eksplike kèk pwoblèm komen ki ka rankontre. Tout sa yo konbine pral pèmèt itilizatè yo byen vit konprann kijan pou yo itilize API yo epi imedyatman diminye kantite tan yo kòmanse.

Materyèl referans

Pou plis enfòmasyon, al gade nan Holtek la websit: www.holtek.com

Vèsyon ak enfòmasyon modifikasyon

Dat Otè Lage Enfòmasyon sou modifikasyon
2022.04.30 蔡期育(Chi-Yu Tsai) V1.00 Premye vèsyon

Limit responsabilite nou

Tout enfòmasyon, mak, logo, grafik, videyo, klip odyo, lyen ak lòt bagay ki parèt sou sa a. websit ("Enfòmasyon") yo se pou referans sèlman epi yo ka chanje nenpòt ki lè san avètisman alavans ak nan diskresyon Holtek Semiconductor Inc. ak konpayi ki gen rapò ak li yo (ki aprè 'Holtek', 'konpayi an', 'nou', '. nou' oswa 'nou'). Pandan ke Holtek fè efò asire presizyon nan Enfòmasyon sou sa a websit, pa gen okenn garanti eksprime oswa enplisit pa Holtek bay presizyon nan enfòmasyon an. Holtek pa dwe pote okenn responsablite pou nenpòt ki pa kòrèk oswa flit.
Holtek pa dwe responsab pou nenpòt domaj (ki gen ladan men pa limite a viris òdinatè, pwoblèm sistèm oswa pèt done) kèlkeswa sa ki rive nan itilize oswa an koneksyon avèk itilizasyon sa a. websit pa nenpòt pati. Ka gen lyen nan zòn sa a, ki pèmèt ou vizite a websit lòt konpayi yo.
Sa yo websit yo pa kontwole pa Holtek. Holtek p ap pote okenn responsablite ak okenn garanti pou nenpòt enfòmasyon ki parèt nan sit sa yo. Hyperlinks nan lòt websit yo sou pwòp risk ou.

Limitasyon Responsablite

Nan okenn ka Holtek Limited pa ta dwe responsab anvè okenn lòt pati pou nenpòt pèt oswa domaj kèlkeswa sa oswa nenpòt ki jan ki te koze dirèkteman oswa endirèkteman an koneksyon avèk aksè ou a oswa itilizasyon sa a. websit, kontni an oswa nenpòt machandiz, materyèl oswa sèvis.

Lwa k ap dirije
Limit responsabilite nou ki nan la websit la dwe gouvène ak entèprete an akò ak lwa yo nan Repiblik Lachin nan. Itilizatè yo pral soumèt bay jiridiksyon ki pa eksklizif nan tribinal Repiblik Lachin yo.

Mizajou nan Limit responsabilite nou
Holtek rezève dwa pou mete ajou Limit responsabilite nou an nenpòt ki lè avèk oswa san avètisman davans, tout chanjman yo efektif imedyatman apre yo fin poste nan websit.

Dokiman / Resous

Nòt aplikasyon HOLTEK HT32 MCU UART [pdfManyèl Itilizatè
HT32 MCU, UART Aplikasyon Remak, HT32 MCU UART, Aplikasyon Remak, HT32, MCU UART Aplikasyon Remak, HT32 MCU UART Aplikasyon Remak

Referans

Kite yon kòmantè

Adrès imel ou p ap pibliye. Jaden obligatwa yo make *