HOLTEK HT32 MCU UART Priručnik za primjenu
Uvod
Univerzalni asinhroni prijemnik/predajnik – UART je široko korišteni serijski prijenosni interfejs koji pruža fleksibilan asinhroni full-duplex prijenos podataka. Aplikacioni kod “Module_UART” koji se nalazi u ovoj napomeni o aplikaciji koristi TX/RX prekide sa softverskim prstenastim baferima za implementaciju jednostavnih UART funkcija prijenosa/prijema putem API-ja, čije su povezane funkcije opisane u nastavku. Ovo će pojednostaviti cijeli proces prijenosa podataka i omogućiti korisnicima da brzo razumiju i implementiraju UART komunikacijske aplikacije.
- Funkcije prijenosa/prijema: čitanje bajtova, pisanje bajtova, čitanje bafera, pisanje bafera itd.
- Statusne funkcije: dobijanje dužine bafera, TX statusa, itd.
Ovaj dokument će prvo predstaviti UART komunikacijski protokol, koji će pomoći korisnicima da bolje razumiju UART komunikaciju od principa do aplikacije. Nakon toga slijedi preuzimanje i priprema resursa potrebnih za kod aplikacije, uključujući biblioteku firmvera, preuzimanje koda aplikacije, file i konfiguraciju direktorija, kao i uvod u terminalski softverski alat koji se koristi u bilješci o aplikaciji. U poglavlju Funkcionalni opis bit će predstavljena struktura direktorija koda aplikacije, postavke parametara i opis API-ja. Upotreba API-ja će biti opisana korištenjem koda aplikacije “Module_UART”, a također će biti navedena i potrošnja Flash/RAM resursa potrebna za API-je. Poglavlje Uputstva za upotrebu vodit će korisnika kroz korake pripreme okoliša, kompilacije i testiranja kako bi se potvrdilo da će kod aplikacije ispravno raditi. Zatim će dati upute koje objašnjavaju kako integrirati API-je u korisničke projekte i konačno dati referencu za modifikacije i uobičajene probleme na koje se može naići.
Korištene skraćenice:
- UART: Univerzalni asinhroni prijemnik/predajnik
- API: Programski interfejs aplikacije
- LSB: Najmanje značajan bit
- MSB: Najznačajniji bit
- PC: Personal Computer
- SK: Početni komplet, razvojna ploča HT32
- IDE: Integrirano razvojno okruženje
UART komunikacijski protokol
UART je serijski komunikacijski tip sučelja koji implementira paralelnu u serijsku konverziju podataka na svom odašiljaču, a zatim serijski komunicira sa sličnim prijemnikom. Prijemnik zatim izvodi serijsko-paralelnu konverziju podataka nakon prijema podataka. Slika 1 prikazuje šematski dijagram serijske komunikacije koji pokazuje kako se podaci prenose po bitovima. Stoga su za dvosmjernu komunikaciju između odašiljača i prijemnika potrebne samo dvije žice, TX i RX, za serijski prijenos podataka između sebe. TX je pin na koji UART prenosi serijske podatke i povezan je na RX pin prijemnika. Stoga uređaji odašiljača i prijemnika moraju unakrsno povezati svoje TX i RX pinove kako bi izvršili UART dvosmjernu komunikaciju, kao što je prikazano na Slika 2.
Slika 1. Dijagram serijske komunikacije
Slika 2. UART dijagram kola
Tokom UART serijske komunikacije, prijenos podataka je asinhroni. To znači da između predajnika i prijemnika nema sata ili drugog signala za sinhronizaciju. Ovdje se koristi brzina prijenosa podataka, koja predstavlja brzinu prijenosa/prijema serijskih podataka i koju postavljaju obje strane prije prijenosa podataka. Osim toga, posebni bitovi kao što su startni i stop bitovi se dodaju na početak i kraj paketa podataka kako bi se formirao kompletan UART paket podataka. Slika 3 prikazuje strukturu UART paketa podataka dok slika 4 prikazuje UART 8-bitni paket podataka bez bita parnosti.
Slika 3. Struktura UART paketa podataka
Slika 4. UART 8-bitni format paketa podataka
Svaki dio UART paketa podataka predstavljen je u nastavku.
- Početni bit: Ovo označava početak paketa podataka. UART TX pin obično ostaje na visokom logičkom nivou prije početka prijenosa. Ako prijenos podataka započne, UART predajnik će povući TX pin sa visokog na nisko, tj. od 1 do 0, a zatim ga zadržati tamo jedan ciklus takta. UART prijemnik će početi čitati podatke kada se na RX pinu detektuje prelaz sa visokog na niski nivo.
- Podaci: Ovo su stvarni preneseni podaci, sa dužinom podataka od 7, 8 ili 9 bita. Podaci se obično prvo prenose pomoću LSB-a.
- Bit parnosti: Broj logičke “1” u podacima se koristi za određivanje da li su se neki podaci promijenili tokom prijenosa. Za paran paritet, ukupan broj logičke “1” u podacima treba da bude paran broj, i obrnuto, ukupan broj logičke “1” u podacima treba da bude neparan broj za neparni paritet.
- Stop Bit: Ovo ukazuje na kraj paketa podataka, gde će UART predajnik povući TX pin sa niske na visoku, tj. od 0 do 1, a zatim će ga zadržati tamo tokom 1 ili 2-bitnog vremenskog perioda.
Kao što je već spomenuto, budući da nema taktnog signala u UART kolu, ista brzina prijenosa/prijema serijskih podataka, koja je poznata kao brzina prijenosa, mora biti definirana između predajnika i prijemnika kako bi se implementirao prijenos bez grešaka. Brzina prijenosa je definirana brojem bitova koji se prenose u sekundi, u bps (bit u sekundi). Neke standardne i najčešće korištene brzine prijenosa su 4800bps, 9600bps, 19200bps, 115200bps, itd. Odgovarajuće vrijeme potrebno za prijenos jednog bita podataka je prikazano ispod.
Tabela 1. Brzina prijenosa u odnosu na 1-bitno vrijeme prijenosa
Baud Rate | 1-bitni prijenos Vrijeme |
4800bps | 208.33µs |
9600bps | 104.16µs |
19200bps | 52.08µs |
115200bps | 8.68µs |
Preuzimanje i priprema resursa
Ovo poglavlje će predstaviti kod aplikacije i softverski alat koji se koristi, kao i kako konfigurirati direktorij i file put.
Biblioteka firmvera
Prvo, uvjerite se da je biblioteka firmvera Holtek HT32 preuzeta prije korištenja koda aplikacije. Link za preuzimanje je prikazan ispod. Ovdje postoje dvije opcije, HT32_M0p_Vyyyymmdd.zip za seriju HT32F5xxxx i HT32_M3_Vyyyymmdd.zip za seriju HT32F1xxxx. Preuzmite i raspakujte željeno file.
Zip file sadrži nekoliko mapa koje se mogu klasificirati kao Dokument, Biblioteka firmvera, Alati i druge stavke, čija je putanja postavljanja prikazana na slici 5. Zip biblioteka firmvera HT32 file sa a file naziv HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip nalazi se u folderu Firmware_Library.
Slika 5. HT32_M0p_Vyyyymmdd.zip Sadržaj
Kod aplikacije
Preuzmite kod aplikacije sa sljedećeg linka. Kod aplikacije je upakovan u zip file sa a file naziv HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Vidi Slika 6 za file konvencije imena.
Slika 6. Kod aplikacije File Naziv Uvod
Link za preuzimanje: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File i Konfiguracija direktorija
Kako kod aplikacije ne sadrži biblioteku firmvera HT32 files, programski kod i biblioteka firmvera su raspakovani files treba postaviti na ispravnu putanju prije početka kompilacije. Poštanski broj aplikacije file obično sadrži jednu ili više mapa, kao što su aplikacija i biblioteka, kao što je prikazano na slici 7. Postavite mapu aplikacije ispod korijenskog direktorija biblioteke firmvera HT32 kako biste dovršili file konfiguraciju staze, kao što je prikazano na slici 8. Alternativno, istovremeno raspakirajte kod aplikacije i biblioteku firmvera HT32 na istu stazu da biste postigli iste rezultate konfiguracije.
Slika 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Sadržaj
Slika 8. Putanja dekompresije
Terminalni softver
Aplikacijski kod može prenositi poruke kroz COM port za implementaciju odabira funkcije ili prikaza statusa. Ovo zahtijeva od strane domaćina da unaprijed instalira softver terminala. Korisnici mogu odabrati odgovarajući softver za povezivanje ili koristiti besplatni licencirani softver kao što je Tera Term. U kodu aplikacije, UART kanal je konfigurisan sa dužinom reči od 8 bita, bez parnosti, 1 stop bit i brzinom prenosa od 115200bps.
Funkcionalni opis
Ovo poglavlje će pružiti funkcionalni opis koda aplikacije, uključujući informacije o strukturi direktorija, API arhitekturi, opisu postavki itd.
Struktura imenika
Kod aplikacije file sadrži folder aplikacije. Sljedeći sloj je mapa “Module_UART” koja sadrži dva aplikativna programa, “UART_Module_Example” i “UART_Bridge”. Relevantno filesu navedene i opisane u nastavku.
Tabela 2. Struktura direktorija koda aplikacije
Folder / File Ime | Opis |
\\application\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Batch skripte za kreiranje projekta files |
_ProjectSource.ini | Inicijalizacija file za dodavanje izvornog koda projektima |
ht32_board_config.h | Setup file vezano za dodjelu IC perifernih I/O |
ht32fxxxxx_01_it.c | Prekinite servisni program file |
main.c | Izvorni kod glavnog programa |
\\application\Module_UART\UART_Bridge*2 | |
_CreateProject.bat | Batch skripte za kreiranje projekta files |
_ProjectSource.ini | Inicijalizacija file za dodavanje izvornog koda projektima |
ht32_board_config.h | Setup file vezano za dodjelu IC perifernih I/O |
ht32fxxxxx_01_it.c | Prekinite servisni program file |
main.c | Izvorni kod glavnog programa |
uart_bridge.h uart_bridge.c | UART bridge header file i izvorni kod file |
\\utilities\middleware | |
uart_module.h*3 uart_module.c*3 | API zaglavlje file i izvorni kod file |
\\utilities\common | |
ringbuffer.h ring_buffer.c | Zaglavlje softverskog prstenastog bafera file i izvorni kod file |
Napomena:
- U „UART_Module_Example” kod aplikacije, operacije čitanja i pisanja API-ja se izvode na način povratne petlje, pogledajte “API Usage Examples” odjeljak za više detalja.
- U kodu aplikacije “UART_Bridge”, dva UART kanala, UART CH0 i UART CH1, su aktivirana, a prilagođeni komunikacioni protokol kroz COMMAND strukture implementiran je između dva UART uređaja. Za više informacija pogledajte “Upotreba API-ja, pramples”.
- Kod aplikacije treba koristiti uart_module.c/h files koji imaju zahtjev za verziju biblioteke firmvera. Zahtjev se može promijeniti s vremena na vrijeme u skladu s ažuriranjem. Da biste potvrdili zahtjev za trenutnu verziju biblioteke firmvera, pogledajte sadržaj provjere ovisnosti tražeći ključnu riječ "Provjera ovisnosti" u glavnom.c file. Ako verzija biblioteke firmvera ne ispunjava uslove, preuzmite najnoviju verziju sa veze u odeljku „Biblioteka firmvera“.
API arhitektura
Svaki API ima važan parametar CH, a to je UART kanal. Ovo određuje koji UART kanal treba kontrolisati. Trenutno su podržana do četiri UART kanala i stoga su četiri konstantna simbola definirana kako slijedi. Oni se koriste kao parametar CH dajući API-jima osnovu za kontrolu.
- UARTM_CH0: ulazni parametar – kontrola ili konfiguracija UART CH0
- UARTM_CH1: ulazni parametar – kontrola ili konfiguracija UART CH1
- UARTM_CH2: ulazni parametar – kontrola ili konfiguracija UART CH2
- UARTM_CH3: ulazni parametar – kontrola ili konfiguracija UART CH3
Memorijski prostor se neće gubiti ako se koristi samo jedan UART kanal. To je zato što se broj podržanih UART kanala može podesiti i neiskorišteni kod UART kanala će biti uklonjen od strane preprocesora kako bi se povećao raspoloživi memorijski prostor. API arhitektura je prikazana u Slika 9.
Slika 9. Blok dijagram arhitekture API-ja
Svaki API se sastoji od četiri grupe postavki ili kontrola povezanih s UART kanalom, tako da korisnici trebaju samo unijeti željeni CH parametar. Za konfiguriranje relevantnog API-ja potrebno je samo imati dodatnu tablicu osnovnih konfiguracijskih parametara UART-a sa strukturnim oblikom USART_InitTypeDef. API će implementirati osnovnu konfiguraciju UART-a prema sadržaju parametara u tabeli. Pogledajte odjeljak “API opis” za tablicu strukture osnovne konfiguracije UART-a.
Uart_module.c/.h filesa sadrže samo prekid (CHx_IRQ) i tabelu statusa (CHx Status) svakog UART kanala dok su sve postavke potrebne za UART komunikaciju obezbeđene od ht32_board_config.h. Hardverski relevantni parametri u ht32_board_config.h file prikazani su u tabeli ispod. Više detalja je dato u odjeljku “Opis postavki”.
Hardverski relevantni parametri u ht32_board_config.h uključuju I/O postavke i postavke fizičkog UART porta, kako slijedi.
Tabela 3. Simboli definicije u ht32_board_config.h
Simbol | Opis |
HTCFG_UARTM_CH0 | Ime fizičkog UART porta; Prample: UART0, UART1… |
HTCFG_UARTM0_TX_GPIO_PORT | Definira naziv porta TX za CH0; Prample: A, B, C… |
HTCFG_UARTM0_TX_GPIO_PIN | Definira pin broj TX za CH0; Prample: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Definira naziv porta za RX za CH0; Prample: A, B, C… |
HTCFG_UARTM0_RX_GPIO_PIN | Definira pin broj TX za CH0; Prample: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Definira veličinu TX bafera za CH0; Prample: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Definira veličinu RX bafera za CH0; Prample: 128 |
Da biste izmijenili AFIO konfiguraciju UART kanala, pogledajte odgovarajuću tablicu podataka uređaja. Trenutno samo I/O definicije za UART CH0 stupaju na snagu jer je samo UART CH0 konfigurisan u ht32_board_config.h. Da biste dodali UART CH1~3, njihove I/O definicije moraju biti dovršene upućivanjem na UART CH0 definiciju ili pozivanjem na odjeljak “Izmjena postavki i najčešća pitanja”.
Postoje tri glavne karakteristike API arhitekture:
- Podržana su do četiri UART kanala. Njihovi ulazni parametri su UARTM_CH0, UARTM_CH1, UARTM_CH2 i UARTM_CH3.
- Broj UART kanala se može podesiti i neiskorišteni kanali neće smanjiti raspoloživi memorijski prostor.
- Sve UART postavke i I/O definicije su potpuno odvojene od API-ja. Ovo povećava pogodnost upravljanja podešavanjem vrijednosti i smanjuje mogućnost neispravnih ili nedostajućih postavki.
Opis postavki
Ovaj odjeljak će predstaviti postavke parametara u ht32_board_config.h i uart_module.h files.
- ht32_board_config.h: Ovo file koristi se za definicije pinova i relevantne postavke razvojne ploče, koje uključuju UART IP kanal (UART0, UART1, USART0...) koji koristi Starter Kit (SK), odgovarajuće lokacije TX/RX pinova i veličinu TX/RX bafera. Slika 10 prikazuje sadržaj postavki HT32F52352 Starter Kit. Ovisno o funkcionalnoj integraciji razvoja, korisnici mogu pogledati odjeljak “Pin Assignment” u tablici podataka korištenog uređaja kako bi implementirali definicije pinova. Više detalja o izmjeni postavki bit će opisano u odjeljku “Izmjena postavki i najčešća pitanja”.
Slika 10. Postavke ht32_board_config.h (HT32F52352)
- uart_module.h: Ovo je API zaglavlje file koristi kod aplikacije, koji uključuje relevantne zadane postavke, definicije funkcija, itd. Kao što je prikazano na slici 11, sadržaj zadanih postavki može biti prepisan vanjskim konfiguracijama, kao što su postavke u ht32_board_config.h file.
Slika 11. Zadane postavke u uart_module.h
API opis
- Opis tipa podataka koda aplikacije.
- USART_InitTypeDef
Ovo je UART osnovna konfiguraciona struktura koja se sastoji od BaudRate, WordLength, StopBits, Parity i Mode konfiguracija, kao što je prikazano u nastavku.Varijabilna Ime Tip Opis USART_BaudRate u32 UART komunikacijska brzina prijenosa USART_Dužina riječi u16 Dužina UART komunikacijske riječi: 7, 8 ili 9 bita USART_StopBits u16 Dužina zaustavnog bita UART komunikacije: 1 ili 2 bita USART_Parity u16 UART komunikacijski paritet: paran, neparan, oznaka, razmak ili bez pariteta USART_Mode u16 UART način komunikacije; API-ji podržavaju samo normalan način rada
- USART_InitTypeDef
- Prije korištenja API funkcija, dovršite osnovnu konfiguraciju UART-a u glavnom programu. Osnovna konfiguracija UART-a za ovaj kod aplikacije je prikazana na slici 12. Ovdje je brzina prijenosa 115200bps, dužina riječi je 8-bitna, dužina stop bita je 1-bit, i nema pariteta.
Slika 12. Osnovna konfiguracija UART-a
- Slika 13 prikazuje API funkcije deklarirane u uart_module.h file. Sljedeće tablice objašnjavaju funkciju, ulazne parametre i upotrebu API funkcija.
Slika 13. Deklaracije API funkcija u uart_module.h
Ime | void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Funkcija | Inicijalizacija UART modula | |
Input | CH | UART kanal |
pUART_Init | UART pokazivač osnovne konfiguracijske strukture | |
uRxTimeOutValue | Vrijednost isteka UART RX FIFO. Kada RX FIFO primi nove podatke, brojač će se resetovati i ponovo pokrenuti. Jednom kada brojač dostigne unaprijed postavljenu vrijednost time-outa i odgovarajući prekid time-outa je omogućen, bit će generiran time-out prekid. | |
Upotreba | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Izvrši UART osnovnu konfiguraciju//Pogledajte sliku 12 za konfiguraciju USART_InitStructure |
Ime | u32 UARTM_WriteByte(u32 CH, u8 uData) | |
Funkcija | UART modul za pisanje bajtova (TX) | |
Input | CH | UART kanal |
uData | Podaci za pisanje | |
Izlaz | USPJEH | Uspješno |
GREŠKA | Nije uspjelo | |
Upotreba | UARTM_WriteByte(UARTM_CH0, 'A'); //UART upisuje 1 bajt – 'A' |
Ime | u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength) | |
Funkcija | Operacija pisanja UART modula (TX) | |
Input | CH | UART kanal |
pBuffer | Pokazivač bafera | |
uLength | Dužina podataka koje treba napisati | |
Izlaz | USPJEH | Uspješno |
GREŠKA | Nije uspjelo | |
Upotreba | u8 Test[] = “Ovo je test!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART upisuje pBuffer podatke |
Ime | u32 UARTM_ReadByte(u32 CH, u8 *pData) | |
Funkcija | Operacija čitanja bajtova UART modula (RX) | |
Input | CH | UART kanal |
pData | Adresa za postavljanje očitanih podataka | |
Izlaz | USPJEH | Uspješno |
GREŠKA | Nije uspjelo (nema podataka) | |
Upotreba | u8 TempData; ako (UARTM_ReadByte(UARTM_CH0, &TempData) == USPEH){UARTM_WriteByte(UARTM_CH0, TempData);}//Ako UARTM_ReadByte() vrati USPJEH onda UART upisuje ovaj bajt podataka |
Ime | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength) | |
Funkcija | Operacija čitanja UART modula (RX) | |
Input | CH | UART kanal |
pBuffer | Pokazivač bafera | |
uLength | Dužina podataka za čitanje | |
Izlaz | Broj čitanja | Pročitana je dužina podataka |
Upotreba | u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() čita 5 bajtova podataka i pohranjuje podatke u Test2, i dodjeljuje broj pročitanih bajtova u Len//Napišite podatke iz Test2 |
Ime | u32 UARTM_GetReadBufferLength(u32 CH) | |
Funkcija | Dobijte dužinu bafera za čitanje (RX) | |
Input | CH | UART kanal |
Izlaz | uLength | Čitanje dužine bafera |
Upotreba | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicijalizacija UART modula dok (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Pričekajte dok UARTM_ReadBuffer ne primi 5 bajtova podataka |
Ime | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Funkcija | Dobijte dužinu međuspremnika za pisanje (TX) | |
Input | CH | UART kanal |
Izlaz | uLength | Upišite dužinu bafera |
Ime | u8 UARTM_IsTxFinished(u32 CH) | |
Funkcija | Dobijte TX status | |
Input | CH | UART kanal |
Izlaz | TRUE | TX status: završeno |
FALSE | TX status: nije završen | |
Upotreba | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 potrebnowhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Ovaj API se može koristiti za provjeru TX statusa, kao što je prikazano gore; sačekajte dok se API UARTM_WriteByte() ne završi, tj., TX status je TRUE, a zatim nastavite sa sljedećim radnjama.//Dodano je ograničenje jer ova funkcija nije dodana sve dok broj verzije SVN u uart_module.c nije 525. |
Ime | void UARTM_DiscardReadBuffer(u32 CH) | |
Funkcija | Odbacite podatke u međuspremniku za čitanje | |
Input | CH | UART kanal |
Upotreba API-ja npramples
Ovaj odjeljak će pokazati API pisanje i čitanje nprampdatoteke "Module_UART" koda aplikacije koristeći proces inicijalizacije i "UART_Module_Example” proces koda aplikacije. Prije upotrebe API-ja, korisnici moraju uključiti API zaglavlje file u glavni izvorni kod programa file (#include “middleware/uart_module.h”).
Kao što je prikazano na slici 14, kada ulazite u proces inicijalizacije, prvo definirajte UART osnovnu konfiguracijsku strukturu. Zatim konfigurirajte članove osnovne konfiguracijske strukture UART-a uključujući brzinu prijenosa, dužinu riječi, stop-bitove, paritet i način rada. Konačno, pozovite funkciju inicijalizacije API-ja, čiji završetak označava kraj procesa inicijalizacije. Nakon toga korisnici mogu nastaviti sa operacijama pisanja i čitanja na osnovu unaprijed postavljene osnovne konfiguracije UART-a.
Slika 14. Dijagram toka inicijalizacije
„UART_Module_Example” aplikacijski kod demonstrira API operacije čitanja i pisanja na način povratne petlje. Dijagram toka za ovo je prikazan na slici 15. Korištene API funkcije uključuju UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() i UARTM_GetReadBufferLength(). Njihov opis je dat u odjeljku “API opis”.
Slika 15. Dijagram toka za pisanje i čitanje pramples
Postoji još jedan kod aplikacije “UART_Bridge” u folderu “Module_UART” čija je veza file opis je uveden u odjeljku “Struktura direktorija”. Aplikacioni kod “UART_Bridge” aktivira dva UART kanala, UART CH0 i UART CH1, a zatim prilagođava komunikacijski protokol između dva UART uređaja kroz COMMAND strukture, gCMD1 i gCMD2. Oni su definirani u uart_bridge.c, kao što je prikazano ispod. UARTBridge_CMD1TypeDef gCMD1:
Varijabilna Ime | Tip | Opis |
uHeader | u8 | Zaglavlje |
uCmd | u8 | Command |
uData[3] | u8 | Podaci |
UARTBridge_CMD2TypeDef gCMD2:
Varijabilna Ime | Tip | Opis |
uHeader | u8 | Zaglavlje |
uCmdA | u8 | Komanda A |
uCmdB | u8 | Komanda B |
uData[3] | u8 | Podaci |
U kodu aplikacije “UART_Bridge” koristite gCMD1 da primite podatke kao paket komandi, a zatim ih analizirajte. Zatim, prema prilagođenom komunikacijskom protokolu, postavite gCMD2 kao paket odgovora i pošaljite ga. Slijedi bivšiample komandnog paketa gCMD1) i paketa odgovora (gCMD2). Komandni paket (UARTBridge_CMD1TypeDef gCMD1):
Bajt 0 | Bajt 1 | Bajt 2 ~ Bajt 4 |
uHeader | uCmd | uData [3] |
“A” | “1” | “x, y, z” |
Paket odgovora (UARTBridge_CMD2TypeDef gCMD2):
Bajt 0 | Bajt 1 | Bajt 2 | Bajt 3 ~ Bajt 5 |
uHeader | uCmdA | uCmdB | uData [3] |
“B” | “a” | “1” | “x, y, z” |
Resource Occupation
Uzimajući HT32F52352 kao exampResursi koje zauzima UART modul su prikazani ispod.
HT32F52352 | |
Veličina ROM-a | 946 bajta |
Veličina RAM-a | 40*1 + 256*2 Bytes |
Napomena:
- Globalne varijable uključujući zastavice i status za jedan kanal zauzimaju 40 bajtova RAM-a.
- Ovo je za stanje u kojem se koristi jedan kanal, a veličina TX/RX bafera je 128/128 bajtova. Veličina bafera se može podesiti prema zahtjevima aplikacije.
Tabela 4. Zauzimanje resursa koda aplikacije
- Okruženje za kompilaciju: MDK-Arm V5.36, ARMCC V5.06 ažuriranje 7 (izgradnja 960)
- Optimizacija opcija: Nivo 2 (-O2)
Uputstvo za upotrebu
Ovo poglavlje će uvesti pripremu okoline za kod aplikacije “Module_UART”, kao i korake kompilacije i testiranja.
Priprema okoline
Hardver i softver potreban za kod aplikacije “Module_UART” navedeni su u nastavku.
Tabela 5. Priprema okoline hardvera/softvera
Hardver/Softver | Count | Napomena |
Starter Kit | 1 | Ova napomena o aplikaciji koristi početni komplet HT32F52352 kao nprample |
USB kabel | 1 | Micro USB, spojen na PC |
Kod aplikacije | — | Putanja za preuzimanje, file i konfiguracija direktorija su predstavljeni u odjeljku “Preuzimanje i priprema resursa”. Putanja: “\\application\Module_UART\UART_Module_Example ” |
Tera Term | — | Pogledajte odeljak “Terminalni softver”. |
Keil IDE | — | Keil uVision V5.xx |
Prvo, koristite HT32F52352 Starter Kit u kombinaciji sa funkcijom virtuelnog COM porta (VCP) e-Link32 Lite za uvod u UART aplikaciju. Za to je potrebno provesti sljedeću pripremu okoliša:
- Na ploči se nalaze dva USB interfejsa. Koristite USB kabl za povezivanje računara i eLink32 Lite interfejsa na ploči kao što je prikazano na slici 16-(a).
- Kako kod aplikacije treba da koristi funkciju virtuelnog COM porta (VCP) e-Link32 Lite, osigurajte da su PAx*2 i DAP_Tx UART Jumper-J2*1 kratko spojeni pomoću kratkospojnika. Lokacija J2 je prikazana na slici 16-(b).
Napomena
- J2 na početnom kompletu ima dvije opcije, PAx i DAP_Tx kratko ili PAx i RS232_Tx kratko. Pogledajte korisnički priručnik Starter Kit za detaljne funkcije podešavanja.
- Lokacija pinova MCU UART RX na različitim početnim kompletima je različita. Ovaj example koristi PAx da označi RX pin.
Slika 16. Blok dijagram startnog kompleta HT32
Sada koristite ciljnu ploču korisnika u kombinaciji sa funkcijom virtuelnog COM porta (VCP) e-Link32 Pro za uvod u UART aplikaciju. Za to je potrebno provesti sljedeću pripremu okoliša:
- Jedna strana e-Link32 Pro je povezana sa računarom pomoću Mini USB kabla, a druga strana je povezana sa ciljnom pločom korisnika preko svog 10-bitnog sivog kabla. Veza između SWD interfejsa kabla i ciljne ploče je realizovana korišćenjem Dupont linija, kao što je prikazano na slici 17-(a).
- Pinovi serijske komunikacije e-Link32 Pro su Pin#7 VCOM_RXD i Pin#8- VCOM_TXD. Oni bi trebali biti povezani na TX i RX pinove ciljne ploče korisnika, kao što je prikazano na slici 17-(b).
Slika 17. Blok dijagram ciljne ploče e-Link32 Pro + korisnika
Kompilacija i testiranje
Ovaj odjeljak će uzeti “application\Module_UART\UART_Module_Example” kao bivšiampda uvedemo procese kompilacije i testiranja. Prije toga, uvjerite se da su sve pripreme opisane u prethodnom odjeljku provedene i da je softver terminala Tera Term preuzet.
Detaljni koraci rada su sažeti u nastavku.
Korak 1. Test po uključenju
Postavite hardversko okruženje kao što je opisano u prethodnom odeljku. Nakon uključivanja, LED dioda za napajanje D9 u donjem lijevom dijelu Starter Kit će svijetliti. D1 USB LED na e-Link32 Lite u gornjem desnom uglu će se upaliti nakon što se završi USB nabrajanje. Ako D1 ne svijetli nakon dužeg vremenskog perioda, provjerite da li USB kabel može komunicirati. Ako nije, onda ga uklonite i ponovo umetnite.
Korak 2. Generirajte projekat
Otvorite aplikaciju\Module_UART\UART_Module_Exampu folderu, kliknite na _CreateProject.bat file da generišete projekat, kao što je prikazano na slici 18. Pošto ova napomena o aplikaciji koristi početni komplet HT32F52352, otvorite Keil IDE projekat “Project_52352.uvprojx” koji se nalazi ispod fascikle MDK_ARMv5.
Slika 18. Izvršite _CreateProject.bat za generiranje projekta
Korak 3. Kompajlirajte i programirajte
Nakon što je projekat otvoren, prvo kliknite na “Build” (ili koristite prečicu “F7”), a zatim kliknite na “Download” (ili koristite prečicu “F8”). Nakon toga, rezultati izgradnje i preuzimanja će biti prikazani u prozoru Build Output. Vidi sliku 19.
Slika 19. Rezultati izgradnje i preuzimanja
Korak 4. Otvorite softver Tera Term i konfigurišite serijski port
Otvorite softver Tera Term i COM port. Obratite pažnju da li je broj COM porta koji je generisao Starter Kit tačan ili ne. Zatim kliknite na “Setup >> Serial Port” da uđete u konfiguracijski interfejs. Konfiguracija UART interfejsa koda aplikacije “Module_UART” opisana je u odeljku “Terminalni softver”. Rezultat podešavanja prikazan je na slici 20.
Slika 20. Rezultat podešavanja serijskog porta Tera Term
Korak 5. Resetujte sistem i testirajte
Pritisnite taster SK reset – B1 Reset. Nakon toga, "ABC Ovo je test!" poruka će biti
prenosi se kroz API i biće prikazan u prozoru Tera Term, kao što je prikazano na slici 21. Što se tiče funkcije prijema, prilikom unosa podataka u prozor Tera Term, relevantni API će se koristiti za određivanje dužine bafera za prijem. Kada podaci primljeni od strane PC-a dostignu 5 bajtova, primljenih 5 bajtova podataka će se poslati uzastopno. Kao što je prikazano na slici 22, podaci koji se sekvencijalno unose su “1, 2, 3, 4, 5”, koji se primaju i određuju preko API-ja. Nakon toga, podaci “1, 2, 3, 4, 5” će biti odštampani nakon pet unosa.
Slika 21. Funkcionalni test koda aplikacije “Module_UART” – Prijenos
Slika 22. Funkcionalni test koda aplikacije “Module_UART” – Prijem
Uputstva za transplantaciju
Ovaj odjeljak će predstaviti kako integrirati API-je u korisničke projekte.
Korak 1. Dodajte uart_module.c file u projekat. Kliknite desnim tasterom miša na folder User. Odaberite „Dodaj postojeće Files u Grupu 'Korisnik'…”, zatim odaberite uart_module.c file i kliknite na “Dodaj”, kao što je prikazano na slici 23. Pogledajte odjeljak “Struktura direktorija” za file opis putanje.
Slika 23. Dodajte uart_module.c File to Project
Korak 2. Dodajte ring_buffer.c file u projekat. Kliknite desnim tasterom miša na folder User. Odaberite „Dodaj postojeće Files u Grupu 'Korisnik'…”, zatim odaberite ring_buffer.c file i kliknite na “Dodaj”, kao što je prikazano na slici 24.\ Pogledajte odjeljak “Struktura direktorija” za file opis putanje.
Slika 24. Dodajte ring_buffer.c File to Project
Korak 3. Uključite API zaglavlje file na početak main.c, kao što je prikazano na slici 25. (Ext: #include “middleware/uart_module.h”)
Slika 25. Uključi API zaglavlje File to main.c
Korak 4. Implementirajte postavke potrebne za UART komunikaciju koristeći ht32_board_config.h file. Ovo je detaljno predstavljeno u odjeljcima “Opis postavki” i “Izmjena postavki i najčešća pitanja”.
Izmjena postavki i najčešća pitanja
Ovaj odeljak će predstaviti način na koji modifikujete UART postavke i objasniće neka uobičajena pitanja na koja se susreću tokom upotrebe.
Promjena UART Pin Assignment
- Pozivajući se na poglavlje HT32F52352 Datasheet “Dodjela pinova”, potražite tabelu mapiranja alternativnih funkcija koja navodi AFIO funkcije tipa uređaja. Za UART relevantne pinove, pogledajte kolonu “AF6 USART/UART”, kao što je prikazano na slici 26.
Slika 26. Tablica mapiranja alternativnih funkcija HT32F52352
- Ovaj korak će voditi korisnike da lociraju odgovarajuće UART pinove koristeći gornju tabelu. HT32F52352 example koristi USART1 kao podrazumevani kanal. Ovdje su pinovi TX i RX USR1_TX i USR1_RX i nalaze se na PA4 i PA5 respektivno. Slika 27 prikazuje korespondenciju pinova kao i definicije pinova u “ht32_board_config.h”. Prazna polja „Paket“ u tabeli dodele pinova znače da u ovom paketu nema relevantnih GPIO-ova. Da biste modificirali UART pinove, pronađite ciljne lokacije pinova i ponovo definirajte pinove koristeći “ht32_board_config.h” file.
Slika 27. Korespondencija pinova i modifikacija postavki
Dodajte UART kanal
Uzimajući HT32F52352 HTCFG_UARTM_CH1 kao prample, ovdje je opisano kako dodati novi UART kanal.
Izmijenite ht32_board_config.h file
Pozivajući se na poglavlje HT32F52352 Datasheet “Dodjela pinova”, potražite tabelu mapiranja alternativnih funkcija koja navodi AFIO funkcije tipa uređaja. Kako je USART1 korišten kao HTCFG_UARTM_CH0, novododani HTCFG_UARTM_CH1 može odabrati USART0. Ovdje se pinovi TX i RX nalaze na PA2 i PA3 respektivno, kao što je prikazano u gornjoj polovini slike 28. Odgovarajuće modifikacije su implementirane korištenjem kodnih linija 120~126 u ht32_board_config.h, kao što je prikazano crvenim tačkastim okvirom na slici 28.
Slika 28. Dodajte UART kanal
FAQs
Q: U koraku 5 odjeljka Kompilacija i testiranje, funkcionalni test prijenosa je normalan. Evo, "ABC Ovo je test!" poruka je uspješno prikazana, međutim za funkciju primanja, zašto pet ulaznih vrijednosti nije vraćeno i prikazano?
A: Provjerite da li su pinovi MCU UART RX i DAP_Tx UART Jumper-J2 kratko spojeni pomoću kratkospojnika. Kako kod aplikacije “Module_UART” treba da koristi virtuelni COM port (VCP) e-Link32 Lite, postavku kratkog spoja treba primeniti na dva leva pina UART Jumper-J2, kao što je prikazano na slici 29.
Slika 29. Postavka UART Jumper-J2
P: Nakon izvršavanjem “Build” (ili prečice “F7”), pojavljuje se poruka o grešci koja ukazuje da je verzija biblioteke firmvera starija od one koja je potrebna? Vidi sliku 30.
A: Implementacija koda aplikacije “Module_UART” mora uključivati uart_module.c/h files koji ima zahtjev za određenu verziju biblioteke firmvera. Kada se pojavi takva poruka o grešci, to znači da je biblioteka firmvera koja se trenutno koristi starija verzija. Stoga je potrebno preuzeti najnoviju verziju putem veze u odjeljku „Biblioteka firmvera“.
Slika 30. Poruka o grešci verzije biblioteke firmvera
Zaključak
Ovaj dokument je pružio osnovni uvod kako bi pomogao korisnicima da bolje razumiju kod aplikacije “Module_UART” i UART komunikacijski protokol. Nakon toga uslijedilo je preuzimanje i priprema resursa. Poglavlje Funkcionalni opis uvelo je file strukturu direktorija, API arhitekturu, opis API-ja i korištenje API-ja npramples. Poglavlje Uputstva za upotrebu demonstriralo je pripremu okoline, kompilaciju i testiranje koda aplikacije “Module_UART”. Također je pružio upute za transplantaciju koda i podešavanje modifikacije, kao i objašnjenje nekih uobičajenih problema na koje se može naići. Sve ovo u kombinaciji omogućit će korisnicima da brzo shvate kako koristiti API-je i naknadno smanjiti količinu vremena za početak.
Referentni materijal
Za više informacija pogledajte Holtek webstranica: www.holtek.com
Informacije o verzijama i modifikacijama
Datum | Autor | Pusti | Informacije o modifikacijama |
2022.04.30 | 蔡期育 (Chi-Yu Tsai) | V1.00 | Prva verzija |
Odricanje od odgovornosti
Sve informacije, zaštitni znakovi, logotipi, grafike, video zapisi, audio isječci, linkovi i druge stavke koje se pojavljuju na ovom webstranica ('Informacije') su samo za referencu i podložne su promjenama u bilo koje vrijeme bez prethodne najave i prema diskreciji Holtek Semiconductor Inc. i s njim povezanih kompanija (u daljem tekstu: "Holtek", "kompanija", "nas", " mi" ili "naši"). Dok Holtek nastoji da osigura tačnost informacija o tome websajtu, Holtek ne daje izričitu ili impliciranu garanciju za tačnost informacija. Holtek neće snositi odgovornost za bilo kakvu neispravnost ili curenje.
Holtek neće biti odgovoran za bilo kakvu štetu (uključujući, ali ne ograničavajući se na kompjuterske viruse, sistemske probleme ili gubitak podataka) bilo kakvu nastalu korištenjem ili u vezi s korištenjem ovog websajt od strane bilo koje strane. Možda postoje veze u ovoj oblasti koje vam omogućavaju da posetite websajtovima drugih kompanija.
Ove webstranice nisu pod kontrolom Holteka. Holtek neće snositi nikakvu odgovornost niti garanciju za bilo koju informaciju prikazanu na takvim stranicama. Hiperlinkovi na druge webstranice su na vlastitu odgovornost.
Ograničenje odgovornosti
Holtek Limited ni u kom slučaju neće biti odgovoran bilo kojoj drugoj strani za bilo kakav gubitak ili štetu na bilo koji način ili na bilo koji način uzrokovan direktno ili indirektno u vezi s vašim pristupom ili korištenjem ovog webstranice, sadržaj na njoj ili bilo koju robu, materijal ili uslugu.
Merodavno pravo
Odricanje od odgovornosti sadržano u websajt će se upravljati i tumačiti u skladu sa zakonima Republike Kine. Korisnici će biti podvrgnuti neisključivoj nadležnosti sudova Republike Kine.
Ažuriranje izjave o odricanju odgovornosti
Holtek zadržava pravo ažuriranja Odricanja odgovornosti u bilo koje vrijeme sa ili bez prethodne najave, sve promjene stupaju na snagu odmah nakon objavljivanja na website.
Dokumenti / Resursi
![]() |
Napomena o primjeni HOLTEK HT32 MCU UART [pdf] Korisnički priručnik HT32 MCU, UART Napomena o aplikaciji, HT32 MCU UART, Napomena o aplikaciji, HT32, MCU UART Napomena o aplikaciji, HT32 MCU UART Napomena o aplikaciji |