HOLTEK HT32 MCU UART taikymo pastaba Vartotojo vadovas
HOLTEK HT32 MCU UART taikymo pastaba

Įvadas

Universalus asinchroninis imtuvas/siųstuvas – UART yra plačiai naudojama nuosekliojo perdavimo sąsaja, užtikrinanti lankstų asinchroninį pilnai dvipusį duomenų perdavimą. Programos kodas „Module_UART“, pateiktas šioje programos pastaboje, naudoja TX/RX pertraukimus su programinės įrangos žiediniais buferiais, kad įgyvendintų paprastas UART siuntimo / priėmimo funkcijas per API, kurių susijusios funkcijos aprašytos toliau. Tai supaprastins visą duomenų perdavimo procesą ir leis vartotojams greitai suprasti ir įdiegti UART ryšio programas.

  • Perdavimo/gavimo funkcijos: baitų skaitymas, baitų rašymas, buferio skaitymas, buferio rašymas ir kt.
  • Būsenos funkcijos: gauti buferio ilgį, TX būseną ir kt.

Šiame dokumente pirmiausia bus pristatytas UART ryšio protokolas, kuris padės vartotojams geriau suprasti UART ryšį nuo principo iki taikymo. Po to atsisiunčiami ir paruošiami programos kodui reikalingi ištekliai, įskaitant programinės įrangos biblioteką, programos kodo atsisiuntimą, file ir katalogo konfigūraciją, taip pat įvadą į terminalo programinės įrangos įrankį, naudojamą programos pastaboje. Funkcinio aprašymo skyriuje bus pristatyta programos kodo katalogo struktūra, parametrų nustatymai ir API aprašymas. API naudojimas bus aprašytas naudojant „Module_UART“ programos kodą, taip pat bus nurodytas API reikalingų „Flash“ / RAM išteklių suvartojimas. Naudojimo instrukcijų skyriuje vartotojas bus nurodytas aplinkos paruošimo, kompiliavimo ir bandymo etapais, siekiant patvirtinti, kad programos kodas veiks tinkamai. Tada bus pateiktos instrukcijos, paaiškinančios, kaip integruoti API į vartotojo projektus, ir galiausiai pateikiama nuoroda apie pakeitimus ir įprastas problemas, su kuriomis gali kilti.

Naudojamos santrumpos: 

  • UART: Universalus asinchroninis imtuvas/siųstuvas
  • API: Programų programavimo sąsaja
  • LSB: Mažiausiai reikšmingas bitas
  • MSB: Svarbiausias bitas
  • Kompiuteris: Asmeninis kompiuteris
  • SK: Pradinis rinkinys, HT32 kūrimo plokštė
  • IDE: Integruota plėtros aplinka

UART ryšio protokolas

UART yra nuoseklaus ryšio tipo sąsaja, kuri savo siųstuve įgyvendina lygiagretų į nuoseklųjį duomenų konvertavimą ir nuosekliai bendrauja su panašiu imtuvu. Tada imtuvas po duomenų priėmimo atlieka duomenų konvertavimą iš nuoseklaus į lygiagretųjį. 1 paveiksle parodyta nuoseklaus ryšio schema, rodanti, kaip duomenys perduodami bitų tvarka. Todėl dvikrypčiui ryšiui tarp siųstuvo ir imtuvo reikalingi tik du laidai, TX ir RX, kad duomenys būtų nuosekliai perduodami vienas kitam. TX yra kaištis, ant kurio UART perduoda serijinius duomenis ir yra prijungtas prie imtuvo RX kaiščio. Todėl siųstuvo ir imtuvo įrenginiai turi sujungti savo TX ir RX kaiščius, kad veiktų UART dvipusis ryšys, kaip parodyta Paveikslas 2.

1 pav. Serijinio ryšio diagrama
Serijinio ryšio diagrama

2 pav. UART grandinės schema
UART grandinės schema

UART nuosekliojo ryšio metu duomenų perdavimas yra asinchroninis. Tai reiškia, kad tarp siųstuvo ir imtuvo nėra laikrodžio ar kito sinchronizavimo signalo. Čia naudojama duomenų perdavimo sparta, kuri yra nuoseklusis duomenų perdavimo / priėmimo greitis ir kurį nustato abi pusės prieš perduodant duomenis. Be to, specialūs bitai, tokie kaip pradžios ir pabaigos bitai, pridedami prie duomenų paketo pradžios ir pabaigos, kad sudarytų visą UART duomenų paketą. 3 paveiksle parodyta UART duomenų paketo struktūra, o 4 paveiksle – UART 8 bitų duomenų paketas be pariteto bito.
3 pav. UART duomenų paketo struktūra
UART duomenų paketo struktūra

4 pav. UART 8 bitų duomenų paketo formatas
Duomenų paketo formatas
Kiekviena UART duomenų paketo dalis pateikiama toliau eilės tvarka.

  • Pradinis bitas: Tai rodo duomenų paketo pradžią. Prieš pradedant siuntimą, UART TX kaištis paprastai išlieka aukštame loginiame lygyje. Jei duomenų perdavimas prasidės, UART siųstuvas ištrauks TX kaištį nuo didelio iki žemo, ty nuo 1 iki 0, ir palaikys jį ten vieną laikrodžio ciklą. UART imtuvas pradės skaityti duomenis, kai RX kaištyje bus aptiktas perėjimas nuo didelio iki žemo.
  • Duomenys: Tai yra faktiniai perduoti duomenys, kurių duomenų ilgis yra 7, 8 arba 9 bitai. Duomenys paprastai perduodami pirmiausia su LSB.
  • Pariteto bitas: Duomenų loginis skaičius „1“ naudojamas norint nustatyti, ar perdavimo metu pasikeitė kokie nors duomenys. Lyginiam paritetui bendras loginių duomenų „1“ skaičius turi būti lyginis, atvirkščiai, bendras loginių „1“ duomenų skaičius turi būti nelyginis nelyginio pariteto atveju.
  • Stabdymo bitas: Tai rodo duomenų paketo pabaigą, kai UART siųstuvas ištrauks TX kaištį nuo žemo iki didelio, ty nuo 0 iki 1, ir palaikys jį ten 1 arba 2 bitų laikotarpį.

