Napomena o aplikaciji HOLTEK HT32 MCU UART Korisnički priručnik
Napomena o aplikaciji HOLTEK HT32 MCU UART

Uvod

Univerzalni asinkroni prijemnik/odašiljač – UART široko je korišteno sučelje za serijski prijenos koje pruža fleksibilan asinkroni full-duplex prijenos podataka. Aplikacijski kod "Module_UART" naveden u ovoj bilješci o aplikaciji koristi TX/RX prekide sa softverskim međuspremnicima prstena 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 brzo razumijevanje i implementaciju UART komunikacijskih aplikacija.

  • Funkcije prijenosa/prijema: čitanje bajta, pisanje bajta, čitanje međuspremnika, pisanje međuspremnika itd.
  • Funkcije statusa: dobijte duljinu međuspremnika, status TX, itd.

Ovaj dokument će prvo predstaviti UART komunikacijski protokol, koji će pomoći korisnicima da bolje razumiju UART komunikaciju od načela do primjene. Nakon toga slijedi preuzimanje i priprema resursa potrebnih za aplikacijski kod, uključujući biblioteku firmvera, preuzimanje aplikacijskog koda, file i konfiguracija imenika kao i uvod u softverski alat terminala 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 bit će opisana pomoću koda aplikacije "Module_UART", a također će biti navedena potrošnja Flash/RAM resursa potrebna za API-je. Poglavlje s uputama za uporabu vodit će korisnika kroz korake pripreme okoliša, kompilacije i testiranja kako bi se potvrdilo da će aplikacijski kod ispravno raditi. Zatim će pružiti upute koje objašnjavaju kako integrirati API-je u korisničke projekte i konačno dati referencu za izmjene i uobičajene probleme na koje se može naići.

Korištene kratice: 

  • UART: Univerzalni asinkroni prijemnik/odašiljač
  • API: Programsko sučelje aplikacije
  • LSB: Najmanje značajan bit
  • MSB: Najznačajniji bit
  • PC: Osobno računalo
  • SK: Starter Kit, HT32 razvojna ploča
  • IDE: Integrirano razvojno okruženje

UART komunikacijski protokol

UART je serijski komunikacijski tip sučelja koji implementira paralelno-serijsku konverziju podataka na svom odašiljaču i zatim serijski komunicira sa sličnim prijamnikom. Prijemnik zatim izvodi serijsku u paralelnu konverziju podataka nakon prijema podataka. Slika 1 prikazuje shematski dijagram serijske komunikacije koji pokazuje kako se podaci prenose u bitovnom redoslijedu. Stoga su za dvosmjernu komunikaciju između odašiljača i prijamnika potrebne samo dvije žice, TX i RX, za međusobni serijski prijenos podataka. TX je pin na kojem UART prenosi serijske podatke i spojen je na RX pin prijemnika. Stoga uređaji odašiljača i prijamnika trebaju međusobno spojiti svoje TX i RX pinove za izvođenje UART dvosmjerne komunikacije, kao što je prikazano u Lik 2.

Slika 1. Dijagram serijske komunikacije
Dijagram serijske komunikacije

Slika 2. Dijagram strujnog kruga UART-a
UART dijagram strujnog kruga

Tijekom UART serijske komunikacije, prijenos podataka je asinkroni. To znači da nema sata ili drugog signala sinkronizacije između odašiljača i prijamnika. Ovdje se koristi brzina prijenosa podataka, što je brzina prijenosa/prijema serijskih podataka i koju postavljaju obje strane prije prijenosa podataka. Osim toga, posebni bitovi kao što su početni i završni bitovi dodaju se na početak i kraj podatkovnog paketa kako bi se formirao potpuni 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
UART struktura paketa podataka

Slika 4. UART 8-bitni format paketa podataka
Format paketa podataka
Svaki dio UART podatkovnog paketa predstavljen je redom u nastavku.

  • Početni bit: Ovo označava početak podatkovnog paketa. UART TX pin obično ostaje na visokoj logičkoj razini prije početka prijenosa. Ako prijenos podataka započne, UART odašiljač će povući TX pin s visokog na niski, tj. s 1 na 0, i zatim ga tamo zadržati jedan ciklus takta. UART prijemnik će početi čitati podatke kada se na RX pinu otkrije prijelaz s visokog na niski.
  • Podaci: Ovo su stvarni preneseni podaci, s duljinom podataka od 7, 8 ili 9 bita. Podaci se obično prvo prenose s LSB-om.
  • Bit pariteta: Broj logičke "1" u podacima koristi se za određivanje jesu li se podaci promijenili tijekom prijenosa. Za parni paritet, ukupni broj logičkih "1" u podacima trebao bi biti paran broj, obrnuto, ukupni broj logičkih "1" u podacima trebao bi biti neparan broj za neparni paritet.
  • Stop bit: Ovo označava kraj podatkovnog paketa, gdje će UART odašiljač povući TX pin s niskog na visoki, tj. s 0 na 1, a zatim ga tamo zadržati 1 ili 2-bitno vremensko razdoblje.

