HOLTEK HT32 MCU UART Uporabniški priročnik Opomba o uporabi
Opomba o aplikaciji HOLTEK HT32 MCU UART

Uvod

Univerzalni asinhroni sprejemnik/oddajnik – UART je široko uporabljen vmesnik za serijski prenos, ki zagotavlja prilagodljiv asinhroni polno dupleksni prenos podatkov. Aplikacijska koda »Module_UART«, navedena v tej opombi o aplikaciji, uporablja prekinitve TX/RX s programskimi obročnimi medpomnilniki za izvajanje preprostih funkcij oddajanja/sprejemanja UART prek API-jev, katerih povezane funkcije so opisane spodaj. To bo poenostavilo celoten proces prenosa podatkov in uporabnikom omogočilo hitro razumevanje in implementacijo komunikacijskih aplikacij UART.

  • Funkcije prenosa/sprejemanja: branje bajtov, pisanje bajtov, branje medpomnilnika, pisanje medpomnilnika itd.
  • Statusne funkcije: pridobite dolžino medpomnilnika, status TX itd.

Ta dokument bo najprej predstavil komunikacijski protokol UART, ki bo uporabnikom pomagal bolje razumeti komunikacijo UART od načela do aplikacije. Sledi prenos in priprava virov, potrebnih za kodo aplikacije, vključno s knjižnico vdelane programske opreme, prenosom kode aplikacije, file in konfiguracijo imenika ter uvod v terminalsko programsko orodje, uporabljeno v opombi o aplikaciji. V poglavju Funkcionalni opis bodo predstavljeni struktura imenika kode aplikacije, nastavitve parametrov in opis API-ja. Uporaba API-ja bo opisana z uporabo kode aplikacije »Module_UART«, navedena pa bo tudi poraba virov Flash/RAM, ki so potrebni za API-je. Poglavje z navodili za uporabo bo vodilo uporabnika skozi korake okoljske priprave, sestavljanja in testiranja, da potrdi, da bo koda aplikacije pravilno delovala. Nato bo zagotovil navodila, ki pojasnjujejo, kako integrirati API-je v uporabnikove projekte, in na koncu zagotovila referenco za spremembe in pogoste težave, s katerimi se lahko srečate.

Uporabljeni okrajšave: 

  • UART: Univerzalni asinhroni sprejemnik/oddajnik
  • API: Programski vmesnik aplikacij
  • LSB: Najmanj pomemben bit
  • MSB: Najpomembnejši bit
  • PC: Osebni računalnik
  • SK: Začetni komplet, razvojna plošča HT32
  • IDE: Integrirano razvojno okolje

Komunikacijski protokol UART

UART je serijski komunikacijski tip vmesnika, ki izvaja pretvorbo podatkov vzporedno v serijsko na svojem oddajniku in nato zaporedno komunicira s podobnim sprejemnikom. Sprejemnik nato po sprejemu podatkov izvede serijsko-vzporedno pretvorbo podatkov. Slika 1 prikazuje shematski diagram serijske komunikacije, ki prikazuje, kako se podatki prenašajo v bitnem vrstnem redu. Zato sta za dvosmerno komunikacijo med oddajnikom in sprejemnikom potrebni le dve žici, TX in RX, za serijski prenos podatkov med seboj. TX je zatič, na katerega UART prenaša serijske podatke in je povezan z zatičem RX sprejemnika. Zato morata napravi oddajnik in sprejemnik navzkrižno povezati svoje nožice TX in RX za izvajanje dvosmerne komunikacije UART, kot je prikazano v Slika 2.

Slika 1. Diagram serijske komunikacije
Diagram serijske komunikacije

Slika 2. Shema vezja UART
Shema vezja UART

Med serijsko komunikacijo UART je prenos podatkov asinhron. To pomeni, da med oddajnikom in sprejemnikom ni ure ali drugega sinhronizacijskega signala. Tu se uporablja hitrost prenosa podatkov, ki je serijska hitrost prenosa/sprejemanja podatkov in ki jo nastavita obe strani pred prenosom podatkov. Poleg tega se na začetek in konec podatkovnega paketa dodajo posebni biti, kot sta začetni in končni bit, da tvorijo celoten podatkovni paket UART. Slika 3 prikazuje strukturo podatkovnega paketa UART, medtem ko slika 4 prikazuje 8-bitni podatkovni paket UART brez paritetnega bita.
Slika 3. Struktura podatkovnega paketa UART
Struktura podatkovnega paketa UART

Slika 4. 8-bitni format podatkovnega paketa UART
Format podatkovnega paketa
Vsak del podatkovnega paketa UART je predstavljen v vrstnem redu spodaj.

  • Začetni bit: To označuje začetek podatkovnega paketa. Pin UART TX običajno ostane na visoki logični ravni, preden se prenos začne. Če se začne prenos podatkov, bo oddajnik UART potegnil pin TX od visokega do nizkega, tj. od 1 do 0, in ga nato tam zadržal en takt. Sprejemnik UART bo začel brati podatke, ko bo na zatiču RX zaznan prehod od visokega do nizkega.
  • podatki: To so dejanski preneseni podatki z dolžino podatkov 7, 8 ali 9 bitov. Podatki se običajno najprej prenesejo z LSB.
  • Paritetni bit: Število logične "1" v podatkih se uporablja za ugotavljanje, ali so se kateri koli podatki med prenosom spremenili. Za sodo parnost mora biti skupno število logičnih "1" v podatkih sodo število, nasprotno pa mora biti skupno število logičnih "1" v podatkih liho število za liho pariteto.
  • Stop bit: To označuje konec podatkovnega paketa, kjer bo oddajnik UART potegnil pin TX od nizkega do visokega, tj. od 0 do 1, in ga nato tam zadržal 1 ali 2-bitno časovno obdobje.

