Používateľská príručka k aplikácii 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
Obrázok 2. 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
Obrázok 4. 8-bitový formát dátového paketu UART
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
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/
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
Obrázok 8. 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:
- 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í.
- 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“.
- 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
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:
- Podporované sú až štyri kanály UART. Ich vstupné parametre sú UARTM_CH0, UARTM_CH1, UARTM_CH2 a UARTM_CH3.
- Je možné nastaviť počet kanálov UART a nepoužívané kanály neznížia dostupné miesto v pamäti.
- 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.
- 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)
- 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
Popis API
- 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
- USART_InitTypeDef
- 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
- 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
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
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 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:
- Globálne premenné vrátane príznakov a stavu pre jeden kanál zaberajú 40 bajtov RAM.
- 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:
- 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).
- 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
- 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.
- 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
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:
- 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).
- 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
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
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
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
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
Obrázok 22. Funkčný test aplikačného kódu „Module_UART“ – Príjem
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
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
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
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
- 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
- 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
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
č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
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
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 |