Kao što je prije spomenuto, budući da u UART krugu nema signala takta, ista brzina prijenosa/prijema serijskih podataka, koja je poznata kao brzina prijenosa podataka, mora biti definirana između odašiljača i prijamnika kako bi se implementirao prijenos bez grešaka. Brzina prijenosa definirana je brojem bitova prenesenih u sekundi, u bps (bit po sekundi). Neke standardne i uobičajeno korištene brzine prijenosa su 4800bps, 9600bps, 19200bps, 115200bps, itd. Odgovarajuće vrijeme potrebno za prijenos jednog bita podataka prikazano je u nastavku.
Tablica 1. Brzina prijenosa podataka u odnosu na 1-bitno vrijeme prijenosa 

Brzina prijenosa podataka 1-bitni prijenos Vrijeme
4800 bps 208.33 µs
9600 bps 104.16 µs
19200 bps 52.08 µs
115200 bps 8.68 µs

Preuzimanje i priprema izvora

Ovo poglavlje će predstaviti aplikacijski kod i korišteni softverski alat, kao i kako konfigurirati imenik i file put.

Knjižnica firmvera 

Prvo provjerite je li biblioteka Holtek HT32 firmvera preuzeta prije korištenja koda aplikacije. Link za preuzimanje prikazan je u nastavku. Ovdje postoje dvije opcije, HT32_M0p_Vyyyymmdd.zip za seriju HT32F5xxxx i HT32_M3_Vyyyymmdd.zip za seriju HT32F1xxxx. Preuzmite i raspakirajte željeni file.

Zip file sadrži nekoliko mapa koje se mogu klasificirati kao Dokument, Biblioteka firmvera, Alati i druge stavke, čiji je put postavljanja prikazan na slici 5. Zip knjižnice firmvera HT32 file s a file naziv HT32_STD_xxxxxx_FWLib_Vm.n.r_s.zip nalazi se u mapi Firmware_Library.

Slika 5. HT32_M0p_Vyyyymmdd.zip Sadržaj
Sadržaj

Aplikacijski kod
Preuzmite kod aplikacije sa sljedeće poveznice. Kod aplikacije zapakiran je u zip file s a file naziv HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Vidjeti Slika 6 za file konvencije imena.

Slika 6. Aplikacijski kod File Ime Uvod 

Link za preuzimanje: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Aplikacijski kod

File i konfiguracija imenika
Budući da kod aplikacije ne sadrži biblioteku firmvera HT32 files, kod aplikacije i biblioteka firmvera 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 je aplikacija i biblioteka, kao što je prikazano na slici 7. Postavite mapu aplikacije u korijenski direktorij biblioteke firmvera HT32 da dovršite file konfiguraciju staze, kao što je prikazano na slici 8. Alternativno, raspakirajte aplikacijski kod i biblioteku firmvera HT32 istovremeno u istu stazu kako biste postigli iste rezultate konfiguracije.

Slika 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Sadržaj
Sadržaj

Slika 8. Put dekompresije
Put dekompresije

Terminalni softver
Aplikacijski kod može prenositi poruke preko COM porta za provedbu odabira funkcije ili prikaza statusa. Ovo zahtijeva da strana domaćina ima unaprijed instaliran softver terminala. Korisnici mogu odabrati odgovarajući softver za povezivanje ili koristiti besplatni licencirani softver kao što je Tera Term. U aplikacijskom kodu, UART kanal je konfiguriran s duljinom riječi od 8 bita, bez pariteta, 1 stop bit i brzinom prijenosa od 115200 bps.

Funkcionalni opis

Ovo poglavlje pružit će funkcionalni opis koda aplikacije, uključujući informacije o strukturi direktorija, API arhitekturi, opisu postavki itd.

Struktura imenika
Kod aplikacije file sadrži mapu aplikacije. Sljedeći sloj je mapa “Module_UART” koja sadrži dva aplikacijska programa, “UART_Module_Example” i “UART_Bridge”. Relevantno filesu navedeni i opisani u nastavku.
Tablica 2. Struktura direktorija aplikacijskog koda

Mapa / File Ime Opis
\\aplikacija\Modul_UART\UART_Modul_Example*1
_CreateProject.bat Skupne skripte za izradu projekta files
_ProjectSource.ini Inicijalizacija file za dodavanje izvornog koda projektima
ht32_board_config.h Postavljanje file vezano uz dodjelu I/O periferije IC
ht32fxxxxxx_01_it.c Servisni program prekida file
glavni.c Izvorni kod glavnog programa
\\aplikacija\Modul_UART\UART_Bridge*2
_CreateProject.bat Skupne skripte za izradu projekta files
_ProjectSource.ini Inicijalizacija file za dodavanje izvornog koda projektima
ht32_board_config.h Postavljanje file vezano uz dodjelu I/O periferije IC
ht32fxxxxxx_01_it.c Servisni program prekida file
glavni.c Izvorni kod glavnog programa
uart_bridge.h uart_bridge.c UART zaglavlje mosta file i izvorni kod file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 API zaglavlje file i izvorni kod file
\\komunalije\zajedničke
ringbuffer.h ring_buffer.c Zaglavlje softverskog prstena međuspremnika file i izvorni kod file

