Používateľská príručka k aplikácii HOLTEK HT32 MCU UART
Aplikačná poznámka HOLTEK HT32 MCU UART

Úvod

Univerzálny asynchrónny prijímač/vysielač – UART je široko používané rozhranie sériového prenosu, ktoré poskytuje flexibilný asynchrónny plne duplexný prenos dát. Aplikačný kód „Module_UART“ uvedený v tejto poznámke k aplikácii používa prerušenia TX/RX so softvérovými kruhovými vyrovnávacími pamäťami na implementáciu jednoduchých funkcií prenosu/prijímania UART prostredníctvom rozhraní API, ktorých súvisiace funkcie sú opísané nižšie. To zjednoduší celý proces prenosu dát a umožní používateľom rýchlo pochopiť a implementovať komunikačné aplikácie UART.

  • Funkcie vysielania/prijímania: čítanie bajtu, zápis bajtu, čítanie z vyrovnávacej pamäte, zápis do vyrovnávacej pamäte atď.
  • Stavové funkcie: získanie dĺžky vyrovnávacej pamäte, stav TX atď.

Tento dokument najprv predstaví komunikačný protokol UART, ktorý používateľom pomôže lepšie pochopiť komunikáciu UART od princípu až po aplikáciu. Potom nasleduje stiahnutie a príprava zdrojov potrebných pre kód aplikácie, vrátane knižnice firmvéru, stiahnutia kódu aplikácie, file a konfiguráciu adresára, ako aj úvod do softvérového nástroja terminálu použitého v poznámke k aplikácii. V kapitole Funkčný popis bude predstavená adresárová štruktúra kódu aplikácie, nastavenie parametrov a popis API. Využitie API bude popísané pomocou aplikačného kódu „Module_UART“ a bude tiež uvedená spotreba prostriedkov Flash/RAM požadovaná pre API. Kapitola Návod na použitie prevedie používateľa krokmi environmentálnej prípravy, zostavenia a testu, aby sa potvrdilo, že kód aplikácie bude správne fungovať. Potom poskytne pokyny vysvetľujúce, ako integrovať rozhrania API do projektov používateľa, a nakoniec poskytne odkaz na úpravy a bežné problémy, s ktorými sa môžete stretnúť.

Použité skratky: 

  • UART: Univerzálny asynchrónny prijímač/vysielač
  • API: Aplikačné programové rozhranie
  • LSB: Najmenej významný bit
  • MSB: Najdôležitejší bit
  • PC: Osobný počítač
  • SK: Starter Kit, vývojová doska HT32
  • IDE: Integrované vývojové prostredie

Komunikačný protokol UART

UART je sériový komunikačný typ rozhrania, ktoré implementuje paralelnú konverziu dát na sériový vo svojom vysielači a potom sériovo komunikuje s podobným prijímačom. Prijímač potom po prijatí dát vykoná sériovú-paralelnú konverziu dát. Obrázok 1 zobrazuje schematický diagram sériovej komunikácie, ktorý ukazuje, ako sa dáta prenášajú v bitovom poradí. Preto pre obojsmernú komunikáciu medzi vysielačom a prijímačom sú potrebné iba dva vodiče, TX a RX, na sériový prenos dát medzi sebou. TX je kolík, na ktorom UART prenáša sériové dáta a je pripojený k RX kolíku prijímača. Preto zariadenia vysielača a prijímača musia prepojiť svoje kolíky TX a RX, aby mohli vykonávať obojsmernú komunikáciu UART, ako je znázornené na Obrázok 2.

Obrázok 1. Schéma sériovej komunikácie
Schéma sériovej komunikácie

Obrázok 2. Schéma obvodu UART
Schéma obvodu UART

Počas sériovej komunikácie UART je prenos dát asynchrónny. To znamená, že medzi vysielačom a prijímačom nie sú žiadne hodiny ani iný synchronizačný signál. Tu sa používa prenosová rýchlosť, čo je rýchlosť prenosu/prijímania sériových dát a ktorá je nastavená oboma stranami pred prenosom dát. Okrem toho sa na začiatok a koniec dátového paketu pridajú špeciálne bity, ako sú štartovacie a stop bity, aby sa vytvoril kompletný dátový paket UART. Obrázok 3 zobrazuje štruktúru dátového paketu UART, zatiaľ čo obrázok 4 zobrazuje 8-bitový dátový paket UART bez paritného bitu.
Obrázok 3. Štruktúra dátových paketov UART
Štruktúra dátových paketov UART

Obrázok 4. 8-bitový formát dátového paketu UART
Formát dátových paketov
Každá časť dátového paketu UART je uvedená v poradí nižšie.

  • Štart bit: Označuje začiatok dátového paketu. Pin UART TX zvyčajne zostáva na vysokej logickej úrovni pred spustením prenosu. Ak sa spustí prenos dát, vysielač UART potiahne TX kolík z vysokej na nízku, tj z 1 na 0, a potom ho tam podrží počas jedného hodinového cyklu. Prijímač UART začne čítať údaje, keď sa na kolíku RX zistí prechod z vysokej na nízku úroveň.
  • údaje: Ide o aktuálne prenesené dáta s dĺžkou dát 7, 8 alebo 9 bitov. Dáta sa zvyčajne najskôr prenesú pomocou LSB.
  • Paritný bit: Číslo logickej „1“ v údajoch sa používa na určenie, či sa nejaké údaje počas prenosu zmenili. Pre párnu paritu by celkový počet logickej „1“ v údajoch mal byť párne číslo, naopak, celkový počet logickej „1“ v údajoch by mal byť nepárne číslo pre nepárnu paritu.
  • Stop Bit: Toto indikuje koniec dátového paketu, kde UART vysielač potiahne TX kolík z nízkej na vysokú, tj z 0 na 1, a potom ho tam podrží po dobu 1 alebo 2 bitov.