Kaip minėta anksčiau, kadangi UART grandinėje nėra laikrodžio signalo, tarp siųstuvo ir imtuvo turi būti nustatytas tas pats nuoseklusis duomenų perdavimo / gavimo greitis, kuris yra žinomas kaip duomenų perdavimo sparta, kad būtų užtikrintas perdavimas be klaidų. Bodų sparta apibrėžiama per sekundę perduodamų bitų skaičiumi bps (bitai per sekundę). Kai kurie standartiniai ir dažniausiai naudojami duomenų perdavimo sparta yra 4800bps, 9600bps, 19200bps, 115200bps ir tt Atitinkamas laikas, reikalingas vienam duomenų bitui perduoti, parodytas žemiau.
1 lentelė. Srovės sparta ir 1 bito perdavimo laikas 

Perdavimo greitis 1 bito perdavimas Laikas
4800 bps 208.33 µs
9600 bps 104.16 µs
19200 bps 52.08 µs
115200 bps 8.68 µs

Išteklių atsisiuntimas ir paruošimas

Šiame skyriuje bus pristatytas programos kodas ir naudojamas programinės įrangos įrankis, taip pat kaip sukonfigūruoti katalogą ir file kelias.

Programinės įrangos biblioteka 

Pirmiausia įsitikinkite, kad Holtek HT32 programinės įrangos biblioteka buvo atsisiųsta prieš naudodami programos kodą. Atsisiuntimo nuoroda parodyta žemiau. Čia yra dvi parinktys: HT32_M0p_Vyyyymmdd.zip serijai HT32F5xxxx ir HT32_M3_Vyyyymmdd.zip serijai HT32F1xxxx. Atsisiųskite ir išpakuokite norimą file.

Užtrauktukas file yra keli aplankai, kurie gali būti klasifikuojami kaip dokumentas, programinės aparatinės įrangos biblioteka, įrankiai ir kiti elementai, kurių išdėstymo kelias parodytas 5 pav. HT32 programinės aparatinės įrangos bibliotekos zip. file su a file HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip pavadinimas yra po aplanku Firmware_Library.

5 pav. HT32_M0p_Vyyyymmdd.zip Turinys
Turinys

Programos kodas
Atsisiųskite programos kodą iš šios nuorodos. Programos kodas yra supakuotas į ZIP file su a file HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip pavadinimas. Matyti 6 pav už file vardų sutartys.

6 pav. Programos kodas File Pavadinimas Įvadas 

Atsisiuntimo nuoroda: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Programos kodas

File ir katalogo konfigūracija
Kadangi programos kode nėra HT32 programinės įrangos bibliotekos files, programos kodas ir programinės įrangos biblioteka išpakuota files turėtų būti įdėtas į teisingą kelią prieš pradedant kompiliavimą. Programos kodas zip file paprastai yra vienas ar daugiau aplankų, tokių kaip programa ir biblioteka, kaip parodyta 7 paveiksle. Įdėkite programos aplanką po HT32 programinės įrangos bibliotekos šakniniu katalogu, kad užbaigtumėte file kelio konfigūracija, kaip parodyta 8 paveiksle. Arba vienu metu išpakuokite programos kodą ir HT32 programinės įrangos biblioteką į tą patį kelią, kad pasiektumėte tuos pačius konfigūracijos rezultatus.

7 pav. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Turinys
Turinys

8 pav. Dekompresijos kelias
Dekompresijos kelias

Terminalo programinė įranga
Programos kodas gali perduoti pranešimus per COM prievadą, kad būtų galima pasirinkti funkciją arba rodyti būseną. Tam reikia, kad pagrindinio kompiuterio terminalo programinė įranga būtų įdiegta iš anksto. Vartotojai gali pasirinkti tinkamą ryšio programinę įrangą arba naudoti nemokamą licencijuotą programinę įrangą, tokią kaip „Tera Term“. Programos kode UART kanalas sukonfigūruotas su 8 bitų žodžio ilgiu, be pariteto, 1 stop bitu ir 115200 XNUMX bps sparta.

Funkcinis aprašymas

Šiame skyriuje bus pateiktas programos kodo funkcinis aprašymas, įskaitant informaciją apie katalogo struktūrą, API architektūrą, nustatymų aprašą ir kt

Katalogo struktūra
Programos kodas file yra programų aplankas. Kitas sluoksnis yra aplankas „Module_UART“, kuriame yra dvi taikomosios programos „UART_Module_Ex“ample“ ir „UART_Bridge“. Atitinkamas files yra išvardyti ir aprašyti toliau.
2 lentelė. Programos kodo katalogo struktūra