Bilješka: 

  1. U "UART_Module_Example” aplikacijski kod, operacije čitanja i pisanja API-ja izvode se povratnom petljom, pogledajte “Upotreba API-ja Examples” za više detalja.
  2.  U aplikacijskom kodu “UART_Bridge” aktivirana su dva UART kanala, UART CH0 i UART CH1, a između dva UART uređaja implementiran je prilagođeni komunikacijski protokol kroz COMMAND strukture. Za više informacija, pogledajte “API usage Examples” odjeljak.
  3. Aplikacijski kod treba koristiti uart_module.c/h filekoji imaju zahtjev za verzijom biblioteke firmvera. Zahtjev se može promijeniti s vremena na vrijeme u skladu s ažuriranjem. Kako biste potvrdili zahtjev za trenutnom verzijom biblioteke firmvera, pogledajte sadržaj provjere ovisnosti traženjem ključne riječi "Provjera ovisnosti" u main.c file. Ako verzija biblioteke firmvera ne ispunjava zahtjeve, preuzmite najnoviju verziju s poveznice navedene u odjeljku "Biblioteka firmvera".

API arhitektura
Svaki API ima važan parametar CH, koji je UART kanal. Ovo određuje koji UART kanal treba kontrolirati. Trenutno su podržana do četiri UART kanala i stoga su četiri konstantna simbola definirana kako slijedi. Oni se koriste kao parametar CH koji API-jima predstavlja osnovu za kontrolu.

  • UARTM_CH0: ulazni parametar – kontrolirajte ili konfigurirajte UART CH0
  • UARTM_CH1: ulazni parametar – kontrolirajte ili konfigurirajte UART CH1
  • UARTM_CH2: ulazni parametar – kontrolirajte ili konfigurirajte UART CH2
  • UARTM_CH3: ulazni parametar – kontrolirajte ili konfigurirajte UART CH3

Memorijski prostor neće biti izgubljen ako se koristi samo jedan UART kanal. To je zato što se broj podržanih UART kanala može postaviti, a neiskorišteni kod UART kanala će biti uklonjen od strane predprocesora kako bi se povećao raspoloživi memorijski prostor. API arhitektura je prikazana u Slika 9.

Slika 9. Blok dijagram API arhitekture
Blok dijagram arhitekture

Svaki API sastoji se od četiri grupe postavki ili kontrola povezanih s UART kanalom tako da korisnici trebaju samo unijeti željeni CH parametar. Za konfiguraciju relevantnog API-ja potrebno je samo imati dodatnu tablicu osnovnih konfiguracijskih parametara UART-a sa strukturnim obrascem, USART_InitTypeDef. API će implementirati osnovnu konfiguraciju UART-a prema sadržaju parametara u tablici. Pogledajte odjeljak "Opis API-ja" za strukturnu tablicu osnovne konfiguracije UART-a.

Modul uart_module.c/.h filesadrže samo prekid (CHx_IRQ) ​​i statusnu tablicu (CHx Status) svakog UART kanala dok sve postavke potrebne za UART komunikaciju pruža ht32_board_config.h. Relevantni parametri hardvera u ht32_board_config.h file prikazani su u donjoj tablici. Više pojedinosti navedeno je u odjeljku "Opis postavke".

Hardverski relevantni parametri u ht32_board_config.h uključuju I/O postavke i fizičke postavke UART priključka, kako slijedi.

Tablica 3. Simboli definicija u ht32_board_config.h

Simbol Opis
HTCFG_UARTM_CH0 Ime fizičkog UART priključka; nprample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Definira naziv porta TX za CH0; nprample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Definira broj pina TX za CH0; nprample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Definira naziv porta RX za CH0; nprample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Definira broj pina TX za CH0; nprample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Definira veličinu TX međuspremnika za CH0; nprampod: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Definira veličinu RX međuspremnika za CH0; nprampod: 128

Za izmjenu AFIO konfiguracije UART kanala pogledajte podatkovnu tablicu odgovarajućeg uređaja. Trenutno samo I/O definicije za UART CH0 stupaju na snagu jer je samo UART CH0 konfiguriran u ht32_board_config.h. Za dodavanje UART CH1~3, njihove I/O definicije moraju biti dovršene prema definiciji UART CH0 ili prema odjeljku "Izmjena postavki i često postavljana pitanja".