Ako už bolo spomenuté, keďže v obvode UART nie je žiadny hodinový signál, musí byť medzi vysielačom a prijímačom definovaná rovnaká rýchlosť prenosu/prijímania sériových dát, ktorá je známa ako prenosová rýchlosť, aby sa dosiahol bezchybný prenos. Prenosová rýchlosť je definovaná počtom bitov prenesených za sekundu v bps (bit za sekundu). Niektoré štandardné a bežne používané prenosové rýchlosti sú 4800bps, 9600bps, 19200bps, 115200bps atď. Zodpovedajúci čas potrebný na prenos jedného dátového bitu je uvedený nižšie.
Tabuľka 1. Prenosová rýchlosť vs. 1-bitový prenosový čas 

prenosová rýchlosť 1-bitový prenos Čas
4800 bps 208.33 us
9600 bps 104.16 us
19200 bps 52.08 us
115200 bps 8.68 us

Stiahnutie a príprava zdrojov

Táto kapitola predstaví aplikačný kód a použitý softvérový nástroj, ako aj spôsob konfigurácie adresára a file cesta.

Firmvérová knižnica 

Najprv sa pred použitím kódu aplikácie uistite, že bola stiahnutá knižnica firmvéru Holtek HT32. Odkaz na stiahnutie je uvedený nižšie. Tu sú dve možnosti, HT32_M0p_Vyyyymmdd.zip pre sériu HT32F5xxxx a HT32_M3_Vyyyymmdd.zip pre sériu HT32F1xxxx. Stiahnite a rozbaľte požadované file.

Zips file obsahuje niekoľko priečinkov, ktoré možno klasifikovať ako Dokument, Knižnica firmvéru, Nástroje a ďalšie položky, ktorých cesta umiestnenia je znázornená na obrázku 5. Knižnica firmvéru HT32 zip file s a file názov HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip sa nachádza v priečinku Firmware_Library.

Obrázok 5. HT32_M0p_Vyyyymmdd.zip Obsah
Obsah

Kód aplikácie
Stiahnite si kód aplikácie z nasledujúceho odkazu. Kód aplikácie je zabalený do zipsu file s a file názov HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Pozri Obrázok 6 pre file menné konvencie.

Obrázok 6. Kód aplikácie File Názov Úvod 

Odkaz na stiahnutie: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Kód aplikácie

File a Konfigurácia adresára
Keďže kód aplikácie neobsahuje knižnicu firmvéru HT32 files, kód aplikácie a knižnica firmvéru sa rozbalili files by mali byť umiestnené na správnej ceste pred spustením kompilácie. Kód aplikácie zip file zvyčajne obsahuje jeden alebo viac priečinkov, ako je aplikácia a knižnica, ako je znázornené na obrázku 7. Umiestnite priečinok aplikácie do koreňového adresára knižnice firmvéru HT32, aby ste dokončili file konfiguráciu cesty, ako je znázornené na obrázku 8. Alternatívne rozbaľte kód aplikácie a knižnicu firmvéru HT32 súčasne do rovnakej cesty, aby ste dosiahli rovnaké výsledky konfigurácie.

Obrázok 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Obsah
Obsah

Obrázok 8. Dekompresná cesta
Dekompresná cesta

Terminálový softvér
Aplikačný kód môže prenášať správy cez port COM na realizáciu výberu funkcií alebo zobrazenia stavu. To vyžaduje, aby hostiteľská strana mala vopred nainštalovaný softvér terminálu. Používatelia si môžu vybrať vhodný spojovací softvér alebo použiť bezplatný licencovaný softvér, ako je Tera Term. V kóde aplikácie je kanál UART nakonfigurovaný s dĺžkou slova 8 bitov, bez parity, 1 stop bit a prenosovou rýchlosťou 115200 XNUMX bps.

Popis funkcie

Táto kapitola poskytne funkčný popis kódu aplikácie vrátane informácií o štruktúre adresárov, architektúre API, popise nastavení atď

Adresárová štruktúra
Kód aplikácie file obsahuje priečinok aplikácie. Ďalšou vrstvou je priečinok „Module_UART“, ktorý obsahuje dva aplikačné programy, „UART_Module_Example“ a „UART_Bridge“. Relevantný filesú uvedené a opísané nižšie.
Tabuľka 2. Štruktúra adresára kódu aplikácie

Priečinok / File Meno Popis
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Dávkové skripty na vytvorenie projektu files
_ProjectSource.ini Inicializácia file na pridávanie zdrojového kódu do projektov
ht32_board_config.h Nastavenie file súvisiace s priradením I/O periférií IC
ht32fxxxxx_01_it.c Prerušiť servisný program file
main.c Hlavný zdrojový kód programu
\\application\Module_UART\UART_Bridge*2
_CreateProject.bat Dávkové skripty na vytvorenie projektu files
_ProjectSource.ini Inicializácia file na pridávanie zdrojového kódu do projektov
ht32_board_config.h Nastavenie file súvisiace s priradením I/O periférií IC
ht32fxxxxx_01_it.c Prerušiť servisný program file
main.c Zdrojový kód hlavného programu
uart_bridge.h uart_bridge.c Hlavička mosta UART file a zdrojový kód file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 Hlavička API file a zdrojový kód file
\\ utility\ common
ringbuffer.h ring_buffer.c Hlavička softvérovej kruhovej vyrovnávacej pamäte file a zdrojový kód file