Kot je bilo že omenjeno, ker v vezju UART ni taktnega signala, je treba med oddajnikom in sprejemnikom definirati enako serijsko hitrost prenosa/sprejemanja podatkov, ki je znana kot hitrost prenosa, da se izvede prenos brez napak. Hitrost prenosa je definirana s številom prenesenih bitov na sekundo v bps (bit na sekundo). Nekatere standardne in običajno uporabljene hitrosti prenosa so 4800 bps, 9600 bps, 19200 bps, 115200 bps itd. Spodaj je prikazan ustrezen čas, potreben za prenos enega podatkovnega bita.
Tabela 1. Hitrost prenosa v primerjavi z 1-bitnim časom prenosa 

Hitrost prenosa 1-bitni prenos Čas
4800 bps 208.33 µs
9600 bps 104.16 µs
19200 bps 52.08 µs
115200 bps 8.68 µs

Prenos in priprava virov

To poglavje bo predstavilo kodo aplikacije in uporabljeno programsko orodje ter kako konfigurirati imenik in file pot.

Knjižnica vdelane programske opreme 

Najprej se prepričajte, da je bila knjižnica vdelane programske opreme Holtek HT32 prenesena pred uporabo kode aplikacije. Povezava za prenos je prikazana spodaj. Tukaj sta dve možnosti, HT32_M0p_Vyyyymmdd.zip za serijo HT32F5xxxx in HT32_M3_Vyyyymmdd.zip za serijo HT32F1xxxx. Prenesite in razpakirajte želeno file.

Zadrga file vsebuje več map, ki jih je mogoče razvrstiti kot dokument, knjižnico vdelane programske opreme, orodja in druge elemente, katerih pot umestitve je prikazana na sliki 5. Zip knjižnice vdelane programske opreme HT32 file z a file ime HT32_STD_xxxxxx_FWLib_Vm.n.r_s.zip se nahaja v mapi Firmware_Library.

Slika 5. Vsebina HT32_M0p_Vyyyymmdd.zip
Vsebina

Koda aplikacije
Prenesite kodo aplikacije na naslednji povezavi. Koda aplikacije je zapakirana v zip file z a file ime HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. glej Slika 6 za file konvencije o imenih.

Slika 6. Koda aplikacije File Ime Uvod 

Povezava za prenos: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Koda aplikacije

File in konfiguracijo imenika
Ker koda aplikacije ne vsebuje knjižnice vdelane programske opreme HT32 files, koda aplikacije in knjižnica vdelane programske opreme sta odpakirani files je treba postaviti na pravilno pot pred začetkom prevajanja. Poštna koda aplikacije file običajno vsebuje eno ali več map, kot sta aplikacija in knjižnica, kot je prikazano na sliki 7. Postavite mapo aplikacije v korenski imenik knjižnice vdelane programske opreme HT32, da dokončate file konfiguracijo poti, kot je prikazano na sliki 8. Druga možnost je, da istočasno odpakirate kodo aplikacije in knjižnico vdelane programske opreme HT32 v isto pot, da dosežete enake rezultate konfiguracije.

Slika 7. Vsebina HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip
Vsebina

Slika 8. Dekompresijska pot
Dekompresijska pot

Terminalska programska oprema
Aplikacijska koda lahko prenaša sporočila prek vrat COM za izvedbo izbire funkcije ali prikaza stanja. To zahteva, da ima gostiteljska stran vnaprej nameščeno terminalsko programsko opremo. Uporabniki lahko izberejo ustrezno programsko opremo za povezavo ali uporabijo brezplačno licenčno programsko opremo, kot je Tera Term. V kodi aplikacije je kanal UART konfiguriran z dolžino besede 8 bitov, brez paritete, 1 stop bit in hitrostjo prenosa 115200 bps.

Funkcionalni opis

To poglavje bo zagotovilo funkcionalni opis kode aplikacije, vključno z informacijami o strukturi imenika, arhitekturi API-ja, opisom nastavitev itd.

Struktura imenika
Koda aplikacije file vsebuje mapo aplikacij. Naslednja plast je mapa »Module_UART«, ki vsebuje dva aplikacijska programa, »UART_Module_Example« in »UART_Bridge«. Ustrezno fileso navedeni in opisani spodaj.
Tabela 2. Struktura imenika kode aplikacije