Postoje tri glavne značajke API arhitekture: 

  1. Podržana su do četiri UART kanala. Njihovi ulazni parametri su UARTM_CH0, UARTM_CH1, UARTM_CH2 i UARTM_CH3.
  2.  Broj UART kanala može se postaviti, a neiskorišteni kanali neće smanjiti raspoloživi memorijski prostor.
  3. Sve UART postavke i I/O definicije potpuno su odvojene od API-ja. Ovo povećava praktičnost upravljanja vrijednostima postavki i smanjuje mogućnost netočnih postavki ili postavki koje nedostaju.

Opis postavke 

Ovaj odjeljak će predstaviti postavke parametara u ht32_board_config.h i uart_module.h files.

  1. 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 pinova TX/RX i veličinu međuspremnika TX/RX. Slika 10 prikazuje sadržaj postavki HT32F52352 Starter Kit-a. Ovisno o funkcionalnoj integraciji razvoja, korisnici mogu pogledati odjeljak "Pin Assignment" podatkovne tablice korištenog uređaja za implementaciju definicija pinova. Više pojedinosti o izmjenama postavki bit će opisano u odjeljku "Izmjene postavki i često postavljana pitanja".
    Slika 10. Postavke ht32_board_config.h (HT32F52352)
    postavke
  2. uart_module.h: Ovo je API zaglavlje file koristi kod aplikacije, što uključuje relevantne zadane postavke, definicije funkcija itd. Kao što je prikazano na slici 11, sadržaj zadane postavke može se prebrisati vanjskim konfiguracijama, kao što su postavke u ht32_board_config.h file.
    Slika 11. Zadane postavke u uart_module.h
    Zadane postavke
Opis API-ja
  1. Opis tipa podataka koda aplikacije.
    • USART_InitTypeDef
      Ovo je struktura osnovne konfiguracije UART-a koja se sastoji od konfiguracija BaudRate, WordLength, StopBits, Parity i Mode, kao što je prikazano u nastavku.
      Varijabilna Ime Tip Opis
      USART_BaudRate u32 UART komunikacijska brzina prijenosa podataka
      USART_Duljina riječi u16 Duljina UART komunikacijske riječi: 7, 8 ili 9 bita
      USART_StopBits u16 Duljina zaustavnog bita UART komunikacije: 1 ili 2 bita
      USART_Paritet u16 UART komunikacijski paritet: par, nepar, oznaka, razmak ili bez pariteta
      USART_Mode u16 UART način komunikacije; API-ji podržavaju samo normalni način rada
  2. Prije korištenja API funkcija, dovršite osnovnu konfiguraciju UART-a u glavnom programu. Osnovna konfiguracija UART-a za ovaj aplikacijski kod prikazana je na slici 12. Ovdje je brzina prijenosa podataka 115200bps, duljina riječi je 8-bitna, duljina stop bita je 1-bitna i nema pariteta.
    Slika 12. Osnovna konfiguracija UART-a
    Osnovna konfiguracija
  3. 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 
    Deklaracije API funkcija
Ime void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funkcija Inicijalizacija UART modula
  Ulazni CH UART kanal
pUART_Pokretanje Pokazivač strukture osnovne konfiguracije UART-a
 uRxTimeOutValue UART RX FIFO vrijednost isteka vremena. Kada RX FIFO primi nove podatke, brojač će se resetirati i ponovno pokrenuti. Nakon što brojač dosegne unaprijed postavljenu vrijednost isteka vremena i odgovarajući prekid isteka vremena je omogućen, generirat će se prekid isteka vremena.
 Korištenje UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Izvrši UART osnovnu konfiguraciju//Pogledajte sliku 12 za USART_InitStructure konfiguraciju
Ime u32 UARTM_WriteByte(u32 CH, u8 uData)
Funkcija Operacija pisanja bajta UART modula (TX)
Ulazni CH UART kanal
uData Podaci koje treba napisati
Izlaz USPJEH Uspješno
POGREŠKA nije uspjelo
Korištenje UARTM_WriteByte(UARTM_CH0, 'A'); //UART piše 1 bajt – 'A'
Ime u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funkcija Operacija pisanja UART modula (TX)
 Ulazni CH UART kanal
pBuffer Pokazivač međuspremnika
uDuljina Duljina podataka koji se upisuju
Izlaz USPJEH Uspješno
POGREŠKA nije uspjelo
 Korištenje u8 Test[] = “Ovo je test!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART zapisuje pBuffer podatke
Ime u32 UARTM_ReadByte(u32 CH, u8 *pData)
Funkcija Operacija čitanja bajta UART modula (RX)
Ulazni CH UART kanal
pData Adresa za smještaj pročitanih podataka
Izlaz USPJEH Uspješno
POGREŠKA Nije uspjelo (nema podataka)
   Korištenje u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == USPJEH){UARTM_WriteByte(UARTM_CH0, TempData);}//Ako UARTM_ReadByte() vrati USPJEH tada UART zapisuje ovaj bajt podataka
Ime u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funkcija Operacija čitanja UART modula (RX)
 Ulazni CH UART kanal
pBuffer Pokazivač međuspremnika
uDuljina Duljina podataka koji se čitaju
Izlaz Broj čitanja Duljina podataka je očitana
     Korištenje 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 to Len//Zapišite podatke iz Test2