Poznámka: 

  1. V „UART_Module_Example“ aplikačný kód, operácie čítania a zápisu API sa vykonávajú spôsobom spätnej slučky, pozrite si „Príklad použitia APIamples“ pre viac podrobností.
  2.  V kóde aplikácie „UART_Bridge“ sú aktivované dva kanály UART, UART CH0 a UART CH1, a medzi týmito dvoma zariadeniami UART je implementovaný vlastný komunikačný protokol prostredníctvom štruktúr COMMAND. Ďalšie informácie nájdete v časti „API Usage Examples“.
  3. Kód aplikácie musí používať uart_module.c/h files, ktoré majú požiadavku na verziu knižnice firmvéru. Požiadavka sa môže z času na čas meniť podľa aktualizácie. Ak chcete potvrdiť aktuálnu požiadavku na verziu knižnice firmvéru, pozrite si obsah kontroly závislostí vyhľadaním kľúčového slova „Kontrola závislosti“ v main.c file. Ak verzia knižnice firmvéru nespĺňa požiadavky, stiahnite si najnovšiu verziu z odkazu uvedeného v časti „Knižnica firmvéru“.

Architektúra API
Každé API má dôležitý parameter CH, ktorým je UART Channel. Toto určuje, ktorý kanál UART sa má ovládať. V súčasnosti sú podporované až štyri kanály UART, a preto sú štyri konštantné symboly definované nasledovne. Tieto sa používajú ako parameter CH, ktorý poskytuje API základ pre kontrolu.

  • UARTM_CH0: vstupný parameter – ovláda alebo konfiguruje UART CH0
  • UARTM_CH1: vstupný parameter – ovláda alebo konfiguruje UART CH1
  • UARTM_CH2: vstupný parameter – ovláda alebo konfiguruje UART CH2
  • UARTM_CH3: vstupný parameter – ovláda alebo konfiguruje UART CH3

Pamäťový priestor nebude plytvaný, ak sa použije iba jeden kanál UART. Je to preto, že je možné nastaviť počet podporovaných kanálov UART a nepoužitý kód kanála UART odstráni preprocesor, aby sa zväčšil dostupný priestor v pamäti. Architektúra API je znázornená v Obrázok 9.

Obrázok 9. Blokový diagram architektúry API
Bloková schéma architektúry

Každé API sa skladá zo štyroch skupín nastavení alebo ovládacích prvkov súvisiacich s kanálom UART, takže používatelia musia zadať iba požadovaný parameter CH. Na konfiguráciu príslušného API je potrebné mať iba ďalšiu tabuľku základných konfiguračných parametrov UART s formulárom štruktúry USART_InitTypeDef. API implementuje základnú konfiguráciu UART podľa obsahu parametrov v tabuľke. Tabuľku základnej konfigurácie UART nájdete v časti „Popis API“.

Súbor uart_module.c/.h files obsahujú iba prerušenie (CHx_IRQ) ​​a stavovú tabuľku (CHx Status) každého UART kanálu, pričom všetky nastavenia potrebné pre UART komunikáciu poskytuje ht32_board_config.h. Hardvérové ​​relevantné parametre v súbore ht32_board_config.h file sú uvedené v tabuľke nižšie. Ďalšie podrobnosti sú uvedené v časti „Popis nastavenia“.

Hardvérové ​​relevantné parametre v ht32_board_config.h zahŕňajú nastavenia I/O a nastavenia fyzického portu UART, ako je uvedené nižšie.

Tabuľka 3. Definícia Symboly v ht32_board_config.h

Symbol Popis
HTCFG_UARTM_CH0 Fyzický názov portu UART; Naprampsúbor: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Definuje názov portu TX pre CH0; Naprample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Definuje číslo pinu TX pre CH0; Naprample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Definuje názov portu RX pre CH0; Naprample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Definuje číslo pinu TX pre CH0; Naprample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Definuje veľkosť vyrovnávacej pamäte TX pre CH0; Naprample: 128 XNUMX
HTCFG_UARTM0_RX_BUFFER_SIZE Definuje veľkosť vyrovnávacej pamäte RX pre CH0; Naprample: 128 XNUMX

Ak chcete upraviť konfiguráciu AFIO kanála UART, pozrite si príslušný údajový list zariadenia. V súčasnosti sú účinné iba definície I/O pre UART CH0, pretože v ht0_board_config.h bol nakonfigurovaný iba UART CH32. Ak chcete pridať UART CH1~3, ich I/O definície musia byť dokončené podľa definície UART CH0 alebo podľa časti „Úprava nastavení a často kladené otázky“.

Existujú tri hlavné funkcie architektúry API: 

  1. Podporované sú až štyri kanály UART. Ich vstupné parametre sú UARTM_CH0, UARTM_CH1, UARTM_CH2 a UARTM_CH3.
  2.  Je možné nastaviť počet kanálov UART a nepoužívané kanály neznížia dostupné miesto v pamäti.
  3. Všetky nastavenia UART a I/O definície sú úplne oddelené od API. To zvyšuje pohodlie správy pri nastavovaní hodnôt a znižuje možnosť nesprávnych alebo chýbajúcich nastavení.