Mapa / File Ime Opis
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Paketni skripti za ustvarjanje projekta files
_ProjectSource.ini Inicializacija file za dodajanje izvorne kode projektom
ht32_board_config.h Nastavitev file povezanih z dodelitvijo perifernih V/I
ht32fxxxxxx_01_it.c Prekinite servisni program file
glavni.c Glavna izvorna koda programa
\\aplikacija\Modul_UART\UART_Bridge*2
_CreateProject.bat Paketni skripti za ustvarjanje projekta files
_ProjectSource.ini Inicializacija file za dodajanje izvorne kode projektom
ht32_board_config.h Nastavitev file povezanih z dodelitvijo perifernih V/I
ht32fxxxxxx_01_it.c Prekinite servisni program file
glavni.c Izvorna koda glavnega programa
uart_bridge.h uart_bridge.c Glava mostu UART file in izvorno kodo file
\\pripomočki\vmesna programska oprema
uart_module.h*3 uart_module.c*3 Glava API-ja file in izvorno kodo file
\\pripomočki\skupno
ringbuffer.h ring_buffer.c Glava medpomnilnika obroča programske opreme file in izvorno kodo file

Opomba: 

  1. V »UART_Module_Example«, se operacije branja in pisanja API-ja izvajajo na način povratne zanke, glejte »Uporaba API-ja Examples« za več podrobnosti.
  2.  V kodi aplikacije »UART_Bridge« sta aktivirana dva kanala UART, UART CH0 in UART CH1, med obema napravama UART pa je implementiran komunikacijski protokol po meri prek struktur COMMAND. Za več informacij glejte »Uporaba API-ja, npramples«.
  3. Koda aplikacije mora uporabljati uart_module.c/h fileki imajo zahtevo za različico knjižnice vdelane programske opreme. Zahteva se lahko občasno spremeni glede na posodobitev. Če želite potrditi trenutno zahtevo za različico knjižnice vdelane programske opreme, si oglejte vsebino preverjanja odvisnosti tako, da v main.c poiščete ključno besedo »Preverjanje odvisnosti«. file. Če različica knjižnice vdelane programske opreme ne izpolnjuje zahtev, prenesite najnovejšo različico s povezave v razdelku »Knjižnica vdelane programske opreme«.

API arhitektura
Vsak API ima pomemben parameter CH, ki je kanal UART. To določa, kateri kanal UART je treba nadzorovati. Trenutno so podprti do štirje kanali UART, zato so štirje konstantni simboli definirani na naslednji način. Ti se uporabljajo kot parameter CH, ki zagotavlja API-je kot osnovo za nadzor.

  • UARTM_CH0: vhodni parameter – nadzor ali konfiguracija UART CH0
  • UARTM_CH1: vhodni parameter – nadzor ali konfiguracija UART CH1
  • UARTM_CH2: vhodni parameter – nadzor ali konfiguracija UART CH2
  • UARTM_CH3: vhodni parameter – nadzor ali konfiguracija UART CH3

Prostor v pomnilniku ne bo izgubljen, če bo uporabljen samo en kanal UART. To je zato, ker je mogoče nastaviti število podprtih kanalov UART in predprocesor odstrani neuporabljeno kodo kanala UART, da poveča razpoložljivi pomnilniški prostor. Arhitektura API-ja je prikazana v Slika 9.

Slika 9. Blokovni diagram arhitekture API-ja
Blokovni diagram arhitekture

Vsak API je sestavljen iz štirih skupin nastavitev ali kontrol, povezanih s kanalom UART, tako da morajo uporabniki samo vnesti želeni parameter CH. Za konfiguracijo ustreznega API-ja je potrebna le dodatna tabela osnovnih konfiguracijskih parametrov UART s strukturnim obrazcem USART_InitTypeDef. API bo implementiral osnovno konfiguracijo UART v skladu z vsebino parametrov v tabeli. Za strukturno tabelo osnovne konfiguracije UART glejte razdelek »Opis API-ja«.

Uart_module.c/.h filevsebujejo le prekinitev (CHx_IRQ) ​​in tabelo stanja (CHx Status) vsakega kanala UART, medtem ko vse nastavitve, potrebne za komunikacijo UART, zagotavlja ht32_board_config.h. Relevantni parametri strojne opreme v datoteki ht32_board_config.h file so prikazani v spodnji tabeli. Več podrobnosti je na voljo v razdelku »Opis nastavitve«.

Relevantni parametri za strojno opremo v ht32_board_config.h vključujejo I/O nastavitve in fizične nastavitve vrat UART, kot sledi.

Tabela 3. Definicijski simboli v ht32_board_config.h

Simbol Opis
HTCFG_UARTM_CH0 Ime fizičnih vrat UART; nprample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Določa ime vrat TX za CH0; nprample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Določa številko pina TX za CH0; nprample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Določa ime vrat RX za CH0; nprample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Določa številko pina TX za CH0; nprample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Določa velikost medpomnilnika TX za CH0; nprampod: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Določa velikost medpomnilnika RX za CH0; nprampod: 128

Če želite spremeniti konfiguracijo AFIO kanala UART, glejte podatkovni list ustrezne naprave. Trenutno veljajo le V/I definicije za UART CH0, saj je bil samo UART CH0 konfiguriran v ht32_board_config.h. Če želite dodati UART CH1~3, je treba njihove V/I definicije dokončati s sklicevanjem na definicijo UART CH0 ali s sklicevanjem na razdelek »Spreminjanje nastavitev in pogosta vprašanja«.

Obstajajo tri glavne značilnosti arhitekture API: 

  1. Podprti so do štirje kanali UART. Njihovi vhodni parametri so UARTM_CH0, UARTM_CH1, UARTM_CH2 in UARTM_CH3.
  2.  Število kanalov UART je mogoče nastaviti in neuporabljeni kanali ne bodo zmanjšali razpoložljivega pomnilniškega prostora.
  3. Vse nastavitve UART in I/O definicije so popolnoma ločene od API-jev. To poveča udobje upravljanja vrednosti nastavitev in zmanjša možnost nepravilnih ali manjkajočih nastavitev.