Ime u32 UARTM_GetReadBufferLength(u32 CH)
Funkcija Dobivanje duljine međuspremnika za čitanje (RX)
Ulazni CH UART kanal
Izlaz uDuljina Očitajte duljinu međuspremnika
  Korištenje UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicijalizacija UART modula while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Pričekajte da UARTM_ReadBuffer primi 5 bajtova podataka
Ime u32 UARTM_GetWriteBufferLength(u32 CH)
Funkcija Nabavite duljinu međuspremnika za pisanje (TX)
Ulazni CH UART kanal
Izlaz uDuljina Upišite duljinu međuspremnika
Ime u8 UARTM_IsTxFinished(u32 CH)
Funkcija Dobijte status TX
Ulazni CH UART kanal
Izlaz PRAVI TX status: završeno
NETOČNO TX status: nije završeno
      Korištenje UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Ovaj API se može koristiti za provjeru TX statusa, kao što je prikazano gore; pričekajte dok UARTM_WriteByte() API ne završi, tj. status TX je TRUE, a zatim nastavite s sljedećim radnjama.//Dodano je ograničenje jer ova funkcija nije dodana sve dok broj SVN verzije u uart_module.c nije 525.
Ime poništiti UARTM_DiscardReadBuffer(u32 CH)
Funkcija Odbacite podatke u međuspremniku za čitanje
Ulazni CH UART kanal

Upotreba API-ja Npramples 

Ovaj odjeljak će pokazati API pisanje i čitanje exampdatoteke aplikacijskog koda “Module_UART” koristeći proces inicijalizacije i “UART_Module_Example” proces aplikacijskog koda. Prije korištenja API-ja, korisnici moraju uključiti API zaglavlje file u izvorni kod glavnog programa file (#include “middleware/uart_module.h”).

Kao što je prikazano na slici 14, kada ulazite u proces inicijalizacije, prvo definirajte strukturu osnovne konfiguracije UART-a. Zatim konfigurirajte članove osnovne konfiguracijske strukture UART-a uključujući BaudRate, WordLength, StopBits, Parity i Mode. Na kraju, pozovite funkciju inicijalizacije API-ja, čiji završetak označava kraj procesa inicijalizacije. Nakon toga korisnici mogu nastaviti s operacijama pisanja i čitanja na temelju unaprijed postavljene osnovne konfiguracije UART-a.

Slika 14. Dijagram toka inicijalizacije
Dijagram toka inicijalizacije

“UART_Module_Example” aplikacijski kod demonstrira API operacije čitanja i pisanja na način povratne petlje. Dijagram toka za to prikazan je na slici 15. API funkcije koje se koriste uključuju UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() i UARTM_GetReadBufferLength(). Njihov opis nalazi se u odjeljku "Opis API-ja".

Slika 15. Dijagram toka pisanja i čitanja Examples
Dijagram toka pisanja i čitanja Examples

Postoji još jedan kod aplikacije “UART_Bridge” u mapi “Module_UART” čiji se odnos file opis je uveden u odjeljku "Struktura imenika". Aplikacijski kod “UART_Bridge” aktivira dva UART kanala, UART CH0 i UART CH1, a zatim prilagođava komunikacijski protokol između dva UART uređaja putem COMMAND struktura, gCMD1 i gCMD2. Oni su definirani u uart_bridge.c, kao što je prikazano u nastavku. UARTBridge_CMD1TypeDef gCMD1:

Varijabilna Ime Tip Opis
uZaglavlje u8 Zaglavlje
uCmd u8 Naredba
uData[3] u8 Podaci

UARTBridge_CMD2TypeDef gCMD2:

Varijabilna Ime Tip Opis
uZaglavlje u8 Zaglavlje
uCmdA u8 Naredba A
uCmdB u8 Naredba B
uData[3] u8 Podaci

U kodu aplikacije “UART_Bridge” upotrijebite gCMD1 za primanje podataka kao paket naredbi i zatim ih analizirajte. Zatim prema prilagođenom komunikacijskom protokolu postavite gCMD2 kao paket odgovora i pošaljite ga. Sljedeći je bivšiamppaketa naredbi gCMD1) i paketa odgovora (gCMD2). Paket naredbi (UARTBridge_CMD1TypeDef gCMD1):

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

Paket odgovora (UARTBridge_CMD2TypeDef gCMD2):

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

Zanimanje resursa
Uzimajući HT32F52352 kao primjerample, resursi koje zauzima UART modul prikazani su u nastavku.

HT32F52352
Veličina ROM-a 946 bajtova
Veličina RAM-a 40*1 + 256*2 Bajtovi

Bilješka:

  1. Globalne varijable uključujući zastavice i status za jedan kanal zauzimaju 40 bajtova RAM-a.
  2.  Ovo je za uvjete kada se koristi jedan kanal, a veličina međuspremnika TX/RX je 128/128 bajtova. Veličina međuspremnika može se postaviti prema zahtjevima aplikacije.