Popis nastavenia 

Táto časť predstaví nastavenia parametrov v súboroch ht32_board_config.h a uart_module.h files.

  1. ht32_board_config.h: Toto file sa používa na definície pinov a príslušné nastavenia vývojovej dosky, ktoré zahŕňajú UART IP kanál (UART0, UART1, USART0…) používaný Starter Kit (SK), zodpovedajúce umiestnenia TX/RX pinov a veľkosť TX/RX vyrovnávacej pamäte. Obrázok 10 zobrazuje obsah nastavenia štartovacej súpravy HT32F52352. V závislosti od funkčnej integrácie vývoja si používatelia môžu na implementáciu definícií pinov pozrieť časť „Priradenie pinov“ v údajovom liste použitého zariadenia. Viac podrobností o úprave nastavení bude popísané v časti „Úprava nastavení a často kladené otázky“.
    Obrázok 10. Nastavenia ht32_board_config.h (HT32F52352)
    Nastavenia
  2. uart_module.h: Toto je hlavička API file používa kód aplikácie, ktorý zahŕňa príslušné predvolené nastavenia, definície funkcií atď. Ako je znázornené na obrázku 11, obsah predvolených nastavení možno prepísať externými konfiguráciami, ako sú nastavenia v súbore ht32_board_config.h file.
    Obrázok 11. Predvolené nastavenia v uart_module.h
    Predvolené nastavenia
Popis API
  1. Popis dátového typu kódu aplikácie.
    • USART_InitTypeDef
      Toto je základná konfiguračná štruktúra UART, ktorá sa skladá z konfigurácií BaudRate, WordLength, StopBits, Parity a Mode, ako je uvedené nižšie.
      Variabilné Meno Typ Popis
      USART_BaudRate u32 Prenosová rýchlosť komunikácie UART
      USART_WordLength u16 Dĺžka komunikačného slova UART: 7, 8 alebo 9 bitov
      USART_StopBits u16 Dĺžka bitov zastavenia komunikácie UART: 1 alebo 2 bity
      USART_Parita u16 Parita komunikácie UART: párna, nepárna, značka, medzera alebo žiadna parita
      USART_Mode u16 komunikačný režim UART; API podporujú iba normálny režim
  2. Pred použitím funkcií API dokončite základnú konfiguráciu UART v hlavnom programe. Základná konfigurácia UART pre tento aplikačný kód je znázornená na obrázku 12. Tu je prenosová rýchlosť 115200 bps, dĺžka slova je 8 bitov, dĺžka stop bitu je 1 bit a neexistuje žiadna parita.
    Obrázok 12. Základná konfigurácia UART
    Základná konfigurácia
  3. Obrázok 13 zobrazuje funkcie API deklarované v súbore uart_module.h file. Nasledujúce tabuľky vysvetľujú funkciu, vstupné parametre a použitie funkcií API.
    Obrázok 13. Deklarácie funkcií API v súbore uart_module.h 
    Deklarácie funkcií API
Meno void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funkcia Inicializácia modulu UART
  Vstup CH UART kanál
pUART_Init UART základnej konfiguračnej štruktúry ukazovateľ
 uRxTimeOutValue Hodnota časového limitu UART RX FIFO. Keď RX FIFO prijme nové dáta, počítadlo sa vynuluje a reštartuje. Keď počítadlo dosiahne prednastavenú hodnotu časového limitu a povolí sa príslušné prerušenie časového limitu, vygeneruje sa prerušenie časového limitu.
 Použitie UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Vykonanie základnej konfigurácie UART//Konfiguráciu USART_InitStructure nájdete na obrázku 12
Meno u32 UARTM_WriteByte(u32 CH, u8 uData)
Funkcia Operácia zápisu bajtov modulu UART (TX)
Vstup CH UART kanál
uData Údaje, ktoré sa majú zapísať
Výstup ÚSPECH Úspešný
CHYBA Nepodarilo sa
Použitie UARTM_WriteByte(UARTM_CH0, 'A'); //UART zapíše 1 bajt – 'A'
Meno u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funkcia Operácia zápisu modulu UART (TX)
 Vstup CH UART kanál
pBuffer Ukazovateľ vyrovnávacej pamäte
uDĺžka Dĺžka údajov, ktoré sa majú zapísať
Výstup ÚSPECH Úspešný
CHYBA Nepodarilo sa
 Použitie u8 Test[] = “Toto je test!\r\n”; UARTM_Write(UARTM_CH0, Test, veľkosť(Test) -1); //UART zapisuje dáta pBuffer
Meno u32 UARTM_ReadByte(u32 CH, u8 *pData)
Funkcia Operácia čítania bajtov modulu UART (RX)
Vstup CH UART kanál
pData Adresa na umiestnenie načítaných údajov
Výstup ÚSPECH Úspešný
CHYBA Zlyhalo (žiadne údaje)
   Použitie u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == ÚSPECH){UARTM_WriteByte(UARTM_CH0, TempData);}//Ak UARTM_ReadByte() vráti ÚSPECH, potom UART zapíše tento dátový bajt
Meno u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funkcia Operácia čítania modulu UART (RX)
 Vstup CH UART kanál