Opis nastavitve 

Ta razdelek bo predstavil nastavitve parametrov v ht32_board_config.h in uart_module.h files.

  1. ht32_board_config.h: To file se uporablja za definicije pinov in ustrezne nastavitve razvojne plošče, ki vključujejo kanal UART IP (UART0, UART1, USART0…), ki ga uporablja začetni komplet (SK), ustrezne lokacije pinov TX/RX in velikost medpomnilnika TX/RX. Slika 10 prikazuje vsebino nastavitev začetnega kompleta HT32F52352. Odvisno od funkcionalne integracije razvoja se lahko uporabniki obrnejo na razdelek »Pin Assignment« na podatkovnem listu uporabljene naprave za implementacijo definicij pinov. Več podrobnosti o spreminjanju nastavitev bo opisanih v razdelku »Spremembe nastavitev in pogosta vprašanja«.
    Slika 10. Nastavitve ht32_board_config.h (HT32F52352)
    nastavitve
  2. uart_module.h: To je glava API-ja file uporablja koda aplikacije, ki vključuje ustrezne privzete nastavitve, definicije funkcij itd. Kot je prikazano na sliki 11, lahko vsebino privzetih nastavitev prepišejo zunanje konfiguracije, kot so nastavitve v ht32_board_config.h file.
    Slika 11. Privzete nastavitve v uart_module.h
    Privzete nastavitve
Opis API-ja
  1. Opis vrste podatkov kode aplikacije.
    • USART_InitTypeDef
      To je osnovna konfiguracijska struktura UART, ki je sestavljena iz konfiguracij BaudRate, WordLength, StopBits, Parity in Mode, kot je prikazano spodaj.
      Spremenljivka Ime Vrsta Opis
      USART_BaudRate u32 Hitrost prenosa podatkov UART
      USART_WordLength u16 Dolžina komunikacijske besede UART: 7, 8 ali 9 bitov
      USART_StopBits u16 Dolžina zaustavitvenega bita komunikacije UART: 1 ali 2 bita
      USART_Parity u16 Pariteta komunikacije UART: sodo, liho, oznaka, presledek ali brez paritete
      USART_Mode u16 komunikacijski način UART; API-ji podpirajo samo običajni način
  2. Pred uporabo funkcij API dokončajte osnovno konfiguracijo UART v glavnem programu. Osnovna konfiguracija UART za to aplikacijsko kodo je prikazana na sliki 12. Tukaj je hitrost prenosa 115200 bps, dolžina besede je 8-bitna, dolžina končnega bita je 1-bitna in ni paritete.
    Slika 12. Osnovna konfiguracija UART
    Osnovna konfiguracija
  3. Slika 13 prikazuje funkcije API-ja, deklarirane v uart_module.h file. Naslednje tabele pojasnjujejo funkcijo, vhodne parametre in uporabo funkcij API-ja.
    Slika 13. Deklaracije funkcij API-ja v uart_module.h 
    Deklaracije funkcij API
Ime void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
funkcija Inicializacija modula UART
  Vnos CH kanal UART
pUART_Init Kazalec strukture osnovne konfiguracije UART
 uRxTimeOutValue Vrednost časovne omejitve UART RX FIFO. Ko RX FIFO prejme nove podatke, se bo števec ponastavil in znova zagnal. Ko števec doseže prednastavljeno vrednost časovne omejitve in je ustrezna prekinitev časovne omejitve omogočena, se ustvari prekinitev časovne omejitve.
 Uporaba UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Izvedi osnovno konfiguracijo UART//Glejte sliko 12 za konfiguracijo USART_InitStructure
Ime u32 UARTM_WriteByte(u32 CH, u8 uData)
funkcija Operacija pisanja bajtov modula UART (TX)
Vnos CH kanal UART
uData Podatki, ki jih je treba zapisati
Izhod USPEH Uspešno
NAPAKA Ni uspelo
Uporaba UARTM_WriteByte(UARTM_CH0, 'A'); //UART zapiše 1 bajt – 'A'
Ime u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
funkcija Pisanje modula UART (TX)
 Vnos CH kanal UART
pBuffer Kazalec medpomnilnika
uLength Dolžina podatkov, ki jih je treba zapisati
Izhod USPEH Uspešno
NAPAKA Ni uspelo
 Uporaba u8 Test[] = “To je test!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART zapiše podatke pBuffer
Ime u32 UARTM_ReadByte(u32 CH, u8 *pData)
funkcija Operacija branja bajtov modula UART (RX)
Vnos CH kanal UART
pData Naslov za namestitev prebranih podatkov
Izhod USPEH Uspešno
NAPAKA Neuspešno (ni podatkov)
   Uporaba u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == USPEH){UARTM_WriteByte(UARTM_CH0, TempData);}//Če UARTM_ReadByte() vrne USPEH, potem UART zapiše ta podatkovni bajt
Ime u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
funkcija Operacija branja modula UART (RX)
 Vnos CH kanal UART