Tablica 4. Zauzetost resursa koda aplikacije 

  • Okruženje kompilacije: MDK-Arm V5.36, ARMCC V5.06 ažuriranje 7 (verzija 960)
  • Optimiziraj opciju: Razina 2 (-O2)

Upute za uporabu

Ovo poglavlje će predstaviti pripremu okruženja za "Module_UART" aplikacijski kod, kao i korake kompilacije i testiranja.

Priprema okoliša
Hardver i softver potrebni za aplikacijski kod "Module_UART" navedeni su u nastavku.
Tablica 5. Priprema okoline hardvera/softvera 

Hardver/Softver Računati Bilješka
Komplet za početnike 1 Ova bilješka o aplikaciji koristi HT32F52352 Starter Kit kao primjerample
USB kabel 1 Micro USB, spojen na PC
Aplikacijski kod Putanja za preuzimanje, file i konfiguracija direktorija predstavljeni su u odjeljku “Preuzimanje i priprema resursa”. Put: “\\application\Module_UART\UART_Module_Examp"
Tera Term Pogledajte odjeljak "Softver terminala".
Keil IDE Keil uVision V5.xx

Najprije upotrijebite HT32F52352 Starter Kit u kombinaciji s funkcijom Virtual COM Port (VCP) e-Link32 Lite za uvod u UART aplikaciju. To zahtijeva provedbu sljedeće pripreme za okoliš:

  1. Na ploči se nalaze dva USB sučelja. Koristite USB kabel za povezivanje računala i eLink32 Lite sučelja na ploči kao što je prikazano na slici 16-(a).
  2. Budući da kod aplikacije treba koristiti funkciju virtualnog COM priključka (VCP) e-Link32 Lite, osigurajte da su PAx*2 i DAP_Tx UART Jumper-J2*1 kratko spojeni pomoću kratkospojnika. Lokacija J2 označena je slikom 16-(b).

Bilješka

  1. J2 na Starter Kitu ima dvije opcije, PAx i DAP_Tx kratko spojene ili PAx i RS232_Tx kratko spojene. Pogledajte korisnički priručnik Starter Kit za detaljne funkcije podešavanja.
  2. Položaj pina MCU UART RX na različitim početnim setovima je različit. Ovaj bivšiample koristi PAx za označavanje RX pina.

Slika 16. Blok dijagram kompleta za početnike HT32
Blok dijagram kompleta

Sada koristite korisničku ciljnu ploču u kombinaciji s funkcijom Virtual COM Port (VCP) e-Link32 Pro za uvođenje UART aplikacije. To zahtijeva provedbu sljedeće pripreme za okoliš:

  1. Jedna strana e-Link32 Pro spojena je na osobno računalo pomoću Mini USB kabela, a druga strana je spojena na korisničku ciljnu ploču putem 10-bitnog sivog kabela. Veza između SWD sučelja kabela i ciljne ploče implementirana je pomoću Dupont linija, kao što je prikazano na slici 17-(a).
  2. Pinovi za serijsku komunikaciju e-Link32 Pro su Pin#7 VCOM_RXD i Pin#8-VCOM_TXD. Oni bi trebali biti spojeni na TX i RX pinove korisničke ciljne ploče, kao što je prikazano na slici 17-(b).
    Slika 17. Blok dijagram ciljne ploče e-Link32 Pro + korisnik
    Ciljna ploča korisnika

Kompilacija i testiranje
Ovaj odjeljak će uzeti "application\Module_UART\UART_Module_Example” kao bivšiample za uvođenje procesa kompilacije i testiranja. Prije toga provjerite jesu li provedene sve pripreme opisane u prethodnom odjeljku i je li preuzet softver terminala Tera Term.

Detaljni koraci operacije sažeti su u nastavku.
Korak 1. Test uključivanja

Postavite hardversko okruženje kao što je opisano u prethodnom odjeljku. Nakon uključivanja, D9 LED za napajanje u donjem lijevom kutu početnog kompleta će svijetliti. D1 USB LED na e-Link32 Lite u gornjem desnom kutu zasvijetlit će nakon završetka USB numeriranja. Ako D1 ne svijetli nakon dužeg vremena, provjerite može li USB kabel komunicirati. Ako nije, uklonite ga i ponovno umetnite.

Korak 2. Generirajte projekt
Otvorite aplikaciju\Module_UART\UART_Module_Example mapu, kliknite na _CreateProject.bat file za generiranje projekta, kao što je prikazano na slici 18. Budući da ova bilješka o aplikaciji koristi HT32F52352 Starter Kit, otvorite Keil IDE projekt “Project_52352.uvprojx” koji se nalazi u mapi MDK_ARMv5.

Slika 18. Izvršite _CreateProject.bat za generiranje projekta
Generiraj projekt