pBuffer Ukazovateľ vyrovnávacej pamäte
uDĺžka Dĺžka údajov, ktoré sa majú prečítať
Výstup Čítaný počet Dĺžka údajov bola načítaná
     Použitie u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() prečíta 5 bajtov dát a uloží dáta do Test2 a priradí počet prečítaných bajtov do Len//Zapíšte údaje získané z Test2
Meno u32 UARTM_GetReadBufferLength(u32 CH)
Funkcia Získajte dĺžku vyrovnávacej pamäte na čítanie (RX)
Vstup CH UART kanál
Výstup uDĺžka Čítať dĺžku vyrovnávacej pamäte
  Použitie UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicializácia modulu UART while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Počkajte, kým UARTM_ReadBuffer neprijme 5 bajtov údajov
Meno u32 UARTM_GetWriteBufferLength(u32 CH)
Funkcia Získajte dĺžku vyrovnávacej pamäte pre zápis (TX)
Vstup CH UART kanál
Výstup uDĺžka Dĺžka vyrovnávacej pamäte zápisu
Meno u8 UARTM_IsTxFinished(u32 CH)
Funkcia Získajte stav TX
Vstup CH UART kanál
Výstup PRAVDA Stav TX: dokončený
FALSE Stav TX: nedokončené
      Použitie UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Toto API je možné použiť na kontrolu stavu TX, ako je uvedené vyššie; počkajte, kým sa neukončí UARTM_WriteByte() API, tj stav TX je TRUE, a potom pokračujte v nasledujúcich akciách.//Je pridané obmedzenie, pretože táto funkcia nebola pridaná, kým číslo verzie SVN v uart_module.c nebude 525.
Meno neplatné UARTM_DiscardReadBuffer(u32 CH)
Funkcia Vyhoďte údaje z vyrovnávacej pamäte na čítanie
Vstup CH UART kanál

Použitie API napramples 

Táto časť bude demonštrovať zápis a čítanie API naprampsúbory kódu aplikácie „Module_UART“ pomocou procesu inicializácie a „UART_Module_Ex“ample“ proces kódu aplikácie. Pred použitím rozhraní API musia používatelia zahrnúť hlavičku rozhrania API file do hlavného zdrojového kódu programu file (#include “middleware/uart_module.h”).

Ako je znázornené na obrázku 14, pri vstupe do procesu inicializácie najskôr definujte štruktúru základnej konfigurácie UART. Potom nakonfigurujte prvky základnej konfigurácie UART vrátane BaudRate, WordLength, StopBits, Parity a Mode. Nakoniec zavolajte funkciu inicializácie API, ktorej dokončenie indikuje koniec procesu inicializácie. Potom môžu používatelia pokračovať v operáciách zápisu a čítania na základe prednastavenej základnej konfigurácie UART.

Obrázok 14. Inicializačný vývojový diagram
Vývojový diagram inicializácie

Modul „UART_Module_Example” kód aplikácie demonštruje operácie čítania a zápisu API spôsobom spätnej slučky. Vývojový diagram je znázornený na obrázku 15. Použité funkcie API zahŕňajú UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() a UARTM_GetReadBufferLength(). Ich popis je uvedený v časti „Popis rozhrania API“.

Obrázok 15. Vývojový diagram zápisu a čítania Príkladamples
Vývojový diagram zápisu a čítania Príkladamples

V priečinku „Module_UART“ je ďalší kód aplikácie „UART_Bridge“, s ktorým súvisí file popis je uvedený v časti „Štruktúra adresára“. Aplikačný kód „UART_Bridge“ aktivuje dva kanály UART, UART CH0 a UART CH1, a potom prispôsobuje komunikačný protokol medzi dvoma zariadeniami UART prostredníctvom štruktúr COMMAND, gCMD1 a gCMD2. Tieto sú definované v uart_bridge.c, ako je uvedené nižšie. UARTBridge_CMD1TypeDef gCMD1:

Variabilné Meno Typ Popis
uHeader u8 Hlavička
uCmd u8 Príkaz
uData[3] u8 Údaje

UARTBridge_CMD2TypeDef gCMD2:

Variabilné Meno Typ Popis
uHeader u8 Hlavička
uCmdA u8 Príkaz A
uCmdB u8 Príkaz B
uData[3] u8 Údaje

V kóde aplikácie „UART_Bridge“ použite gCMD1 na príjem údajov ako príkazový paket a potom ich analyzujte. Potom podľa prispôsobeného komunikačného protokolu nastavte gCMD2 ako paket odpovede a odošlite ho. Nasleduje example príkazového paketu gCMD1) a paketu odpovede (gCMD2). Balík príkazov (UARTBridge_CMD1TypeDef gCMD1):

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

Paket odpovede (UARTBridge_CMD2TypeDef gCMD2):

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

Povolanie zdrojov
Ak vezmeme HT32F52352 ako example, zdroje obsadené modulom UART sú zobrazené nižšie.

HT32F52352
Veľkosť ROM 946 bajt
Veľkosť RAM 40*1 + 256*2 bajtov

Poznámka:

  1. Globálne premenné vrátane príznakov a stavu pre jeden kanál zaberajú 40 bajtov RAM.
  2.  Toto platí pre stav, keď sa používa jeden kanál a veľkosť vyrovnávacej pamäte TX/RX je 128/128 bajtov. Veľkosť vyrovnávacej pamäte je možné nastaviť podľa požiadaviek aplikácie.