Aplankas / File Vardas Aprašymas
\\programa\Module_UART\UART_Module_Example*1
_CreateProject.bat Paketiniai scenarijai projekto kūrimui files
_ProjectSource.ini Inicializavimas file Norėdami pridėti šaltinio kodą prie projektų
ht32_board_config.h Sąranka file susiję su IC periferinių įvesties/išvesties įrenginių priskyrimu
ht32fxxxxx_01_it.c Nutraukti paslaugų programą file
pagrindinis.c Pagrindinis programos šaltinio kodas
\\programa\Module_UART\UART_Bridge*2
_CreateProject.bat Paketiniai scenarijai projekto kūrimui files
_ProjectSource.ini Inicializavimas file Norėdami pridėti šaltinio kodą prie projektų
ht32_board_config.h Sąranka file susiję su IC periferinių įvesties/išvesties įrenginių priskyrimu
ht32fxxxxx_01_it.c Nutraukti paslaugų programą file
pagrindinis.c Pagrindinės programos šaltinio kodas
uart_bridge.h uart_bridge.c UART tilto antraštė file ir šaltinio kodas file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 API antraštė file ir šaltinio kodas file
\\utilities\bendras
ringbuffer.h ring_buffer.c Programinės įrangos žiedo buferio antraštė file ir šaltinio kodas file

Pastaba: 

  1. „UART_Module_Example“ programos kodą, API skaitymo ir rašymo operacijos atliekamos atgalinio ciklo būdu, žr. „API naudojimo Examples“ skyriuje, kur rasite daugiau informacijos.
  2.  „UART_Bridge“ programos kode suaktyvinami du UART kanalai – UART CH0 ir UART CH1, o tarp dviejų UART įrenginių įdiegiamas pasirinktinis ryšio protokolas per COMMAND struktūras. Norėdami gauti daugiau informacijos, žr. „API naudojimo Examples“ skyrių.
  3. Programos kode turi būti naudojamas uart_module.c/h files, kuriems reikalingas programinės aparatinės įrangos bibliotekos versijos reikalavimas. Reikalavimas laikas nuo laiko gali keistis atsižvelgiant į atnaujinimą. Norėdami patvirtinti esamą programinės aparatinės įrangos bibliotekos versijos reikalavimą, žr. priklausomybės tikrinimo turinį, ieškodami raktinio žodžio „Priklausomybės patikrinimas“ pagrindiniame.c. file. Jei programinės aparatinės įrangos bibliotekos versija neatitinka reikalavimų, atsisiųskite naujausią versiją iš nuorodos, pateiktos skyriuje „Firmware Library“.

API architektūra
Kiekviena API turi svarbų parametrą CH, kuris yra UART kanalas. Tai nustato, kuris UART kanalas turi būti valdomas. Šiuo metu palaikoma iki keturių UART kanalų, todėl keturi pastovūs simboliai apibrėžiami taip. Jie naudojami kaip CH parametras, suteikiantis API valdymo pagrindą.

  • UARTM_CH0: įvesties parametras – valdyti arba konfigūruoti UART CH0
  • UARTM_CH1: įvesties parametras – valdyti arba konfigūruoti UART CH1
  • UARTM_CH2: įvesties parametras – valdyti arba konfigūruoti UART CH2
  • UARTM_CH3: įvesties parametras – valdyti arba konfigūruoti UART CH3

Atminties vieta nebus švaistoma, jei bus naudojamas tik vienas UART kanalas. Taip yra todėl, kad galima nustatyti palaikomų UART kanalų skaičių, o nepanaudotą UART kanalo kodą pašalins išankstinis procesorius, kad padidintų laisvą atminties vietą. API architektūra parodyta 9 pav.

9 pav. API architektūros blokų diagrama
Architektūros blokinė diagrama

Kiekviena API sudaryta iš keturių su UART kanalu susijusių nustatymų arba valdiklių grupių, todėl vartotojams tereikia įvesti norimą CH parametrą. Norint konfigūruoti atitinkamą API, tereikia turėti papildomą UART pagrindinių konfigūracijos parametrų lentelę su struktūros forma USART_InitTypeDef. API įdiegs pagrindinę UART konfigūraciją pagal parametrų turinį lentelėje. UART pagrindinės konfigūracijos struktūros lentelę rasite skyriuje „API aprašymas“.

uart_module.c/.h files yra tik kiekvieno UART kanalo pertraukimas (CHx_IRQ) ​​ir būsenos lentelė (CHx statusas), o visus UART ryšiui reikalingus nustatymus pateikia ht32_board_config.h. Aparatūrai svarbūs parametrai ht32_board_config.h file rodomi toliau esančioje lentelėje. Daugiau informacijos rasite skiltyje „Nustatymų aprašymas“.

Aparatūrai svarbūs parametrai ht32_board_config.h apima įvesties / išvesties nustatymus ir fizinio UART prievado nustatymus, kaip nurodyta toliau.

3 lentelė. Apibrėžtis Simboliai ht32_board_config.h

Simbolis Aprašymas
HTCFG_UARTM_CH0 Fizinis UART prievado pavadinimas; Pvzample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Nurodo CH0 TX prievado pavadinimą; Pvzample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Nurodo CH0 TX PIN kodą; Pvzample: 0 ~ 15
HTCFG_UARTM0_RX_GPIO_PORT Nurodo CH0 RX prievado pavadinimą; Pvzample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Nurodo CH0 TX PIN kodą; Pvzample: 0 ~ 15
HTCFG_UARTM0_TX_BUFFER_SIZE Apibrėžia CH0 TX buferio dydį; Pvzampnr .: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Apibrėžia CH0 RX buferio dydį; Pvzampnr .: 128

Norėdami pakeisti UART kanalo AFIO konfigūraciją, žr. atitinkamo įrenginio duomenų lapą. Šiuo metu galioja tik UART CH0 I/O apibrėžimai, nes ht0_board_config.h sukonfigūruotas tik UART CH32. Norint pridėti UART CH1~3, jų įvesties/išvesties apibrėžimus reikia užpildyti, remiantis UART CH0 apibrėžimu arba skyreliu „Nustatymų keitimas ir DUK“.

Yra trys pagrindinės API architektūros savybės: 

  1. Palaikoma iki keturių UART kanalų. Jų įvesties parametrai yra UARTM_CH0, UARTM_CH1, UARTM_CH2 ir UARTM_CH3.
  2.  Galima nustatyti UART kanalų skaičių ir nenaudojami kanalai nesumažins laisvos atminties vietos.
  3. Visi UART nustatymai ir I/O apibrėžimai yra visiškai atskirti nuo API. Tai padidina nustatymo reikšmių valdymo patogumą ir sumažina neteisingų arba trūkstamų nustatymų galimybę.

Nustatymo aprašymas 

Šiame skyriuje bus pristatyti parametrų nustatymai ht32_board_config.h ir uart_module.h files.

  1. ht32_board_config.h: Tai file naudojamas kaiščių apibrėžimams ir atitinkamiems kūrimo plokštės nustatymams, įskaitant UART IP kanalą (UART0, UART1, USART0…), naudojamą Starter Kit (SK), atitinkamas TX/RX kaiščių vietas ir TX/RX buferio dydį. 10 paveiksle parodytas HT32F52352 pradinio rinkinio nustatymų turinys. Atsižvelgdami į funkcinę kūrimo integraciją, vartotojai gali peržiūrėti naudojamo įrenginio duomenų lapo skyrių „Smeigtuko priskyrimas“, kad įgyvendintų kaiščių apibrėžimus. Daugiau informacijos apie nustatymų keitimą bus aprašyta skyriuje „Nustatymų keitimas ir DUK“.
    10 pav. ht32_board_config.h nustatymai (HT32F52352)
    Nustatymai
  2. uart_module.h: Tai yra API antraštė file naudojamas programos kodas, apimantis atitinkamus numatytuosius nustatymus, funkcijų apibrėžimus ir kt. Kaip parodyta 11 paveiksle, numatytųjų nustatymų turinį gali perrašyti išorinės konfigūracijos, pvz., parametrai ht32_board_config.h. file.
    11 pav. Numatytieji nustatymai uart_module.h
    Numatytieji nustatymai
API aprašymas
  1. Programos kodo duomenų tipo aprašymas.
    • USART_InitTypeDef
      Tai yra pagrindinė UART konfigūracijos struktūra, kurią sudaro BaudRate, WordLength, StopBits, Parity ir Mode konfigūracijos, kaip parodyta toliau.
      Kintamasis Vardas Tipas Aprašymas
      USART_BaudRate u32 UART ryšio perdavimo sparta
      USART_WordLength u16 UART ryšio žodžio ilgis: 7, 8 arba 9 bitai
      USART_StopBits u16 UART ryšio sustabdymo bitų ilgis: 1 arba 2 bitai
      USART_Parity u16 UART ryšio paritetas: lyginis, nelyginis, ženklas, tarpas arba jo nėra
      USART_Mode u16 UART ryšio režimas; API palaiko tik įprastą režimą
  2. Prieš naudodami API funkcijas, pagrindinėje programoje užbaikite pagrindinę UART konfigūraciją. Pagrindinė šio programos kodo UART konfigūracija parodyta 12 paveiksle. Čia perdavimo sparta yra 115200 8 bps, žodžio ilgis yra 1 bitai, sustabdymo bito ilgis yra XNUMX bitas ir nėra pariteto.
    12 pav. UART pagrindinė konfigūracija
    Pagrindinė konfigūracija
  3. 13 paveiksle parodytos API funkcijos, deklaruotos uart_module.h file. Šiose lentelėse paaiškinamos API funkcijų funkcijos, įvesties parametrai ir naudojimas.
    13 pav. API funkcijų deklaracijos uart_module.h 
    API funkcijų deklaracijos
Vardas negalioja UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funkcija UART modulio inicijavimas
  Įvestis CH UART kanalas
pUART_Init UART pagrindinės konfigūracijos struktūros rodyklė
 uRxTimeOutValue UART RX FIFO skirtojo laiko reikšmė. Kai RX FIFO gaus naujus duomenis, skaitiklis bus nustatytas iš naujo ir paleistas iš naujo. Skaitikliui pasiekus iš anksto nustatytą skirtojo laiko reikšmę ir įjungus atitinkamą skirtojo laiko pertraukimą, bus sugeneruotas laiko pertraukimas.
 Naudojimas UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Vykdyti pagrindinę UART konfigūraciją//Žiūrėkite 12 pav., norėdami sužinoti USART_InitStructure konfigūraciją
Vardas u32 UARTM_WriteByte (u32 CH, u8 uData)
Funkcija UART modulio rašymo baitų operacija (TX)
Įvestis CH UART kanalas
uData Duomenys, kuriuos reikia rašyti
Išvestis SĖKMĖS Sėkmingai
KLAIDA Nepavyko
Naudojimas UARTM_WriteByte(UARTM_CH0, 'A'); //UART rašo 1 baitą – „A“
Vardas u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funkcija UART modulio rašymo operacija (TX)
 Įvestis CH UART kanalas
pBuferis Buferio rodyklė
u Ilgis Duomenų, kuriuos reikia įrašyti, ilgis
Išvestis SĖKMĖS Sėkmingai
KLAIDA Nepavyko
 Naudojimas u8 Test[] = "Tai testas!\r\n"; UARTM_Write(UARTM_CH0, Testas, dydis(Test) -1); //UART rašo pBuffer duomenis
Vardas u32 UARTM_ReadByte (u32 CH, u8 *pData)
Funkcija UART modulio skaitymo baitų operacija (RX)
Įvestis CH UART kanalas
pData Adresas, į kurį patalpinti nuskaityti duomenys
Išvestis SĖKMĖS Sėkmingai
KLAIDA Nepavyko (nėra duomenų)
   Naudojimas u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SĖKMĖ
Vardas u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funkcija UART modulio skaitymo operacija (RX)
 Įvestis CH UART kanalas
pBuferis Buferio rodyklė
u Ilgis Skaitomų duomenų ilgis
Išvestis Skaityti skaičių Duomenų ilgis buvo perskaitytas
     Naudojimas u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() nuskaito 5 baitus duomenų ir išsaugo duomenis į Test2 ir priskiria skaitymo baitų skaičių Lenui//Parašykite duomenis, gautus iš Test2
Vardas u32 UARTM_GetReadBufferLength(u32 CH)
Funkcija Gaukite skaitymo buferio ilgį (RX)
Įvestis CH UART kanalas
Išvestis u Ilgis Skaityti buferio ilgį
  Naudojimas UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART modulio inicijavimas while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Palaukite, kol UARTM_ReadBuffer gaus 5 baitus duomenų
Vardas u32 UARTM_GetWriteBufferLength(u32 CH)
Funkcija Gaukite rašymo buferio ilgį (TX)
Įvestis CH UART kanalas
Išvestis u Ilgis Įrašykite buferio ilgį
Vardas u8 UARTM_IsTxFinished(u32 CH)
Funkcija Gaukite TX būseną
Įvestis CH UART kanalas
Išvestis TIESA TX būsena: baigta
NETEISINGA TX būsena: nebaigta
      Naudojimas UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 reikalingaswhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Ši API gali būti naudojama TX būsenai patikrinti, kaip parodyta aukščiau; palaukite, kol UARTM_WriteByte() API baigsis, ty TX būsena yra TRUE, tada tęskite tolesnius veiksmus.//Pridėtas apribojimas, nes ši funkcija nebuvo pridėta, kol SVN versijos numeris uart_module.c nėra 525.
Vardas tuščias UARTM_DiscardReadBuffer(u32 CH)
Funkcija Išmeskite duomenis skaitymo buferyje
Įvestis CH UART kanalas

API naudojimo pvzamples 

Šiame skyriuje bus parodytas API rašymas ir skaitymas, pvzamp„Module_UART“ programos kodą naudojant inicijavimo procesą ir „UART_Module_Ex“ample“ paraiškos kodo procesas. Prieš naudodami API, vartotojai turi įtraukti API antraštę file į pagrindinį programos šaltinio kodą file (#įtraukite „middleware/uart_module.h“).

Kaip parodyta 14 paveiksle, pradėdami inicijavimo procesą, pirmiausia apibrėžkite UART pagrindinę konfigūracijos struktūrą. Tada sukonfigūruokite UART pagrindinės konfigūracijos struktūros narius, įskaitant BaudRate, WordLength, StopBits, Parity ir Mode. Galiausiai iškvieskite API inicijavimo funkciją, kurios pabaiga rodo inicijavimo proceso pabaigą. Po to vartotojai gali tęsti rašymo ir skaitymo operacijas pagal iš anksto nustatytą UART pagrindinę konfigūraciją.

14 pav. Inicijuojimo schema
Inicializacijos schema

„UART_Module_Example“ programos kodas demonstruoja API skaitymo ir rašymo operacijas atgalinio ciklo būdu. Tam skirta struktūrinė schema parodyta 15 paveiksle. Naudojamos API funkcijos apima UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() ir UARTM_GetReadBufferLength(). Jų aprašymas pateikiamas skiltyje „API aprašymas“.

15 pav. Rašymo ir skaitymo schema Pvzamples
Rašymo ir skaitymo schema Examples

Aplanke „Module_UART“ yra kitas „UART_Bridge“ programos kodas, kuris yra susijęs file aprašymas pristatomas skyriuje „Katalogo struktūra“. „UART_Bridge“ programos kodas suaktyvina du UART kanalus – UART CH0 ir UART CH1, o tada pritaiko ryšio protokolą tarp dviejų UART įrenginių per COMMAND struktūras gCMD1 ir gCMD2. Jie yra apibrėžti uart_bridge.c, kaip parodyta toliau. UARTBridge_CMD1TypeDef gCMD1:

Kintamasis Vardas Tipas Aprašymas
uHeader u8 Antraštė
uCmd u8 komandą
uData[3] u8 Duomenys

UARTBridge_CMD2TypeDef gCMD2:

Kintamasis Vardas Tipas Aprašymas
uHeader u8 Antraštė
uCmdA u8 Komanda A
uCmdB u8 Komanda B
uData[3] u8 Duomenys

Programos „UART_Bridge“ kode naudokite gCMD1, kad gautumėte duomenis kaip komandų paketą ir tada juos analizuokite. Tada pagal tinkintą ryšio protokolą nustatykite gCMD2 kaip atsako paketą ir persiųskite jį. Toliau yra buvęsampkomandų paketo gCMD1) ir atsako paketo (gCMD2). Komandų paketas (UARTBridge_CMD1TypeDef gCMD1):

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

Atsakymo paketas (UARTBridge_CMD2TypeDef gCMD2):

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

Išteklių okupacija
Priimant HT32F52352 kaip buvample, UART modulio užimami ištekliai parodyti žemiau.

HT32F52352
ROM dydis 946 baitai
RAM dydis 40*1 + 256*2 Baitai

Pastaba:

  1. Visuotiniai kintamieji, įskaitant vėliavėles ir vieno kanalo būseną, užima 40 baitų RAM.
  2.  Tai taikoma būklei, kai naudojamas vienas kanalas, o TX/RX buferio dydis yra 128/128 baitai. Buferio dydį galima nustatyti pagal taikymo reikalavimus.

4 lentelė. Programos kodo išteklių užimtumas 

  • Kompiliavimo aplinka: MDK-Arm V5.36, ARMCC V5.06 7 naujinys (960 versija)
  • Optimizavimo parinktis: 2 lygis (-O2)

Naudojimo instrukcijos

Šiame skyriuje bus pristatytas aplinkos paruošimas „Module_UART“ programos kodui, taip pat kompiliavimo ir bandymo veiksmai.

Aplinkos paruošimas
„Module_UART“ programos kodui reikalinga aparatinė ir programinė įranga yra išvardyta toliau.
5 lentelė. Techninės/programinės įrangos paruošimas aplinkai 

Techninė įranga / Programinė įranga Suskaičiuoti Pastaba
Pradinis rinkinys 1 Šiame programos pastaboje naudojamas HT32F52352 pradinis rinkinys kaip buvęsample
USB kabelis 1 Micro USB, prijungtas prie kompiuterio
Programos kodas Atsisiuntimo kelias, file ir katalogo konfigūracija pristatoma skyriuje „Išteklių atsisiuntimas ir paruošimas“.Kelias: „\\application\Module_UART\UART_Module_Example “
Tera terminas Žr. skyrių „Terminalo programinė įranga“.
Keil IDE Keil uVision V5.xx

Pirmiausia naudokite HT32F52352 Starter Kit kartu su e-Link32 Lite virtualiojo COM prievado (VCP) funkcija UART programos pristatymui. Tam reikalingas toks aplinkos paruošimas:

  1. Plokštėje yra dvi USB sąsajos. USB kabeliu sujunkite kompiuterį ir plokštės eLink32 Lite sąsają, kaip parodyta 16-(a) paveiksle.
  2. Kadangi programos kodui reikia naudoti e-Link32 Lite virtualiojo COM prievado (VCP) funkciją, įsitikinkite, kad UART Jumper-J2*2 PAx*1 ir DAP_Tx buvo sutrumpintas naudojant trumpiklį. J2 vieta nurodyta 16-(b) paveiksle.

Pastaba

  1. Pradinio rinkinio J2 yra dvi parinktys: PAx ir DAP_Tx sutrumpintas arba PAx ir RS232_Tx trumpasis. Išsamias nustatymo funkcijas rasite Starter Kit vartotojo vadove.
  2. MCU UART RX kaiščio vieta skirtinguose pradžios rinkiniuose skiriasi. Šis buvęsample naudoja PAx, kad nurodytų RX kaištį.

16 pav. HT32 starterio rinkinio bloko schema
Rinkinio bloko schema

Dabar naudokite vartotojo tikslinę plokštę kartu su „e-Link32 Pro“ virtualiojo COM prievado (VCP) funkcija UART programos pristatymui. Tam reikalingas toks aplinkos paruošimas:

  1. Viena e-Link32 Pro pusė yra prijungta prie kompiuterio naudojant mini USB laidą, o kita pusė yra prijungta prie vartotojo tikslinės plokštės per 10 bitų pilką kabelį. Ryšys tarp kabelio ir tikslinės plokštės SWD sąsajų įgyvendinamas naudojant Dupont linijas, kaip parodyta 17-(a) pav.
  2. „e-Link32 Pro“ nuosekliojo ryšio kaiščiai yra Pin#7 VCOM_RXD ir Pin#8- VCOM_TXD. Jie turi būti prijungti prie vartotojo tikslinės plokštės TX ir RX kaiščių, kaip parodyta 17 (b) pav.
    17 pav. e-Link32 Pro + vartotojo tikslinės plokštės bloko schema
    Vartotojo tikslinė lenta

Kompiliavimas ir testas
Šioje skiltyje bus „application\Module_UART\UART_Module_Example“ kaip buvęsample supažindinti su kompiliavimo ir testavimo procesais. Prieš tai įsitikinkite, kad buvo atlikti visi ankstesniame skyriuje aprašyti parengiamieji darbai ir atsisiųsta „Tera Term“ terminalo programinė įranga.

Išsamūs operacijos žingsniai apibendrinti toliau.
1 veiksmas. Įjungimo testas

Nustatykite aparatinės įrangos aplinką, kaip aprašyta ankstesniame skyriuje. Įjungus maitinimą, pradinio rinkinio apatiniame kairiajame kampe užsidegs D9 maitinimo šviesos diodas. e-Link1 Lite viršutiniame dešiniajame kampe esantis D32 USB šviesos diodas užsidegs, kai USB surašymas bus baigtas. Jei po ilgo laiko D1 neužsidega, patikrinkite, ar USB kabelis gali užmegzti ryšį. Jei ne, išimkite jį ir vėl įdėkite.

2 veiksmas. Sukurkite projektą
Atidarykite programą\Module_UART\UART_Module_Example aplanką, spustelėkite _CreateProject.bat file Norėdami sugeneruoti projektą, kaip parodyta 18 paveiksle. Kadangi šioje programos pastaboje naudojamas HT32F52352 pradžios rinkinys, atidarykite Keil IDE projektą „Project_52352.uvprojx“, esantį aplanke MDK_ARMv5.

18 pav. Vykdykite _CreateProject.bat, kad sukurtumėte projektą
Sukurti projektą

3 veiksmas. Sukompiliuokite ir programuokite
Atidarę projektą, pirmiausia spustelėkite „Build“ (arba naudokite spartųjį klavišą „F7“), tada spustelėkite „Atsisiųsti“ (arba naudokite spartųjį klavišą „F8“). Po to kūrimo ir atsisiuntimo rezultatai bus rodomi „Build Output“ lange. Žr. 19 pav.

19 pav. Sukūrimo ir atsisiuntimo rezultatai
Sukūrimo ir atsisiuntimo rezultatai

4 veiksmas. Atidarykite „Tera Term“ programinę įrangą ir sukonfigūruokite nuoseklųjį prievadą
Atidarykite „Tera Term“ programinę įrangą ir COM prievadą. Atkreipkite dėmesį, ar starterio rinkinio sugeneruotas COM prievado numeris yra teisingas, ar ne. Tada spustelėkite „Setup >> Serial Port“, kad patektumėte į konfigūracijos sąsają. Programos „Module_UART“ kodo UART sąsajos konfigūracija aprašyta skyriuje „Terminalo programinė įranga“. Sąrankos rezultatas parodytas 20 pav.

20 pav. Tera Term nuosekliojo prievado sąrankos rezultatas
Sąrankos rezultatas
5 veiksmas. Iš naujo nustatykite sistemą ir patikrinkite
Paspauskite SK atstatymo mygtuką – B1 Reset. Po to pasirodys „ABCThis is test! žinutė bus
perduodama per API ir bus rodoma „Tera Term“ lange, kaip parodyta 21 paveiksle. Kalbant apie gavimo funkciją, įvedant duomenis į „Tera Term“ langą, atitinkama API bus naudojama gavimo buferio ilgiui nustatyti. Kai kompiuterio gaunami duomenys pasiekia 5 baitus, gauti 5 baitai duomenų bus išsiunčiami nuosekliai. Kaip parodyta 22 paveiksle, nuosekliai įvedami duomenys yra „1, 2, 3, 4, 5“, kurie gaunami ir nustatomi per API. Po to po penkių įvesties bus atspausdinti duomenys „1, 2, 3, 4, 5“.

21 pav. „Module_UART“ taikomosios programos kodo funkcinis testas – perdavimas
Programos kodo funkcinis testas

22 pav. „Module_UART“ taikomosios programos kodo funkcinis testas – priėmimas
Programos kodo funkcinis testas

Transplantacijos instrukcijos
Šiame skyriuje bus pristatyta, kaip integruoti API į vartotojo projektus.
1 veiksmas. Pridėkite uart_module.c file į projektą. Dešiniuoju pelės mygtuku spustelėkite vartotojo aplanką. Pasirinkite „Pridėti esamą Files į grupę „Vartotojas“…“, tada pasirinkite uart_module.c file ir spustelėkite „Pridėti“, kaip parodyta 23 paveiksle. Žr. skyrių „Katalogo struktūra“ file kelio aprašymas.

23 pav. Pridėti uart_module.c File prie Projekto
File prie Projekto

2 veiksmas. Pridėkite ring_buffer.c file į projektą. Dešiniuoju pelės mygtuku spustelėkite vartotojo aplanką. Pasirinkite „Pridėti esamą Files į grupę „Vartotojas“…“, tada pasirinkite ring_buffer.c file ir spustelėkite „Pridėti“, kaip parodyta 24 paveiksle.\ Norėdami sužinoti daugiau, žr. skyrių „Katalogo struktūra“. file kelio aprašymas.
24 pav. Pridėti ring_buffer.c File prie Projekto 
File prie Projekto

3 veiksmas. Įtraukite API antraštę file į main.c pradžią, kaip parodyta 25 paveiksle. (Ext: #include "middleware/uart_module.h")
25 pav. Įtraukti API antraštę File į pagrindinį.c
Įtraukti API antraštę File

4 veiksmas. Įdiekite UART ryšiui reikalingus nustatymus naudodami ht32_board_config.h file. Tai išsamiai pristatoma skyriuose „Nustatymo aprašymas“ ir „Nustatymų keitimas ir DUK“.

Nustatymų keitimas ir DUK 

Šiame skyriuje bus pristatyta, kaip keisti UART nustatymus, ir paaiškinti kai kurie dažniausiai pasitaikantys klausimai naudojant.

Pakeiskite UART PIN priskyrimą 

  1. Žr. HT32F52352 duomenų lapo skyrių „Smeigtukų priskyrimas“, suraskite Alternatyvių funkcijų atvaizdavimo lentelę, kurioje išvardytos įrenginio tipo AFIO funkcijos. Informaciją apie atitinkamus UART kaiščius žr. stulpelyje „AF6 USART/UART“, kaip parodyta 26 pav.
    26 pav. HT32F52352 alternatyvių funkcijų atvaizdavimo lentelė
    Alternatyvių funkcijų atvaizdavimo lentelė
  2. Šis veiksmas padės vartotojams rasti atitinkamus UART kaiščius naudojant aukščiau pateiktą lentelę. HT32F52352 example naudoja USART1 kaip numatytąjį kanalą. Čia TX ir RX kaiščiai yra USR1_TX ir USR1_RX ir yra atitinkamai PA4 ir PA5. 27 paveiksle parodytas kaiščio atitikimas ir kaiščių apibrėžimai „ht32_board_config.h“. Tušti „Paketo“ laukai smeigtukų priskyrimo lentelėje reiškia, kad šiame pakete nėra atitinkamų GPIO. Norėdami modifikuoti UART kaiščius, suraskite tikslinių kaiščių vietas ir iš naujo nustatykite kaiščius naudodami „ht32_board_config.h“ file.
    27 pav. Pin korespondencija ir nustatymų modifikavimas
    Nustatymų modifikavimas

Pridėkite UART kanalą
HT32F52352 HTCFG_UARTM_CH1 kaip buvample, čia aprašyta, kaip pridėti naują UART kanalą.

Pakeiskite ht32_board_config.h file
Žr. HT32F52352 duomenų lapo skyrių „Smeigtukų priskyrimas“, suraskite Alternatyvių funkcijų atvaizdavimo lentelę, kurioje išvardytos įrenginio tipo AFIO funkcijos. Kadangi USART1 buvo naudojamas kaip HTCFG_UARTM_CH0, naujai pridėtas HTCFG_UARTM_CH1 gali pasirinkti USART0. Čia TX ir RX kaiščiai yra atitinkamai PA2 ir PA3, kaip parodyta 28 paveikslo viršutinėje pusėje. Atitinkamos modifikacijos įgyvendinamos naudojant ht120_board_config.h kodo eilutes 126–32, kaip parodyta raudonu taškiniu langeliu paveiksle. 28.

28 pav. Pridėkite UART kanalą
UART kanalas

DUK
Q: Skyriaus Kompiliavimas ir tikrinimas 5 veiksme perdavimo funkcijos testas yra normalus. Štai „ABCThis is testas! pranešimas buvo rodomas sėkmingai, tačiau gavimo funkcijai kodėl penkios įvesties reikšmės negrąžinamos ir nerodomos?
A: Patikrinkite, ar UART Jumper-J2 MCU UART RX ir DAP_Tx kaiščiai nebuvo sutrumpinti naudojant trumpiklį. Kadangi programos kodui „Module_UART“ reikia naudoti „e-Link32 Lite“ virtualų COM prievadą (VCP), trumpojo jungimo nustatymas turėtų būti taikomas dviem kairiesiems UART Jumper-J2 kaiščiams, kaip parodyta 29 paveiksle.

29 pav. UART Jumper-J2 nustatymas
UART džemperis

K: Po Vykdant „Build“ (arba spartųjį klavišą „F7“), pasirodo klaidos pranešimas, nurodantis, kad programinės įrangos bibliotekos versija yra senesnė nei reikalinga? Žr. 30 pav.
A: „Module_UART“ programos kodo diegimas turi apimti uart_module.c/h files, kuriai reikalinga tam tikra programinės įrangos bibliotekos versija. Kai pasirodo toks klaidos pranešimas, tai reiškia, kad šiuo metu naudojama programinės įrangos biblioteka yra senesnės versijos. Todėl būtina atsisiųsti naujausią versiją per nuorodą, pateiktą skyriuje „Firmware Library“.

30 pav. Programinės aparatinės įrangos bibliotekos versijos klaidos pranešimas
Versijos klaidos pranešimas

Išvada

Šiame dokumente pateikiama pagrindinė įžanga, padedanti vartotojams geriau suprasti „Module_UART“ programos kodą ir UART ryšio protokolą. Po to sekė išteklių atsisiuntimas ir paruošimas. Funkcinio aprašymo skyriuje pristatyta file katalogo struktūra, API architektūra, API aprašymas ir API naudojimas, pvzamples. Naudojimo instrukcijų skyriuje buvo parodytas „Module_UART“ programos kodo aplinkos paruošimas, sudarymas ir išbandymas. Jame taip pat buvo pateiktos kodo perkėlimo ir modifikavimo nustatymo instrukcijos, taip pat paaiškintos kai kurios dažniausios problemos, su kuriomis gali kilti. Visa tai kartu leis vartotojams greitai suprasti, kaip naudoti API, ir vėliau sutrumpinti pradžios laiką.

Pamatinė medžiaga

Daugiau informacijos rasite Holtek websvetainė: www.holtek.com

Versijos ir modifikacijų informacija

Data Autorius Paleisti Modifikacijos informacija
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Pirmoji versija

Atsisakymas

Visa informacija, prekių ženklai, logotipai, grafika, vaizdo įrašai, garso klipai, nuorodos ir kiti elementai, esantys šioje websvetainė („Informacija“) yra tik nuoroda ir gali būti keičiama bet kuriuo metu be išankstinio įspėjimo ir Holtek Semiconductor Inc. bei su ja susijusių įmonių nuožiūra (toliau „Holtek“, „įmonė“, „mes“, „ mes“ arba „mūsų“). Nors Holtek stengiasi užtikrinti informacijos apie tai tikslumą websvetainėje, Holtek nesuteikia jokios aiškios ar numanomos garantijos informacijos tikslumui. Holtek neprisiima atsakomybės už bet kokius netikslumus ar nuotėkius.
„Holtek“ neatsako už jokią žalą (įskaitant, bet neapsiribojant, kompiuterinius virusus, sistemos problemas ar duomenų praradimą), atsiradusią naudojant arba naudojant šį webbet kurios šalies svetainėje. Šioje srityje gali būti nuorodų, leidžiančių apsilankyti webkitų įmonių svetainėse.
Šios websvetainių nekontroliuoja „Holtek“. Holtek neprisiima jokios atsakomybės ir jokios garantijos už tokiose svetainėse rodomą informaciją. Hipersaitai į kitus websvetaines rizikuojate patys.

Atsakomybės apribojimas

„Holtek Limited“ jokiu būdu nebus atsakinga jokiai kitai šaliai už bet kokius nuostolius ar žalą, atsiradusią tiesiogiai ar netiesiogiai dėl jūsų prieigos prie šio įrenginio ar naudojimo websvetainę, joje esantį turinį ar bet kokias prekes, medžiagas ar paslaugas.

Galiojantis įstatymas
Atsisakymas, esantis websvetainė bus valdoma ir aiškinama pagal Kinijos Respublikos įstatymus. Naudotojai paklus neišskirtinei Kinijos Respublikos teismų jurisdikcijai.

Atsisakymo atnaujinimas
Holtek pasilieka teisę bet kuriuo metu atnaujinti atsakomybės atsisakymą su išankstiniu įspėjimu arba be jo, visi pakeitimai įsigalioja iš karto po paskelbimo websvetainę.

Dokumentai / Ištekliai

HOLTEK HT32 MCU UART taikymo pastaba [pdf] Naudotojo vadovas
HT32 MCU, UART taikymo pastaba, HT32 MCU UART, taikymo pastaba, HT32, MCU UART taikymo pastaba, HT32 MCU UART taikymo pastaba

Nuorodos

Palikite komentarą

Jūsų el. pašto adresas nebus skelbiamas. Privalomi laukai pažymėti *