Korak 3. Prevedite i programirajte
Nakon što je projekt otvoren, prvo kliknite na “Build” (ili koristite prečicu “F7”), zatim kliknite na “Download” (ili koristite prečicu “F8”). Nakon toga, rezultati izgradnje i preuzimanja bit će prikazani u prozoru Izlaz izgradnje. Pogledajte sliku 19.

Slika 19. Rezultati izgradnje i preuzimanja
Izrada i preuzimanje rezultata

Korak 4. Otvorite softver Tera Term i konfigurirajte serijski priključak
Otvorite softver Tera Term i COM port. Obratite pozornost na to je li broj COM porta koji je generirao Starter Kit točan ili nije. Zatim kliknite na “Setup >> Serial Port” za ulazak u konfiguracijsko sučelje. Konfiguracija UART sučelja aplikacijskog koda "Module_UART" opisana je u odjeljku "Softver terminala". Rezultat postavljanja prikazan je na slici 20.

Slika 20. Rezultat postavljanja serijskog priključka Tera Term
Rezultat postavljanja
Korak 5. Resetirajte sustav i testirajte
Pritisnite tipku SK reset – B1 Reset. Nakon toga, "ABC Ovo je test!" poruka će biti
prenosi se kroz API i bit će prikazan u prozoru Tera Term, kao što je prikazano na slici 21. Što se tiče funkcije primanja, prilikom unosa podataka u prozor Tera Term, relevantni API koristit će se za određivanje duljine međuspremnika prijama. Kada podaci koje prima računalo dosegnu 5 bajtova, primljenih 5 bajtova podataka bit će poslano uzastopno. Kao što je prikazano na slici 22, sekvencijalno uneseni podaci su "1, 2, 3, 4, 5", koji se primaju i utvrđuju putem API-ja. Nakon toga, podaci "1, 2, 3, 4, 5" bit će ispisani nakon pet unosa.

Slika 21. Funkcionalni test aplikacijskog koda “Module_UART” – prijenos
Funkcionalni test aplikacijskog koda

Slika 22. Funkcionalni test aplikacijskog koda “Module_UART” – prijem
Funkcionalni test aplikacijskog koda

Upute za presađivanje
Ovaj odjeljak će predstaviti kako integrirati API-je u korisničke projekte.
Korak 1. Dodajte uart_module.c file u projekt. Desnom tipkom miša kliknite mapu Korisnik. 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 puta.

Slika 23. Dodajte uart_module.c File u Projekt
File u Projekt

Korak 2. Dodajte ring_buffer.c file u projekt. Desnom tipkom miša kliknite mapu Korisnik. 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 puta.
Slika 24. Dodajte ring_buffer.c File u Projekt 
File u Projekt

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 do glavnog.c
Uključi API zaglavlje File

Korak 4. Implementirajte postavke potrebne za UART komunikaciju koristeći ht32_board_config.h file. Ovo je detaljno predstavljeno u odjeljcima "Opis postavki" i "Izmjene postavki i često postavljana pitanja".

Izmjene postavki i FAQ 

Ovaj odjeljak predstavit će vam kako promijeniti postavke UART-a i objasniti neka uobičajena pitanja koja se javljaju tijekom korištenja.

Promjena UART Pin Assignment 

  1. Pozivajući se na poglavlje HT32F52352 Datasheet “Pin Assignment”, potražite tablicu mapiranja alternativnih funkcija koja navodi AFIO funkcije vrste uređaja. Za pinove relevantne za UART, pogledajte stupac "AF6 USART/UART", kao što je prikazano na slici 26.
    Slika 26. Tablica mapiranja alternativne funkcije HT32F52352
    Tablica preslikavanja alternativnih funkcija
  2. Ovaj korak će voditi korisnike da lociraju odgovarajuće UART pinove pomoću gornje tablice. HT32F52352 example koristi USART1 kao zadani kanal. Ovdje su pinovi TX i RX USR1_TX i USR1_RX i nalaze se na PA4 odnosno PA5. Slika 27 prikazuje korespondenciju pinova kao i definicije pinova u “ht32_board_config.h”. Prazna polja za "Paket" u tablici dodjele pinova znače da u ovom paketu nema relevantnih GPIO-ova. Za izmjenu UART pinova, pronađite ciljne lokacije pinova i ponovno definirajte pinove pomoću "ht32_board_config.h" file.
    Slika 27. Pin korespondencija i izmjena postavki
    Promjena postavki

Dodajte UART kanal
Uzimajući HT32F52352 HTCFG_UARTM_CH1 kao primjerample, ovdje je opisano kako dodati novi UART kanal.

Izmijenite ht32_board_config.h file
Pozivajući se na poglavlje HT32F52352 Datasheet “Pin Assignment”, potražite tablicu mapiranja alternativnih funkcija koja navodi AFIO funkcije vrste 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, redom, kao što je prikazano u gornjoj polovici slike 28. Odgovarajuće izmjene su implementirane pomoću linija koda 120~126 u ht32_board_config.h, kao što je prikazano crvenim točkastim okvirom na slici 28.