Tabuľka 4. Obsadenie prostriedkov kódu aplikácie 

  • Prostredie kompilácie: MDK-Arm V5.36, ARMCC V5.06 aktualizácia 7 (zostava 960)
  • Možnosť optimalizácie: Úroveň 2 (-O2)

Návod na použitie

Táto kapitola predstaví environmentálnu prípravu kódu aplikácie „Module_UART“, ako aj kroky kompilácie a testovania.

Environmentálna príprava
Hardvér a softvér potrebný pre kód aplikácie „Module_UART“ sú uvedené nižšie.
Tabuľka 5. Hardvérová/softvérová príprava prostredia 

Hardvér/Softvér počítať Poznámka
Štartovacia súprava 1 Táto aplikačná poznámka používa HT32F52352 Starter Kit ako example
USB kábel 1 Micro USB, pripojený k PC
Kód aplikácie Cesta na stiahnutie, file a konfigurácia adresára sú uvedené v časti „Stiahnutie a príprava zdrojov“. Cesta: „\\application\Module_UART\UART_Module_Example ”
Tera Term Pozrite si časť „Terminálový softvér“.
Keil IDE Keil uVision V5.xx

Najprv použite HT32F52352 Starter Kit v kombinácii s funkciou virtuálneho COM portu (VCP) e-Link32 Lite na predstavenie aplikácie UART. To si vyžaduje vykonanie nasledujúcej environmentálnej prípravy:

  1. Na doske sú dve USB rozhrania. Pomocou kábla USB pripojte počítač a rozhranie eLink32 Lite na doske, ako je znázornené na obrázku 16-(a).
  2. Keďže kód aplikácie musí používať funkciu virtuálneho COM portu (VCP) e-Link32 Lite, uistite sa, že PAx*2 a DAP_Tx UART Jumper-J2*1 boli skratované pomocou prepojky. Umiestnenie J2 je znázornené na obrázku 16-(b).

Poznámka

  1. J2 na Starter Kit má dve možnosti, PAx a DAP_Tx skratované alebo PAx a RS232_Tx skratované. Podrobné informácie o funkciách nastavenia nájdete v používateľskej príručke Starter Kit.
  2. Umiestnenie kolíkov MCU UART RX na rôznych štartovacích súpravách je odlišné. Tento example používa PAx na označenie RX pinu.

Obrázok 16. Bloková schéma štartovacej súpravy HT32
Bloková schéma súpravy

Teraz použite cieľovú dosku používateľa kombinovanú s funkciou virtuálneho COM portu (VCP) e-Link32 Pro na predstavenie aplikácie UART. To si vyžaduje vykonanie nasledujúcej environmentálnej prípravy:

  1. Jedna strana e-Link32 Pro je pripojená k počítaču pomocou kábla Mini USB a druhá strana je pripojená k cieľovej doske používateľa pomocou 10-bitového šedého kábla. Spojenie medzi rozhraniami SWD kábla a cieľovej dosky je realizované pomocou liniek Dupont, ako je znázornené na obrázku 17-(a).
  2. Sériové komunikačné kolíky e-Link32 Pro sú Pin#7 VCOM_RXD a Pin#8- VCOM_TXD. Tie by mali byť pripojené ku kolíkom TX a RX užívateľskej cieľovej dosky, ako je znázornené na obrázku 17-(b).
    Obrázok 17. Bloková schéma cieľovej dosky e-Link32 Pro + používateľa
    Cieľová tabuľa používateľa

Kompilácia a test
Táto sekcia prevezme „application\Module_UART\UART_Module_Example“ ako example predstaviť proces kompilácie a testovania. Predtým sa uistite, že boli vykonané všetky prípravy opísané v predchádzajúcej časti a že bol stiahnutý softvér terminálu Tera Term.

Podrobné prevádzkové kroky sú zhrnuté nižšie.
Krok 1. Test zapnutia

Nastavte hardvérové ​​prostredie podľa popisu v predchádzajúcej časti. Po zapnutí sa rozsvieti LED dióda napájania D9 v ľavej dolnej časti štartovacej súpravy. LED D1 USB na e-Link32 Lite vpravo hore sa rozsvieti po dokončení výpočtu USB. Ak sa D1 po dlhšom čase nerozsvieti, skontrolujte, či je USB kábel schopný komunikovať. Ak nie, vyberte ho a znova ho vložte.

Krok 2. Vytvorte projekt
Otvorte aplikáciu\Module_UART\UART_Module_Example, kliknite na súbor _CreateProject.bat file na vygenerovanie projektu, ako je znázornené na obrázku 18. Keďže táto aplikačná poznámka používa HT32F52352 Starter Kit, otvorte projekt Keil IDE „Project_52352.uvprojx“, ktorý sa nachádza v priečinku MDK_ARMv5.

Obrázok 18. Spustite _CreateProject.bat na vygenerovanie projektu
Generovať projekt

Krok 3. Kompilácia a programovanie
Po otvorení projektu kliknite najskôr na „Vytvoriť“ (alebo použite skratku „F7“), potom kliknite na „Stiahnuť“ (alebo použite skratku „F8“). Potom sa výsledky zostavenia a sťahovania zobrazia v okne Výstup zostavy. Pozri obrázok 19.

Obrázok 19. Výsledky zostavovania a sťahovania
Výsledky zostavovania a sťahovania

Krok 4. Otvorte softvér Tera Term a nakonfigurujte sériový port
Otvorte softvér Tera Term a port COM. Venujte pozornosť tomu, či je číslo portu COM vygenerované súpravou Starter Kit správne alebo nie. Potom kliknite na „Setup >> Serial Port“ pre vstup do konfiguračného rozhrania. Konfigurácia rozhrania UART kódu aplikácie „Module_UART“ je popísaná v časti „Terminálový softvér“. Výsledok nastavenia je znázornený na obrázku 20.

Obrázok 20. Výsledok nastavenia sériového portu Tera Term
Výsledok nastavenia
Krok 5. Resetujte systém a otestujte
Stlačte tlačidlo SK reset – B1 Reset. Potom nasleduje „ABCThis is test!“ správa bude
prenášané cez API a zobrazí sa v okne Tera Term, ako je znázornené na obrázku 21. Pokiaľ ide o funkciu príjmu, pri zadávaní údajov do okna Tera Term sa na určenie dĺžky prijímacej vyrovnávacej pamäte použije príslušné API. Keď dáta prijaté PC dosiahnu 5 bajtov, prijatých 5 bajtov dát sa odošle postupne. Ako je znázornené na obrázku 22, postupne zadané údaje sú „1, 2, 3, 4, 5“, ktoré sa prijímajú a určujú prostredníctvom rozhrania API. Potom sa po piatich zadaniach vytlačia údaje „1, 2, 3, 4, 5“.

Obrázok 21. Funkčný test aplikačného kódu „Module_UART“ – prenos
Funkčný test aplikačného kódu

Obrázok 22. Funkčný test aplikačného kódu „Module_UART“ – Príjem
Funkčný test aplikačného kódu

Pokyny na transplantáciu
Táto časť predstaví, ako integrovať rozhrania API do projektov používateľa.
Krok 1 Pridajte súbor uart_module.c file do projektu. Kliknite pravým tlačidlom myši na priečinok Používateľ. Vyberte „Pridať existujúce Files na Group 'User'…“, potom vyberte súbor uart_module.c file a kliknite na „Pridať“, ako je znázornené na obrázku 23. Pozrite si časť „Štruktúra adresára“, kde nájdete file popis cesty.

Obrázok 23. Pridajte súbor uart_module.c File do projektu
File do projektu

Krok 2. Pridajte súbor ring_buffer.c file do projektu. Kliknite pravým tlačidlom myši na priečinok Používateľ. Vyberte „Pridať existujúce Files na Group 'User'...“, potom vyberte ring_buffer.c file a kliknite na „Pridať“, ako je znázornené na obrázku 24.\ Pozrite si časť „Štruktúra adresára“, kde nájdete file popis cesty.
Obrázok 24. Pridajte ring_buffer.c File do projektu 
File do projektu

Krok 3. Zahrňte hlavičku API file na začiatok main.c, ako je znázornené na obrázku 25. (Ext: #include “middleware/uart_module.h”)
Obrázok 25. Zahrnúť hlavičku API File do hlavného.c
Zahrnúť hlavičku API File

Krok 4. Nastavenia potrebné pre komunikáciu UART implementujte pomocou súboru ht32_board_config.h file. Toto je podrobne uvedené v častiach „Popis nastavenia“ a „Úprava nastavenia a často kladené otázky“.

Úprava nastavení a často kladené otázky 

Táto časť predstaví spôsob úpravy nastavení UART a vysvetlí niektoré bežné otázky, ktoré sa vyskytujú počas používania.

Zmeňte priradenie pinov UART 

  1. Podľa údajového listu HT32F52352 „Priradenie pinov“ vyhľadajte tabuľku mapovania alternatívnych funkcií, v ktorej sú uvedené funkcie AFIO pre daný typ zariadenia. Pre príslušné kolíky UART si pozrite stĺpec „AF6 USART/UART“, ako je znázornené na obrázku 26.
    Obrázok 26. Tabuľka mapovania alternatívnych funkcií HT32F52352
    Alternatívna tabuľka mapovania funkcií
  2. Tento krok povedie používateľov k nájdeniu zodpovedajúcich pinov UART pomocou vyššie uvedenej tabuľky. HT32F52352 example používa USART1 ako predvolený kanál. Tu sú kolíky TX a RX USR1_TX a USR1_RX a sú umiestnené na PA4 a PA5. Obrázok 27 zobrazuje korešpondenciu pinov, ako aj definície pinov v „ht32_board_config.h“. Prázdne polia „Package“ v tabuľke priradenia pinov znamenajú, že v tomto balíku nie sú žiadne relevantné GPIO. Ak chcete upraviť piny UART, nájdite cieľové umiestnenie pinov a predefinujte piny pomocou „ht32_board_config.h“ file.
    Obrázok 27. Korešpondencia pinov a úprava nastavenia
    Úprava nastavenia

Pridajte kanál UART
Ak vezmeme HT32F52352 HTCFG_UARTM_CH1 ako príkladample, tu je popísané, ako pridať nový kanál UART.

Upravte súbor ht32_board_config.h file
Podľa údajového listu HT32F52352 „Priradenie pinov“ vyhľadajte tabuľku mapovania alternatívnych funkcií, v ktorej sú uvedené funkcie AFIO pre daný typ zariadenia. Keďže USART1 bol použitý ako HTCFG_UARTM_CH0, novo pridané HTCFG_UARTM_CH1 si môže vybrať USART0. Tu sú kolíky TX a RX umiestnené na PA2 a PA3, ako je znázornené v hornej polovici obrázku 28. Zodpovedajúce úpravy sú implementované pomocou kódových riadkov 120~126 v ht32_board_config.h, ako je znázornené červeným bodkovaným rámčekom na obrázku 28.

Obrázok 28. Pridajte kanál UART
Kanál UART

často kladené otázky
Q: V kroku 5 časti Kompilácia a test je test funkčnosti prenosu normálny. Tu je „ABCThis is test!“ správa sa úspešne zobrazila, ale prečo sa pri funkcii príjmu nevráti a nezobrazuje päť vstupných hodnôt?
A: Skontrolujte, či piny MCU UART RX a DAP_Tx UART Jumper-J2 neboli skratované pomocou prepojky. Keďže kód aplikácie „Module_UART“ musí používať virtuálny COM port (VCP) e-Link32 Lite, nastavenie skratu by sa malo aplikovať na ľavé dva kolíky UART Jumper-J2, ako je znázornené na obrázku 29.

Obrázok 29. Nastavenie UART Jumper-J2
UART Jumper

Otázka: Potom po spustení „Build“ (alebo skratky „F7“) sa zobrazí chybové hlásenie, že verzia knižnice firmvéru je staršia ako požadovaná verzia? Pozri obrázok 30.
A: Implementácia aplikačného kódu „Module_UART“ musí zahŕňať uart_module.c/h files, ktorý má požiadavku na určitú verziu knižnice firmvéru. Keď sa zobrazí takéto chybové hlásenie, znamená to, že aktuálne používaná knižnica firmvéru je staršia verzia. Preto je potrebné stiahnuť si najnovšiu verziu cez odkaz uvedený v časti „Firmware Library“.

Obrázok 30. Chybové hlásenie verzie knižnice firmvéru
Chybové hlásenie verzie

Záver

Tento dokument poskytuje základný úvod, ktorý používateľom pomôže lepšie porozumieť aplikačnému kódu „Module_UART“ a komunikačnému protokolu UART. Nasledovalo stiahnutie a príprava zdrojov. Kapitola Popis funkcií predstavila file adresárová štruktúra, architektúra API, popis API a využitie API napramples. Kapitola Návod na použitie demonštrovala environmentálnu prípravu, zostavenie a testovanie aplikačného kódu „Module_UART“. Poskytol tiež pokyny na nastavenie transplantácie a úpravy kódu, ako aj vysvetlenie niektorých bežných problémov, s ktorými sa možno stretnúť. Toto všetko spolu umožní používateľom rýchlo pochopiť, ako používať rozhrania API, a následne skrátiť čas potrebný na začatie.

Referenčný materiál

Ďalšie informácie nájdete v dokumente Holtek webstránka: www.holtek.com

Verzie a informácie o úpravách

Dátum Autor Uvoľnite Informácie o úprave
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Prvá verzia

Vylúčenie zodpovednosti

Všetky informácie, ochranné známky, logá, grafika, videá, zvukové klipy, odkazy a ďalšie položky, ktoré sa tu objavujú webstránky (ďalej len „informácie“) sú len orientačné a môžu sa kedykoľvek zmeniť bez predchádzajúceho upozornenia a podľa uváženia spoločnosti Holtek Semiconductor Inc. a jej pridružených spoločností (ďalej len „Holtek“, „spoločnosť“, „nás“, „ my“ alebo „naše“). Zatiaľ čo Holtek sa snaží zabezpečiť presnosť informácií o tomto webSpoločnosť Holtek neposkytuje žiadnu výslovnú ani implicitnú záruku na presnosť informácií. Holtek nenesie žiadnu zodpovednosť za akúkoľvek nesprávnosť alebo únik.
Holtek nezodpovedá za žiadne škody (vrátane, ale nie výlučne, počítačového vírusu, systémových problémov alebo straty dát), bez ohľadu na to, ktoré vzniknú pri používaní alebo v súvislosti s používaním tohto webstránky ktorejkoľvek strany. V tejto oblasti môžu byť odkazy, ktoré vám umožňujú navštíviť stránku webstránky iných spoločností.
Tieto webstránky nie sú kontrolované spoločnosťou Holtek. Holtek nenesie žiadnu zodpovednosť a žiadnu záruku za akékoľvek informácie zobrazené na takýchto stránkach. Hypertextové odkazy na iné webstránky sú na vlastné riziko.

Obmedzenie zodpovednosti

Holtek Limited v žiadnom prípade nezodpovedá žiadnej inej strane za akúkoľvek stratu alebo škodu spôsobenú priamo alebo nepriamo v súvislosti s vaším prístupom alebo používaním tohto webstránku, jej obsah alebo akýkoľvek tovar, materiály alebo služby.

Rozhodujúce právo
Vyhlásenie uvedené v webstránky sa riadia a interpretujú v súlade so zákonmi Čínskej republiky. Používatelia budú podliehať nevýhradnej jurisdikcii súdov Čínskej republiky.

Aktualizácia Vylúčenia zodpovednosti
Holtek si vyhradzuje právo aktualizovať Vyhlásenie kedykoľvek s predchádzajúcim upozornením alebo bez neho, všetky zmeny sú účinné okamžite po zverejnení na webstránky.

Dokumenty / zdroje

Aplikačná poznámka HOLTEK HT32 MCU UART [pdfPoužívateľská príručka
HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note

Referencie

Zanechajte komentár

Vaša emailová adresa nebude zverejnená. Povinné polia sú označené *