pBuffer Kazalec medpomnilnika
uLength Dolžina podatkov za branje
Izhod Število branja Dolžina podatkov je bila prebrana
     Uporaba u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() prebere 5 bajtov podatkov in jih shrani v Test2 ter dodeli število prebranih bajtov v Len // Zapišite podatke iz Test2
Ime u32 UARTM_GetReadBufferLength(u32 CH)
funkcija Pridobite dolžino medpomnilnika za branje (RX)
Vnos CH kanal UART
Izhod uLength Preberi dolžino medpomnilnika
  Uporaba UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicializacija modula UART while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Počakajte, da UARTM_ReadBuffer prejme 5 bajtov podatkov
Ime u32 UARTM_GetWriteBufferLength(u32 CH)
funkcija Pridobite dolžino zapisovalnega medpomnilnika (TX)
Vnos CH kanal UART
Izhod uLength Zapišite dolžino medpomnilnika
Ime u8 UARTM_IsTxFinished(u32 CH)
funkcija Pridobite status TX
Vnos CH kanal UART
Izhod RES Stanje pošiljanja: končano
LAŽNO Stanje pošiljanja: ni končano
      Uporaba UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Ta API se lahko uporablja za preverjanje statusa TX, kot je prikazano zgoraj; počakajte, da se API UARTM_WriteByte() konča, tj. stanje TX je TRUE, in nato nadaljujte z naslednjimi dejanji.//Omejitev je dodana, ker ta funkcija ni bila dodana, dokler številka različice SVN v uart_module.c ni 525.
Ime praznina UARTM_DiscardReadBuffer(u32 CH)
funkcija Zavrzite podatke v medpomnilniku za branje
Vnos CH kanal UART

Uporaba API-ja, npramples 

Ta razdelek bo prikazal pisanje in branje API-ja, nprampaplikacijske kode »Module_UART« z uporabo postopka inicializacije in »UART_Module_Example” proces aplikacijske kode. Pred uporabo API-jev morajo uporabniki vključiti glavo API-ja file v glavno izvorno kodo programa file (#include “middleware/uart_module.h”).

Kot je prikazano na sliki 14, pri vstopu v postopek inicializacije najprej definirajte osnovno konfiguracijsko strukturo UART. Nato konfigurirajte člane osnovne konfiguracijske strukture UART, vključno s hitrostjo prenosa podatkov, dolžino besede, stop-biti, parnostjo in načinom. Nazadnje pokličite funkcijo inicializacije API-ja, katere zaključek pomeni konec postopka inicializacije. Po tem lahko uporabniki nadaljujejo operacije pisanja in branja na podlagi prednastavljene osnovne konfiguracije UART.

Slika 14. Diagram poteka inicializacije
Diagram poteka inicializacije

»UART_Module_Example” aplikacijska koda prikazuje operacije branja in pisanja API-ja na način povratne zanke. Diagram poteka za to je prikazan na sliki 15. Uporabljene funkcije API-ja vključujejo UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() in UARTM_GetReadBufferLength(). Njihov opis je na voljo v razdelku »Opis API-ja«.

Slika 15. Diagram poteka pisanja in branja Examples
Diagram poteka pisanja in branja Examples

Obstaja še ena aplikacijska koda »UART_Bridge« v mapi »Module_UART«, katere povezana file opis je predstavljen v razdelku »Struktura imenika«. Koda aplikacije »UART_Bridge« aktivira dva kanala UART, UART CH0 in UART CH1, nato pa prilagodi komunikacijski protokol med obema napravama UART prek struktur COMMAND, gCMD1 in gCMD2. Ti so definirani v uart_bridge.c, kot je prikazano spodaj. UARTBridge_CMD1TypeDef gCMD1:

Spremenljivka Ime Vrsta Opis
uHeader u8 Glava
uCmd u8 Ukaz
uData[3] u8 podatki

UARTBridge_CMD2TypeDef gCMD2:

Spremenljivka Ime Vrsta Opis
uHeader u8 Glava
uCmdA u8 Ukaz A
uCmdB u8 Ukaz B
uData[3] u8 podatki

V kodi aplikacije »UART_Bridge« uporabite gCMD1 za sprejem podatkov kot ukazni paket in jih nato analizirajte. Nato v skladu s prilagojenim komunikacijskim protokolom nastavite gCMD2 kot odzivni paket in ga pošljite. Sledi bivšiampukaznega paketa gCMD1) in odzivnega paketa (gCMD2). Paket ukazov (UARTBridge_CMD1TypeDef gCMD1):

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

Odzivni paket (UARTBridge_CMD2TypeDef gCMD2):

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

Poklic vira
Če vzamem HT32F52352 kot primerample, viri, ki jih zaseda modul UART, so prikazani spodaj.

HT32F52352
Velikost ROM-a 946 bajtov
Velikost RAM-a 40*1 + 256*2 Bajti

Opomba:

  1. Globalne spremenljivke, vključno z zastavicami in statusom za posamezen kanal, zasedajo 40 bajtov RAM-a.
  2.  To velja za stanje, ko se uporablja en sam kanal in je velikost medpomnilnika TX/RX 128/128 bajtov. Velikost medpomnilnika je mogoče nastaviti glede na zahteve aplikacije.

Tabela 4. Zasedba vira kode aplikacije 

  • Kompilacijsko okolje: MDK-Arm V5.36, ARMCC V5.06 posodobitev 7 (graditev 960)
  • Možnost optimizacije: Raven 2 (-O2)

Navodila za uporabo

To poglavje bo predstavilo pripravo okolja za aplikacijsko kodo »Module_UART« ter korake prevajanja in testiranja.

Priprava okolja
Strojna in programska oprema, potrebna za aplikacijsko kodo »Module_UART«, sta navedeni spodaj.
Tabela 5. Priprava okolja strojne/programske opreme 

Strojna/programska oprema štetje Opomba
Začetni komplet 1 Ta opomba o aplikaciji uporablja začetni komplet HT32F52352 kot primerample
USB kabel 1 Micro USB, priključen na PC
Koda aplikacije Pot prenosa, file in konfiguracija imenika sta predstavljena v razdelku »Prenos in priprava virov«. Pot: »\\application\Module_UART\UART_Module_Example "
Tera Term Glejte razdelek »Terminalna programska oprema«.
Keil IDE Keil uVision V5.xx

Najprej uporabite začetni komplet HT32F52352 v kombinaciji s funkcijo Virtual COM Port (VCP) e-Link32 Lite za uvedbo aplikacije UART. To zahteva izvedbo naslednjih okoljskih priprav:

  1. Na plošči sta dva USB vmesnika. S kablom USB povežite računalnik in vmesnik eLink32 Lite na plošči, kot je prikazano na sliki 16-(a).
  2. Ker mora koda aplikacije uporabljati funkcijo e-Link32 Lite Virtual COM Port (VCP), zagotovite, da sta bila PAx*2 in DAP_Tx UART Jumper-J2*1 kratkostično povezana z mostičkom. Lokacija J2 je prikazana na sliki 16-(b).

Opomba

  1. J2 v kompletu Starter Kit ima dve možnosti, kratko sklenjena PAx in DAP_Tx ali kratko sklenjena PAx in RS232_Tx. Za podrobne nastavitve funkcij glejte uporabniški priročnik za začetni komplet.
  2. Lokacija pinov MCU UART RX na različnih začetnih kompletih je drugačna. Ta bivšiample uporablja PAx za označevanje zatiča RX.

Slika 16. Blokovni diagram začetnega kompleta HT32
Blokovni diagram kompleta

Zdaj uporabite uporabniško ciljno ploščo v kombinaciji s funkcijo Virtual COM Port (VCP) e-Link32 Pro za uvedbo aplikacije UART. To zahteva izvedbo naslednjih okoljskih priprav:

  1. Ena stran e-Link32 Pro je povezana z osebnim računalnikom s kablom Mini USB, druga stran pa je povezana z uporabniško ciljno ploščo prek njenega 10-bitnega sivega kabla. Povezava med vmesnikoma SWD kabla in ciljne plošče je izvedena z uporabo Dupontovih linij, kot je prikazano na sliki 17-(a).
  2. Zatiči za serijsko komunikacijo e-Link32 Pro so Pin#7 VCOM_RXD in Pin#8-VCOM_TXD. Te je treba povezati z zatiči TX in RX uporabniške ciljne plošče, kot je prikazano na sliki 17-(b).
    Slika 17. Blokovni diagram ciljne plošče e-Link32 Pro + uporabnik
    Uporabniška ciljna tabla

Kompilacija in preizkus
Ta razdelek bo zajemal »application\Module_UART\UART_Module_Example« kot bivšiample za uvedbo postopkov prevajanja in testiranja. Pred tem se prepričajte, da so bile izvedene vse priprave, opisane v prejšnjem razdelku, in da je bila prenesena terminalska programska oprema Tera Term.

Spodaj so povzeti podrobni koraki delovanja.
Korak 1. Preizkus ob vklopu

Nastavite okolje strojne opreme, kot je opisano v prejšnjem razdelku. Po vklopu bo zasvetila lučka za napajanje D9 na spodnji levi strani začetnega kompleta. Lučka LED D1 USB na napravi e-Link32 Lite zgoraj desno bo zasvetila, ko bo oštevilčenje USB končano. Če D1 po daljšem času ne sveti, preverite, ali kabel USB lahko komunicira. Če ne, ga odstranite in znova vstavite.

Korak 2. Ustvarite projekt
Odprite aplikacijo\Module_UART\UART_Module_Exampmapo kliknite _CreateProject.bat file za ustvarjanje projekta, kot je prikazano na sliki 18. Ker ta opomba o aplikaciji uporablja začetni komplet HT32F52352, odprite projekt Keil IDE »Project_52352.uvprojx«, ki se nahaja v mapi MDK_ARMv5.

Slika 18. Izvedite _CreateProject.bat za ustvarjanje projekta
Ustvari projekt

Korak 3. Prevedite in programirajte
Ko odprete projekt, najprej kliknite »Build« (ali uporabite bližnjico »F7«), nato kliknite »Download« (ali uporabite bližnjico »F8«). Po tem bodo rezultati gradnje in prenosa prikazani v oknu Build Output. Glej sliko 19.

Slika 19. Rezultati gradnje in prenosa
Zgradite in prenesite rezultate

4. korak. Odprite programsko opremo Tera Term in konfigurirajte serijska vrata
Odprite programsko opremo Tera Term in vrata COM. Bodite pozorni na to, ali je številka vrat COM, ki jo ustvari začetni komplet, pravilna ali ne. Nato kliknite »Nastavitev >> Serijska vrata« za vstop v konfiguracijski vmesnik. Konfiguracija vmesnika UART aplikacijske kode »Module_UART« je opisana v razdelku »Terminalna programska oprema«. Rezultat nastavitve je prikazan na sliki 20.

Slika 20. Rezultat nastavitve serijskih vrat Tera Term
Rezultat nastavitve
Korak 5. Ponastavite sistem in preizkusite
Pritisnite tipko za ponastavitev SK – B1 Reset. Po tem se prikaže "ABCThis is test!" sporočilo bo
prenesene prek API-ja in bodo prikazane v oknu Tera Term, kot je prikazano na sliki 21. Kar zadeva funkcijo prejemanja, bo pri vnašanju podatkov v okno Tera Term za določitev dolžine medpomnilnika za sprejem uporabljen ustrezni API. Ko podatki, ki jih prejme osebni računalnik, dosežejo 5 bajtov, bo prejetih 5 bajtov podatkov poslanih zaporedno. Kot je prikazano na sliki 22, so zaporedno vneseni podatki »1, 2, 3, 4, 5«, ki so prejeti in določeni prek API-ja. Po tem se bodo podatki "1, 2, 3, 4, 5" natisnili po petih vnosih.

Slika 21. Funkcionalni preizkus kode aplikacije »Module_UART« – prenos
Funkcionalni preizkus kode aplikacije

Slika 22. Funkcionalni preizkus kode aplikacije »Module_UART« – sprejem
Funkcionalni preizkus kode aplikacije

Navodila za presaditev
Ta razdelek bo predstavil, kako integrirati API-je v uporabnikove projekte.
1. korak Dodajte uart_module.c file v projekt. Z desno miškino tipko kliknite mapo Uporabnik. Izberite »Dodaj obstoječe Files v skupino 'Uporabnik'…”, nato izberite uart_module.c file in kliknite »Dodaj«, kot je prikazano na sliki 23. Glejte razdelek »Struktura imenika« za file opis poti.

Slika 23. Dodajte uart_module.c File za projekt
File za projekt

2. korak. Dodajte ring_buffer.c file v projekt. Z desno miškino tipko kliknite mapo Uporabnik. Izberite »Dodaj obstoječe Files v skupino 'Uporabnik'…”, nato izberite ring_buffer.c file in kliknite »Dodaj«, kot je prikazano na sliki 24.\ Glejte razdelek »Struktura imenika« za file opis poti.
Slika 24. Dodajte ring_buffer.c File za projekt 
File za projekt

3. korak. Vključite glavo API file v začetek main.c, kot je prikazano na sliki 25. (Ext: #include “middleware/uart_module.h”)
Slika 25. Vključi glavo API-ja File na glavno.c
Vključi glavo API File

4. korak. Izvedite nastavitve, potrebne za komunikacijo UART, z uporabo ht32_board_config.h file. To je podrobno predstavljeno v razdelkih »Opis nastavitve« in »Spremembe nastavitve in pogosta vprašanja«.

Spreminjanje nastavitev in pogosta vprašanja 

Ta razdelek bo predstavil, kako spremeniti nastavitve UART, in razložil nekaj pogostih vprašanj, na katera naletite med uporabo.

Spremenite dodelitev pinov UART 

  1. Glede na poglavje »Dodelitev nožic« v podatkovnem listu HT32F52352 poiščite tabelo preslikave nadomestnih funkcij, ki navaja funkcije AFIO za vrsto naprave. Za ustrezne nožice UART glejte stolpec »AF6 USART/UART«, kot je prikazano na sliki 26.
    Slika 26. Tabela preslikav nadomestnih funkcij HT32F52352
    Tabela preslikav nadomestnih funkcij
  2. Ta korak bo vodil uporabnike, da poiščejo ustrezne nožice UART z uporabo zgornje tabele. HT32F52352 example uporablja USART1 kot privzeti kanal. Tu sta zatiča TX in RX USR1_TX in USR1_RX in se nahajata na PA4 oziroma PA5. Slika 27 prikazuje korespondenco pinov kot tudi definicije pinov v »ht32_board_config.h«. Prazna polja za »Paket« v tabeli za dodelitev pinov pomenijo, da v tem paketu ni ustreznih GPIO. Če želite spremeniti zatiče UART, poiščite ciljne lokacije zatičev in znova definirajte zatiče s pomočjo »ht32_board_config.h« file.
    Slika 27. Ustreznost pinov in sprememba nastavitev
    Sprememba nastavitve

Dodajte kanal UART
Kot primer vzamemo HT32F52352 HTCFG_UARTM_CH1ample, tukaj je opisano, kako dodati nov kanal UART.

Spremenite ht32_board_config.h file
Glede na poglavje »Dodelitev nožic« podatkovnega lista HT32F52352 poiščite tabelo preslikave nadomestnih funkcij, ki navaja funkcije AFIO za vrsto naprave. Ker je bil USART1 uporabljen kot HTCFG_UARTM_CH0, lahko na novo dodan HTCFG_UARTM_CH1 izbere USART0. Tu sta zatiča TX in RX nameščena na PA2 oziroma PA3, kot je prikazano v zgornji polovici slike 28. Ustrezne spremembe so izvedene z uporabo kodnih vrstic 120~126 v ht32_board_config.h, kot je prikazano z rdečim pikčastim poljem na sliki 28.

Slika 28. Dodajte kanal UART
kanal UART

pogosta vprašanja
Q: V 5. koraku razdelka Prevajanje in preizkus je funkcionalni preizkus prenosa normalen. Tukaj je "ABCThis is test!" sporočilo je bilo uspešno prikazano, vendar za funkcijo sprejema, zakaj pet vhodnih vrednosti ni vrnjenih in prikazanih?
A: Preverite, ali sta bila zatiča MCU UART RX in DAP_Tx mostička UART-J2 v kratkem stiku z mostičkom. Ker mora koda aplikacije »Module_UART« uporabljati navidezna vrata COM (VCP) e-Link32 Lite, je treba nastavitev kratkega stika uporabiti na levih dveh nožicah UART Jumper-J2, kot je prikazano na sliki 29.

Slika 29. Nastavitev mostička UART-J2
UART mostiček

V: Po izvajanju »Build« (ali bližnjice »F7«) se prikaže sporočilo o napaki, ki nakazuje, da je različica knjižnice vdelane programske opreme starejša od tiste, ki je zahtevana? Glej sliko 30.
A: Izvedba aplikacijske kode »Module_UART« mora vključevati uart_module.c/h files, ki ima zahtevo za določeno različico knjižnice vdelane programske opreme. Ko se prikaže takšno sporočilo o napaki, to pomeni, da je trenutno uporabljena knjižnica vdelane programske opreme starejša različica. Zato morate prenesti najnovejšo različico prek povezave v razdelku »Knjižnica vdelane programske opreme«.

Slika 30. Sporočilo o napaki različice knjižnice vdelane programske opreme
Sporočilo o napaki različice

Zaključek

Ta dokument ponuja osnovni uvod v pomoč uporabnikom pri boljšem razumevanju kode aplikacije »Module_UART« in komunikacijskega protokola UART. Sledil je prenos in priprava vira. Poglavje o funkcionalnem opisu je predstavilo file struktura imenika, arhitektura API-ja, opis API-ja in uporaba API-ja, npramples. V poglavju Navodila za uporabo je prikazana okoljska priprava, sestavljanje in testiranje kode aplikacije »Module_UART«. Zagotovil je tudi navodila za presaditev in nastavitev spreminjanja kode ter pojasnil nekatere pogoste težave, na katere lahko naletite. Vse to skupaj bo uporabnikom omogočilo, da hitro razumejo, kako uporabljati API-je, in posledično skrajša čas za začetek.

Referenčni material

Za več informacij glejte Holtek webspletno mesto: www.holtek.com

Različice in informacije o spremembah

Datum Avtor Sprostitev Informacije o spremembah
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Prva različica

Zavrnitev odgovornosti

Vse informacije, blagovne znamke, logotipi, grafike, videi, zvočni posnetki, povezave in drugi elementi, ki se pojavljajo na tem webspletno mesto ('Informacije') so samo za referenco in se lahko kadar koli spremenijo brez predhodnega obvestila in po presoji družbe Holtek Semiconductor Inc. in njenih povezanih družb (v nadaljevanju 'Holtek', 'podjetje', 'nas', ' mi« ali »naš«). Medtem ko si Holtek prizadeva zagotoviti točnost informacij o tem webstrani, Holtek ne daje nobenega izrecnega ali implicitnega jamstva za točnost informacij. Holtek ne prevzema nobene odgovornosti za kakršno koli nepravilnost ali puščanje.
Holtek ni odgovoren za nobeno škodo (vključno, vendar ne omejeno na računalniške viruse, sistemske težave ali izgubo podatkov), ki bi nastala pri uporabi ali v povezavi z uporabo tega webkatero koli stran. Na tem področju so lahko povezave, ki vam omogočajo obisk webstrani drugih podjetij.
te webstrani niso pod nadzorom Holteka. Holtek ne prevzema nikakršne odgovornosti in jamstva za kakršne koli informacije, prikazane na takšnih straneh. Hiperpovezave do drugih webspletna mesta so na lastno odgovornost.

Omejitev odgovornosti

Holtek Limited v nobenem primeru ne bo odgovoren nobeni drugi stranki za kakršno koli izgubo ali škodo, ki je nastala neposredno ali posredno v povezavi z vašim dostopom ali uporabo tega webspletnega mesta, vsebine na njem ali katerega koli blaga, materiala ali storitev.

Veljavno pravo
Izjava o omejitvi odgovornosti, vsebovana v webspletno mesto ureja in razlaga v skladu z zakoni Republike Kitajske. Uporabniki se bodo podredili neizključni pristojnosti sodišč Republike Kitajske.

Posodobitev izjave o omejitvi odgovornosti
Holtek si pridržuje pravico, da kadar koli posodobi Izjavo o zavrnitvi odgovornosti s predhodnim obvestilom ali brez njega, vse spremembe začnejo veljati takoj po objavi na webmesto.

Dokumenti / Viri

Opomba o aplikaciji HOLTEK HT32 MCU UART [pdfUporabniški priročnik
HT32 MCU, Opomba o aplikaciji UART, Opomba o aplikaciji HT32 MCU UART, Opomba o aplikaciji, HT32, Opomba o aplikaciji MCU UART, Opomba o aplikaciji HT32 MCU UART

Reference

Pustite komentar

Vaš elektronski naslov ne bo objavljen. Obvezna polja so označena *