Slika 28. Dodavanje UART kanala
UART kanal

FAQ
Q: U koraku 5 odjeljka Kompilacija i testiranje, funkcionalni test prijenosa je normalan. Evo, "ABCThis is test!" poruka je uspješno prikazana, ali za funkciju primanja, zašto se pet ulaznih vrijednosti ne vraća i ne prikazuje?
A: Provjerite jesu li MCU UART RX i DAP_Tx pinovi UART Jumper-J2 kratko spojeni pomoću kratkospojnika. Budući da kod aplikacije “Module_UART” treba koristiti virtualni COM priključak (VCP) e-Link32 Lite, postavku kratkog spoja treba primijeniti na dvije lijeve igle UART Jumper-J2, kao što je prikazano na slici 29.

Slika 29. Postavka UART premosnika-J2
UART kratkospojnik

P: Poslije izvršavanjem “Build” (ili prečaca “F7”), pojavljuje se poruka o pogrešci koja pokazuje da je verzija biblioteke firmvera starija od one koja je potrebna? Pogledajte sliku 30.
A: Implementacija aplikacijskog koda "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 pogrešci, to znači da je trenutno korištena biblioteka firmvera starija verzija. Stoga je potrebno preuzeti najnoviju verziju putem veze navedene u odjeljku "Biblioteka firmvera".

Slika 30. Poruka o pogrešci verzije biblioteke firmvera
Poruka o pogrešci verzije

Zaključak

Ovaj dokument pruža osnovni uvod kako bi pomogao korisnicima u boljem razumijevanju aplikacijskog koda "Module_UART" i UART komunikacijskog protokola. Nakon toga je uslijedilo preuzimanje resursa i priprema. Poglavlje Funkcionalni opis uvelo je file strukturu direktorija, arhitekturu API-ja, opis API-ja i korištenje API-ja npramples. U poglavlju s uputama za uporabu prikazana je priprema okoline, kompilacija i testiranje aplikacijskog koda “Module_UART”. Također je dao upute za transplantaciju koda i postavku modifikacije, kao i objašnjenje nekih uobičajenih problema koji se mogu pojaviti. Sve ovo u kombinaciji omogućit će korisnicima da brzo razumiju 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 izmjenama

Datum Autor Otpuštanje Informacije o izmjenama
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Prva verzija

Odricanje

Sve informacije, zaštitni znakovi, logotipi, grafike, video zapisi, audio isječci, poveznice i druge stavke koje se pojavljuju na ovom webstranica ('Informacije') služe samo kao referenca i podložne su promjenama u bilo kojem trenutku bez prethodne najave i prema diskrecijskoj odluci Holtek Semiconductor Inc. i njegovih povezanih društava (u daljnjem tekstu 'Holtek', 'tvrtka', 'nas', ' mi' ili 'naš'). Dok Holtek nastoji osigurati točnost informacija o tome webstranici, Holtek ne daje nikakvo izričito ili prešutno jamstvo za točnost informacija. Holtek neće snositi odgovornost za bilo kakvu netočnost ili curenje.
Holtek neće biti odgovoran za bilo kakvu štetu (uključujući, ali ne ograničavajući se na računalni virus, probleme sa sustavom ili gubitak podataka) koja proizlazi iz korištenja ili u vezi s korištenjem ovog webbilo koje strane. U ovom području možda postoje veze koje vam omogućuju da posjetite webstranice drugih tvrtki.
ove webstranice nisu pod kontrolom Holteka. Holtek neće snositi nikakvu odgovornost niti jamstvo za bilo kakve informacije prikazane na takvim stranicama. Hiperveze na druge webstranice su na vlastitu odgovornost.

Ograničenje odgovornosti

Holtek Limited ni u kojem slučaju neće biti odgovoran bilo kojoj drugoj strani za bilo kakav gubitak ili štetu ili na bilo koji način uzrokovan izravno ili neizravno u vezi s vašim pristupom ili korištenjem ovog webstranice, sadržaj na njoj ili bilo koju robu, materijale ili usluge.

Mjerodavno pravo
Odricanje od odgovornosti sadržano u webstranica će se regulirati i tumačiti u skladu sa zakonima Republike Kine. Korisnici će se podvrgnuti neisključivoj nadležnosti sudova Republike Kine.

Ažuriranje Odricanja od odgovornosti
Holtek zadržava pravo ažuriranja Izjave o odricanju od odgovornosti u bilo koje vrijeme sa ili bez prethodne obavijesti, sve promjene stupaju na snagu odmah nakon objave na webmjesto.

Dokumenti / Resursi

Napomena o aplikaciji HOLTEK HT32 MCU UART [pdf] Korisnički priručnik
HT32 MCU, UART Napomena o aplikaciji, HT32 MCU UART, Napomena o aplikaciji, HT32, Napomena o aplikaciji MCU UART, Napomena o aplikaciji HT32 MCU UART

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *