HOLTEK HT32 MCU UART rakenduse märkus Kasutusjuhend
HOLTEK HT32 MCU UART rakenduse märkus

Sissejuhatus

Universaalne asünkroonne vastuvõtja/saatja – UART on laialdaselt kasutatav jadaliides, mis pakub paindlikku asünkroonset täisdupleksset andmeedastust. Rakenduse kood „Module_UART”, mis on antud rakenduse märkuses, kasutab TX/RX katkestusi tarkvara helipuhvritega, et rakendada lihtsaid UART-i edastamise/vastuvõtmise funktsioone API-de kaudu, mille seotud funktsioone kirjeldatakse allpool. See lihtsustab kogu andmeedastusprotsessi ja võimaldab kasutajatel kiiresti mõista ja rakendada UART-siderakendusi.

  • Edastamise/vastuvõtu funktsioonid: baitide lugemine, baitide kirjutamine, puhvri lugemine, puhvri kirjutamine jne.
  • Olekufunktsioonid: saate puhvri pikkuse, TX oleku jne.

See dokument tutvustab esmalt UART-sideprotokolli, mis aitab kasutajatel UART-suhtlust põhimõttest rakenduseni paremini mõista. Sellele järgneb rakenduse koodi jaoks vajalike ressursside allalaadimine ja ettevalmistamine, sealhulgas püsivara raamatukogu, rakenduse koodi allalaadimine, file ja kataloogi konfiguratsioon, samuti rakenduse märkuses kasutatud terminali tarkvara tööriista tutvustus. Funktsionaalse kirjelduse peatükis tutvustatakse rakenduse koodikataloogi struktuuri, parameetrite sätteid ja API kirjeldust. API kasutamist kirjeldatakse rakenduse koodi "Module_UART" abil ning samuti on loetletud API-de jaoks vajalik Flash/RAM-i ressursitarbimine. Kasutusjuhendi peatükk juhendab kasutajat keskkonna ettevalmistamise, koostamise ja testimise etappide kaudu, et kinnitada rakenduse koodi õiget toimimist. Seejärel annab see juhiseid, mis selgitavad, kuidas API-sid kasutaja projektidesse integreerida, ja lõpuks viiteid muudatuste ja levinud probleemide kohta, mis võivad tekkida.

Kasutatud lühendid: 

  • UART: Universaalne asünkroonne vastuvõtja/saatja
  • API: Rakenduse programmeerimisliides
  • LSB: Kõige vähem oluline osa
  • MSB: Kõige olulisem osa
  • PC: Personaalarvuti
  • SK: Stardikomplekt, HT32 arendusplaat
  • IDE: Integreeritud arenduskeskkond

UART sideprotokoll

UART on jadaliidese tüüpi liides, mis teostab paralleelselt jadaandmete teisendamist oma saatjas ja seejärel suhtleb seeriaviisiliselt sarnase vastuvõtjaga. Seejärel teostab vastuvõtja pärast andmete vastuvõtmist jada-paralleelandmete teisendamise. Joonisel 1 on kujutatud jadakommunikatsiooni skemaatiline diagramm, mis näitab, kuidas andmeid bitipõhises järjekorras edastatakse. Seetõttu on saatja ja vastuvõtja vahelise kahesuunalise side jaoks andmete jadaedastuseks vaja ainult kahte juhet, TX ja RX. TX on viik, millel UART jadaandmeid edastab ja mis on ühendatud vastuvõtja RX-pistikuga. Seetõttu peavad saatja ja vastuvõtja seadmed oma TX- ja RX-viigud risti ühendama, et teostada UART-i kahesuunalist sidet, nagu näidatud Joonis 2.

Joonis 1. Jadaside diagramm
Jadakommunikatsiooni diagramm

Joonis 2. UART vooluringi skeem
UART vooluringi skeem

UART-jadaside ajal on andmeedastus asünkroonne. See tähendab, et saatja ja vastuvõtja vahel puudub kella või muu sünkroniseerimissignaal. Siin kasutatakse andmeedastuskiirust, mis on jadaandmete edastamise/vastuvõtmise kiirus ja mille mõlemad pooled määravad enne andmeedastust. Lisaks lisatakse andmepaketi algusesse ja lõppu spetsiaalsed bitid nagu algus- ja lõppbitid, et moodustada terviklik UART-andmepakett. Joonisel 3 on kujutatud UART-andmepaketi struktuur, samas kui joonisel 4 on kujutatud UART-i 8-bitine andmepakett ilma paarsusbitita.
Joonis 3. UART andmepaketi struktuur
UART andmepaketi struktuur

Joonis 4. UART 8-bitine andmepaketivorming
Andmepaketi vorming
UART-andmepaketi iga osa tutvustatakse allpool.

  • Algusbitt: See näitab andmepaketi algust. UART TX viik jääb tavaliselt enne edastuse algust kõrgele loogilisele tasemele. Kui andmeedastus algab, tõmbab UART-saatja TX-viigu kõrgelt madalale, st 1-lt 0-le, ja hoiab seda seal ühe taktitsükli jooksul. UART-vastuvõtja hakkab andmeid lugema, kui RX-i viigul on tuvastatud üleminek kõrgest madalale.
  • Andmed: See on tegelik ülekantav andmepikkusega 7, 8 või 9 bitti. Tavaliselt edastatakse andmed esmalt LSB-ga.
  • Pariteedi bitt: Andmetes olevat loogikanumbrit “1” kasutatakse selleks, et teha kindlaks, kas andmed on edastamise ajal muutunud. Paarispaarsuse korral peaks andmete loogika „1” koguarv olema paarisarv, vastupidi, andmete loogika „1” koguarv peaks paaritu paarsuse korral olema paaritu arv.
  • Peatusbitt: See näitab andmepaketi lõppu, kus UART-saatja tõmbab TX-viigu madalalt kõrgele, st 0-lt 1-le, ja hoiab seda siis seal 1- või 2-bitise ajavahemiku jooksul.

Nagu varem mainitud, kuna UART-ahelas pole kellasignaali, tuleb veavaba edastamise tagamiseks määrata saatja ja vastuvõtja vahel sama jadaandmete edastamise/vastuvõtmise kiirus, mida nimetatakse boodikiiruseks. Boodikiirus määratakse sekundis edastatud bittide arvuga bps (bitt sekundis). Mõned standardsed ja tavaliselt kasutatavad andmeedastuskiirused on 4800bps, 9600bps, 19200bps, 115200bps jne. Üksiku andmebiti edastamiseks kuluv vastav aeg on näidatud allpool.
Tabel 1. Baadisagedus vs. 1-bitine edastusaeg 

Baudi kiirus 1-bitine ülekanne Aeg
4800 bps 208.33 µs
9600 bps 104.16 µs
19200 bps 52.08 µs
115200 bps 8.68 µs

Ressursi allalaadimine ja ettevalmistamine

Selles peatükis tutvustatakse rakenduse koodi ja kasutatavat tarkvaratööriista, samuti seda, kuidas konfigureerida kataloogi ja file tee.

Püsivara raamatukogu 

Esiteks veenduge, et Holtek HT32 püsivara teek oleks enne rakenduse koodi kasutamist alla laaditud. Allalaadimise link on näidatud allpool. Siin on kaks võimalust: HT32_M0p_Vyyyymmdd.zip seeria HT32F5xxxx jaoks ja HT32_M3_Vyyyymmdd.zip seeria HT32F1xxxx jaoks. Laadige alla ja pakkige soovitud fail lahti file.

Tõmblukk file sisaldab mitmeid kaustu, mida saab liigitada dokumendiks, püsivara teegiks, tööriistadeks ja muudeks üksusteks, mille paigutuse tee on näidatud joonisel 5. HT32 püsivara teegi zip file koos a file HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip nimi asub kausta Firmware_Library all.

Joonis 5. HT32_M0p_Vyyyymmdd.zip Sisu
Sisu

Rakenduse kood
Laadige rakenduse kood alla järgmiselt lingilt. Rakenduse kood on pakitud ZIP-pakendisse file koos a file rakenduse HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip nimi. Vaata Joonis 6 jaoks file nimekokkulepped.

Joonis 6. Rakenduse kood File Nimi Sissejuhatus 

Allalaadimise link: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Rakenduse kood

File ja kataloogi konfiguratsioon
Kuna rakenduse kood ei sisalda HT32 püsivara teeki files, rakenduse kood ja püsivara teek on lahti pakkitud files tuleks enne kompileerimise alustamist paigutada õigele teele. Rakenduse kood zip file sisaldab tavaliselt ühte või mitut kausta, nagu rakendus ja teek, nagu on näidatud joonisel 7. Asetage rakenduse kaust HT32 püsivara teegi juurkataloogi, et lõpetada file tee konfiguratsioon, nagu on näidatud joonisel 8. Teise võimalusena pakkige samade konfiguratsioonitulemuste saavutamiseks lahti rakenduse kood ja HT32 püsivara teek üheaegselt samale teele.

Joonis 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip sisu
Sisu

Joonis 8. Dekompressioonitee
Dekompressiooni tee

Terminali tarkvara
Rakenduse kood võib edastada sõnumeid COM-pordi kaudu, et rakendada funktsioonide valimist või oleku kuvamist. See nõuab, et hostipool oleks terminalitarkvara eelnevalt installitud. Kasutajad saavad valida sobiva ühendustarkvara või kasutada tasuta litsentsitud tarkvara, näiteks Tera Term. Rakenduse koodis on UART-kanal konfigureeritud sõna pikkusega 8-bitine, paarsus puudub, 1 stopbitt ja edastuskiirus 115200 bps.

Funktsionaalne kirjeldus

Selles peatükis esitatakse rakenduse koodi funktsionaalne kirjeldus, sealhulgas teave kataloogistruktuuri, API arhitektuuri, sätete kirjelduse jms kohta

Kataloogi struktuur
Rakenduse kood file sisaldab rakenduste kausta. Järgmine kiht on kaust "Module_UART", mis sisaldab kahte rakendusprogrammi "UART_Module_Ex".ample” ja „UART_Bridge”. Asjakohane files on loetletud ja kirjeldatud allpool.
Tabel 2. Rakenduse koodide kataloogistruktuur

kaust / File Nimi Kirjeldus
\\rakendus\Modul_UART\UART_Module_Example*1
_CreateProject.bat Pakettskriptid projekti loomiseks files
_ProjectSource.ini Initsialiseerimine file projektidele lähtekoodi lisamiseks
ht32_board_config.h Seadistamine file seotud IC välisseadmete I/O määramisega
ht32fxxxxx_01_it.c Katkesta teenindusprogramm file
põhi.c Põhiprogrammi lähtekood
\\rakendus\Module_UART\UART_Bridge*2
_CreateProject.bat Pakettskriptid projekti loomiseks files
_ProjectSource.ini Initsialiseerimine file projektidele lähtekoodi lisamiseks
ht32_board_config.h Seadistamine file seotud IC välisseadmete I/O määramisega
ht32fxxxxx_01_it.c Katkesta teenindusprogramm file
põhi.c Põhiprogrammi lähtekood
uart_bridge.h uart_bridge.c UART-silla päis file ja lähtekoodi file
\\utiliidid\vahevara
uart_module.h*3 uart_module.c*3 API päis file ja lähtekoodi file
\\utiliidid\tavaline
ringbuffer.h ring_buffer.c Tarkvara helipuhvri päis file ja lähtekoodi file

Märkus. 

  1. Jaotises „UART_Module_Example" rakenduse koodi, API lugemis- ja kirjutamistoimingud tehakse tagasisilmusena, vaadake jaotist "API kasutamise eksem.amples” jaotisest lisateabe saamiseks.
  2.  Rakenduse koodis "UART_Bridge" aktiveeritakse kaks UART-kanalit, UART CH0 ja UART CH1, ning kahe UART-seadme vahel rakendatakse kohandatud sideprotokolli COMMAND-struktuuride kaudu. Lisateabe saamiseks vaadake jaotist „API Usage Examples” jaotis.
  3. Rakenduse kood peab kasutama faili uart_module.c/h files, millel on püsivara teegi versiooni nõue. Nõue võib vastavalt värskendusele aeg-ajalt muutuda. Praeguse püsivara teegi versiooni nõude kinnitamiseks vaadake sõltuvuskontrolli sisu, otsides failist main.c märksõna "Sõltuvuskontroll". file. Kui püsivara teegi versioon ei vasta nõuetele, laadige alla uusim versioon jaotises "Püsivarateek" olevast lingist.

API arhitektuur
Igal API-l on oluline parameeter CH, milleks on UART kanal. See määrab, millist UART-kanalit tuleb juhtida. Praegu toetatakse kuni nelja UART-kanalit ja seetõttu on neli konstantset sümbolit määratletud järgmiselt. Neid kasutatakse parameetrina CH, mis annab API-dele juhtimise aluse.

  • UARTM_CH0: sisendparameeter – UART CH0 juhtimine või konfigureerimine
  • UARTM_CH1: sisendparameeter – UART CH1 juhtimine või konfigureerimine
  • UARTM_CH2: sisendparameeter – UART CH2 juhtimine või konfigureerimine
  • UARTM_CH3: sisendparameeter – UART CH3 juhtimine või konfigureerimine

Mäluruumi ei raisata, kui kasutatakse ainult ühte UART-kanalit. Selle põhjuseks on asjaolu, et toetatud UART-kanalite arvu saab seadistada ja eelprotsessor eemaldab vaba mäluruumi suurendamiseks kasutamata UART-kanali koodi. API arhitektuur on näidatud Joonis 9.

Joonis 9. API arhitektuuri plokkskeem
Arhitektuuri plokkskeem

Iga API koosneb neljast UART-kanaliga seotud sätete või juhtelementide rühmast, nii et kasutajad peavad sisestama ainult soovitud CH parameetri. Asjakohase API konfigureerimiseks on vaja ainult täiendavat UART-i põhikonfiguratsiooniparameetrite tabelit koos struktuurivormiga USART_InitTypeDef. API rakendab UART-i põhikonfiguratsiooni vastavalt tabelis olevale parameetri sisule. UART-i põhikonfiguratsioonistruktuuri tabeli leiate jaotisest „API kirjeldus”.

uart_module.c/.h files sisaldavad ainult iga UART-kanali katkestust (CHx_IRQ) ​​ja olekutabelit (CHx Status), samas kui kõik UART-suhtluseks vajalikud seaded pakub ht32_board_config.h. Riistvaraga seotud parameetrid failis ht32_board_config.h file on näidatud allolevas tabelis. Lisateavet leiate jaotisest "Seadistuse kirjeldus".

Faili ht32_board_config.h riistvaraga seotud parameetrid hõlmavad I/O sätteid ja füüsilise UART-pordi sätteid järgmiselt.

Tabel 3. Definitsioon Sümbolid failis ht32_board_config.h

Sümbol Kirjeldus
HTCFG_UARTM_CH0 füüsilise UART-pordi nimi; Ntample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Määrab CH0 jaoks TX pordi nime; Ntample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Määrab TX PIN-koodi CH0 jaoks; Ntample: 0-15
HTCFG_UARTM0_RX_GPIO_PORT Määrab CH0 jaoks RX pordi nime; Ntample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Määrab TX PIN-koodi CH0 jaoks; Ntample: 0-15
HTCFG_UARTM0_TX_BUFFER_SIZE Määrab CH0 TX puhvri suuruse; Ntamphind: 128 XNUMX
HTCFG_UARTM0_RX_BUFFER_SIZE Määrab CH0 RX puhvri suuruse; Ntamphind: 128 XNUMX

UART-kanali AFIO konfiguratsiooni muutmiseks vaadake vastavat seadme andmelehte. Praegu kehtivad ainult UART CH0 I/O määratlused, kuna failis ht0_board_config.h on konfigureeritud ainult UART CH32. UART CH1~3 lisamiseks tuleb nende I/O definitsioonid täita, viidates UART CH0 definitsioonile või jaotisele „Seadete muutmine ja korduma kippuvad küsimused”.

API arhitektuuri põhifunktsioone on kolm: 

  1. Toetatud on kuni neli UART-kanalit. Nende sisendparameetrid on UARTM_CH0, UARTM_CH1, UARTM_CH2 ja UARTM_CH3.
  2.  UART-kanalite arvu saab seadistada ja kasutamata kanalid ei vähenda vaba mäluruumi.
  3. Kõik UART-sätted ja I/O-definitsioonid on API-dest täielikult eraldatud. See suurendab väärtuste seadmise haldamise mugavust ja vähendab valede või puuduvate sätete võimalust.

Seadistuse kirjeldus 

See jaotis tutvustab parameetrite sätteid failides ht32_board_config.h ja uart_module.h files.

  1. ht32_board_config.h: see file kasutatakse viigu määratluste ja arendusplaadi asjakohaste sätete jaoks, mis hõlmavad stardikomplekti (SK) kasutatavat UART IP-kanalit (UART0, UART1, USART0…), vastavaid TX/RX viigu asukohti ja TX/RX puhvri suurust. Joonis 10 näitab stardikomplekti HT32F52352 seadistuste sisu. Olenevalt arenduse funktsionaalsest integratsioonist saavad kasutajad viidata kasutatud seadme andmelehe jaotisele "Pin Assignment", et rakendada viigu määratlusi. Lisateavet seadistuste muutmise kohta kirjeldatakse jaotises "Seadistuse muutmine ja KKK".
    Joonis 10. ht32_board_config.h sätted (HT32F52352)
    Seaded
  2. uart_module.h: See on API päis file mida kasutab rakenduse kood, mis sisaldab asjakohaseid vaikesätteid, funktsioonide määratlusi jne. Nagu on näidatud joonisel 11, saab vaikeseadete sisu üle kirjutada väliste konfiguratsioonidega, näiteks failis ht32_board_config.h file.
    Joonis 11. Vaikesätted failis uart_module.h
    Vaikesätted
API kirjeldus
  1. Rakenduse koodi andmetüübi kirjeldus.
    • USART_InitTypeDef
      See on UART-i põhikonfiguratsioonistruktuur, mis koosneb BaudRate, WordLength, StopBits, Parity ja Mode konfiguratsioonidest, nagu allpool näidatud.
      Muutuv Nimi Tüüp Kirjeldus
      USART_BaudRate u32 UART-side andmeedastuskiirus
      USART_WordLength u16 UART-suhtlussõna pikkus: 7, 8 või 9 bitti
      USART_StopBits u16 UART-kommunikatsiooni peatamise biti pikkus: 1 või 2 bitti
      USART_Parity u16 UART-suhtluspaarsus: paaris, paaritu, märk, tühik või paarsuse puudumine
      USART_režiim u16 UART siderežiim; API-d toetavad ainult tavarežiimi
  2. Enne API funktsioonide kasutamist viige põhiprogrammis lõpule UART-i põhikonfiguratsioon. Selle rakenduse koodi UART-põhikonfiguratsioon on näidatud joonisel 12. Siin on edastuskiirus 115200 bps, sõna pikkus on 8-bitine, stopbiti pikkus on 1-bitine ja paarsus puudub.
    Joonis 12. UART-i põhikonfiguratsioon
    Põhikonfiguratsioon
  3. Joonis 13 näitab failis uart_module.h deklareeritud API funktsioone file. Järgmised tabelid selgitavad API funktsioonide funktsioone, sisendparameetreid ja kasutamist.
    Joonis 13. API funktsioonide deklaratsioonid failis uart_module.h 
    API funktsioonide deklaratsioonid
Nimi void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funktsioon UART-mooduli lähtestamine
  Sisend CH UART kanal
pUART_Init UART põhikonfiguratsiooni struktuuri osuti
 uRxTimeOutValue UART RX FIFO ajalõpu väärtus. Kui RX FIFO saab uusi andmeid, lähtestub loendur ja taaskäivitub. Kui loendur jõuab eelseadistatud ajalõpu väärtuseni ja vastav ajalõpu katkestus on lubatud, genereeritakse ajalõpu katkestus.
 Kasutamine UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//UART-i põhikonfiguratsiooni käivitamine//USART_InitStructure konfiguratsiooni kohta vaadake joonist 12
Nimi u32 UARTM_WriteByte (u32 CH, u8 uData)
Funktsioon UART-mooduli kirjutamisbaitoperatsioon (TX)
Sisend CH UART kanal
uData Kirjutatavad andmed
Väljund EDU Edukas
VIGA Ebaõnnestunud
Kasutamine UARTM_WriteByte(UARTM_CH0, 'A'); //UART kirjutab 1 baiti – 'A'
Nimi u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funktsioon UART-mooduli kirjutamisoperatsioon (TX)
 Sisend CH UART kanal
ppuhver Puhvri osuti
uPikkus Kirjutatavate andmete pikkus
Väljund EDU Edukas
VIGA Ebaõnnestunud
 Kasutamine u8 Test[] = "See on test!\r\n"; UARTM_Write(UARTM_CH0, Test, suurus(Test) -1); //UART kirjutab ppuhvri andmed
Nimi u32 UARTM_ReadByte (u32 CH, u8 *pData)
Funktsioon UART-mooduli lugemisbaitoperatsioon (RX)
Sisend CH UART kanal
pData Aadress loetud andmete paigutamiseks
Väljund EDU Edukas
VIGA Ebaõnnestunud (andmed puuduvad)
   Kasutamine u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//Kui UARTM_ReadByte() tagastab EDU, kirjutab UART selle andmebaidi
Nimi u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funktsioon UART-mooduli lugemisoperatsioon (RX)
 Sisend CH UART kanal
ppuhver Puhvri osuti
uPikkus Loetavate andmete pikkus
Väljund Lugemiste arv Andmete pikkus on loetud
     Kasutamine u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() loeb 5 baiti andmeid ja salvestab andmed test2-sse ning määrab lugemisbaitide arvu Lenile//Kirjutage test2-st pärinevad andmed
Nimi u32 UARTM_GetReadBufferLength(u32 CH)
Funktsioon Lugege lugemispuhvri pikkus (RX)
Sisend CH UART kanal
Väljund uPikkus Lugege puhvri pikkust
  Kasutamine UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART-mooduli lähtestamine while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Oodake, kuni UARTM_ReadBuffer on saanud 5 baiti andmeid
Nimi u32 UARTM_GetWriteBufferLength(u32 CH)
Funktsioon Hankige kirjutuspuhvri pikkus (TX)
Sisend CH UART kanal
Väljund uPikkus Kirjutage puhvri pikkus
Nimi u8 UARTM_IsTxFinished(u32 CH)
Funktsioon Hankige TX olek
Sisend CH UART kanal
Väljund TÕSI TX olek: lõpetatud
VALE TX olek: pole lõpetatud
      Kasutamine UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 vajalikwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Seda API-t saab kasutada TX oleku kontrollimiseks, nagu ülal näidatud; oodake, kuni UARTM_WriteByte() API on lõppenud, st TX olek on TRUE, ja seejärel jätkake järgnevaid toiminguid.//Lisatakse piirang, kuna seda funktsiooni pole lisatud enne, kui SVN-i versiooninumber failis uart_module.c on 525.
Nimi tühine UARTM_DiscardReadBuffer(u32 CH)
Funktsioon Visake lugemispuhvris olevad andmed ära
Sisend CH UART kanal

API kasutus, ntamples 

See jaotis demonstreerib API kirjutamist ja lugemist ntamprakenduse koodi "Module_UART" initsialiseerimisprotsessi kasutades ja "UART_Module_Ex"ample” rakenduskoodi protsess. Enne API-de kasutamist peavad kasutajad lisama API päise file programmi põhikoodi file (#include "middleware/uart_module.h").

Nagu on näidatud joonisel 14, määrake lähtestamisprotsessi sisenemisel esmalt UART-i põhikonfiguratsiooni struktuur. Seejärel konfigureerige UART-i põhikonfiguratsiooni struktuuri liikmed, sealhulgas BaudRate, WordLength, StopBits, Parity ja Mode. Lõpuks kutsuge välja API lähtestamisfunktsioon, mille lõpetamine näitab lähtestamisprotsessi lõppu. Pärast seda saavad kasutajad jätkata kirjutamis- ja lugemistoiminguid eelseadistatud UART-i põhikonfiguratsiooni alusel.

Joonis 14. Initsialiseerimise vooskeem
Initsialiseerimise vooskeem

„UART_Module_Example” rakenduse kood demonstreerib API lugemis- ja kirjutamisoperatsioone tagasisilmusena. Selle vooskeemi on näidatud joonisel 15. Kasutatavate API funktsioonide hulka kuuluvad UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() ja UARTM_GetReadBufferLength(). Nende kirjeldus on esitatud jaotises „API kirjeldus”.

Joonis 15. Kirjutamise ja lugemise vooskeem Näidamples
Kirjutamise ja lugemise vooskeem Examples

Kaustas Module_UART on veel üks rakenduse kood "UART_Bridge", mis on seotud file kirjeldust tutvustatakse jaotises "Kataloogi struktuur". Rakenduse kood "UART_Bridge" aktiveerib kaks UART-kanalit, UART CH0 ja UART CH1, ning seejärel kohandab kahe UART-seadme vahelist sideprotokolli COMMAND-struktuuride gCMD1 ja gCMD2 kaudu. Need on määratletud failis uart_bridge.c, nagu allpool näidatud. UARTBridge_CMD1TypeDef gCMD1:

Muutuv Nimi Tüüp Kirjeldus
uPäis u8 Päis
uCmd u8 Käsk
uData[3] u8 Andmed

UARTBridge_CMD2TypeDef gCMD2:

Muutuv Nimi Tüüp Kirjeldus
uPäis u8 Päis
uCmdA u8 Käsk A
uCmdB u8 Käsk B
uData[3] u8 Andmed

Rakenduse koodis "UART_Bridge" kasutage andmete vastuvõtmiseks käsupaketina gCMD1 ja seejärel analüüsige neid. Seejärel määrake gCMD2 vastavalt kohandatud sideprotokollile vastusepaketiks ja edastage see. Järgmine on endineample käsupaketist gCMD1) ja vastusepaketist (gCMD2). Käsupakett (UARTBridge_CMD1TypeDef gCMD1):

0 bait 1 bait 2. bait ~ 4. bait
uPäis uCmd uData [3]
"A" "1" "x, y, z"

Vastuspakett (UARTBridge_CMD2TypeDef gCMD2):

0 bait 1 bait 2 bait 3. bait ~ 5. bait
uPäis uCmdA uCmdB uData [3]
"B" "a" "1" "x, y, z"

Ressursi okupatsioon
Võttes HT32F52352 ekslikuksample, UART-mooduli poolt hõivatud ressursid on näidatud allpool.

HT32F52352
ROM-i suurus 946 bait
RAM-i suurus 40*1 + 256*2 Baitid

Märkus.

  1. Globaalsed muutujad, sealhulgas ühe kanali lipud ja olek, võtavad 40 baiti RAM-i.
  2.  Seda juhul, kui kasutatakse ühte kanalit ja TX/RX puhvri suurus on 128/128 baiti. Puhvri suurust saab määrata vastavalt rakenduse nõuetele.

Tabel 4. Rakenduse koodi ressursi hõivatus 

  • Koostamiskeskkond: MDK-Arm V5.36, ARMCC V5.06 värskendus 7 (järg 960)
  • Optimeerimise valik: 2. tase (-O2)

Kasutusjuhend

Selles peatükis tutvustatakse rakenduse koodi "Module_UART" keskkonnaalast ettevalmistust, samuti koostamise ja testimise etappe.

Keskkonna ettevalmistamine
Rakenduse koodi "Module_UART" jaoks vajalik riist- ja tarkvara on loetletud allpool.
Tabel 5. Riistvara/tarkvara keskkonna ettevalmistamine 

Riistvara/tarkvara Count Märkus
Stardikomplekt 1 See rakenduse märkus kasutab HT32F52352 stardikomplekti eksample
USB kaabel 1 Micro USB, arvutiga ühendatud
Rakenduse kood allalaadimise tee, file ja kataloogi konfiguratsiooni tutvustatakse jaotises "Ressursi allalaadimine ja ettevalmistamine". Tee: "\\application\Module_UART\UART_Module_Example "
Tera Term Vaadake jaotist "Terminali tarkvara".
Keil IDE Keil uVision V5.xx

Esmalt kasutage UART-rakenduse tutvustamiseks HT32F52352 stardikomplekti koos e-Link32 Lite'i virtuaalse COM-pordi (VCP) funktsiooniga. See nõuab järgmise keskkonnaalase ettevalmistuse rakendamist:

  1. Plaadil on kaks USB-liidest. Kasutage arvuti ja eLink32 Lite liidese ühendamiseks plaadil USB-kaablit, nagu on näidatud joonisel 16-(a).
  2. Kuna rakenduse kood peab kasutama e-Link32 Lite virtuaalse COM-pordi (VCP) funktsiooni, veenduge, et UART Jumper-J2*2 PAx*1 ja DAP_Tx on džemperi abil lühistatud. J2 asukoht on näidatud joonisel 16-(b).

Märkus

  1. Stardikomplekti J2-l on kaks võimalust: PAx ja DAP_Tx lühis või PAx ja RS232_Tx lühis. Üksikasjalikud seadistusfunktsioonid leiate Stardikomplekti kasutusjuhendist.
  2. MCU UART RX tihvtide asukoht erinevatel stardikomplektidel on erinev. See eksample kasutab RX viigu tähistamiseks PAx.

Joonis 16. HT32 stardikomplekti plokkskeem
Komplekti plokkskeem

Nüüd kasutage UART-rakenduse tutvustamiseks kasutaja sihtplaati koos e-Link32 Pro virtuaalse COM-pordi (VCP) funktsiooniga. See nõuab järgmise keskkonnaalase ettevalmistuse rakendamist:

  1. e-Link32 Pro üks külg on ühendatud arvutiga mini-USB-kaabli abil ja teine ​​pool on ühendatud kasutaja sihtplaadiga 10-bitise halli kaabli kaudu. Ühendus kaabli ja sihtplaadi SWD liideste vahel on teostatud Duponti liinide abil, nagu on näidatud joonisel 17-(a).
  2. e-Link32 Pro jadaühenduse kontaktid on Pin#7 VCOM_RXD ja Pin#8- VCOM_TXD. Need tuleks ühendada kasutaja sihtplaadi TX ja RX tihvtidega, nagu on näidatud joonisel 17-(b).
    Joonis 17. e-Link32 Pro + kasutaja sihtplaadi plokkskeem
    Kasutaja sihtlaud

Koostamine ja testimine
See jaotis sisaldab "rakendus\Module_UART\UART_Module_Example” kui endineample tutvustada koostamise ja testimise protsesse. Enne seda veenduge, et kõik eelmises jaotises kirjeldatud ettevalmistused on tehtud ja Tera Termi terminali tarkvara on alla laaditud.

Üksikasjalikud tööetapid on kokku võetud allpool.
1. toiming. Sisselülitamise test

Seadistage riistvarakeskkond, nagu on kirjeldatud eelmises jaotises. Pärast sisselülitamist süttib stardikomplekti vasakus alanurgas olev D9 toitelamp. D1 USB LED e-Link32 Lite'i paremas ülanurgas süttib pärast USB loenduse lõppemist. Kui D1 ei sütti pärast pikka aega, kontrollige, kas USB-kaabel suudab suhelda. Kui ei, siis eemaldage see ja sisestage uuesti.

2. samm. Looge projekt
Avage rakendus\Module_UART\UART_Module_Example kausta, klõpsake _CreateProject.bat file projekti genereerimiseks, nagu on näidatud joonisel 18. Kuna see rakenduse märkus kasutab HT32F52352 stardikomplekti, avage Keil IDE projekt "Project_52352.uvprojx", mis asub kausta MDK_ARMv5 all.

Joonis 18. Projekti genereerimiseks käivitage _CreateProject.bat
Loo projekt

Samm 3. Kompileerimine ja programmeerimine
Pärast projekti avamist klõpsake esmalt nuppu "Build" (või kasutage otseteed "F7"), seejärel klõpsake "Download" (või kasutage otseteed "F8"). Pärast seda kuvatakse ehituse ja allalaadimise tulemused aknas Build Output. Vaata joonist 19.

Joonis 19. Koostamise ja allalaadimise tulemused
Koostamise ja allalaadimise tulemused

4. samm. Avage Tera Term tarkvara ja konfigureerige jadaport
Avage Tera Term tarkvara ja COM-port. Pöörake tähelepanu sellele, kas stardikomplekti genereeritud COM-pordi number on õige või mitte. Seejärel klõpsake konfiguratsiooniliidese sisenemiseks nuppu "Seadistamine >> Jadaport". Rakenduse koodi "Module_UART" UART-liidese konfiguratsiooni kirjeldatakse jaotises "Terminali tarkvara". Seadistamise tulemus on näidatud joonisel 20.

Joonis 20. Tera Termi jadapordi seadistamise tulemus
Seadistamise tulemus
Samm 5. Lähtestage süsteem ja testige
Vajutage SK lähtestusklahvi – B1 Reset. Pärast seda ilmub "ABCSee on test!" sõnum saab olema
edastatakse API kaudu ja kuvatakse Tera Termi aknas, nagu on näidatud joonisel 21. Mis puudutab vastuvõtufunktsiooni, siis Tera Termi aknasse andmete sisestamisel kasutatakse vastuvõtupuhvri pikkuse määramiseks vastavat API-t. Kui arvutisse vastuvõetud andmed jõuavad 5 baiti, saadetakse vastuvõetud 5 baiti andmeid järjest välja. Nagu on näidatud joonisel 22, on järjestikku sisestatud andmed "1, 2, 3, 4, 5", mis võetakse vastu ja määratakse API kaudu. Pärast seda trükitakse pärast viit sisestust andmed “1, 2, 3, 4, 5”.

Joonis 21. Rakenduse koodi "Module_UART" funktsionaalne test – edastamine
Rakenduse koodi funktsionaalne test

Joonis 22. Rakenduse koodi "Module_UART" funktsionaalne test – vastuvõtt
Rakenduse koodi funktsionaalne test

Siirdamisjuhised
See jaotis tutvustab API-de integreerimist kasutaja projektidesse.
1. samm. Lisage uart_module.c file projekti sisse. Paremklõpsake kaustal Kasutaja. Valige "Lisa olemasolev Files rühma 'Kasutaja'…”, seejärel valige uart_module.c file ja klõpsake nuppu "Lisa", nagu on näidatud joonisel 23. Vaadake jaotist "Kataloogi struktuur" file tee kirjeldus.

Joonis 23. Lisa uart_module.c File projekti juurde
File projekti juurde

2. samm. Lisa ring_buffer.c file projekti sisse. Paremklõpsake kaustal Kasutaja. Valige "Lisa olemasolev Files rühma 'Kasutaja'…”, seejärel valige ring_buffer.c file ja klõpsake "Lisa", nagu on näidatud joonisel 24.\ Vaadake jaotist "Kataloogi struktuur" file tee kirjeldus.
Joonis 24. Lisa ring_buffer.c File projekti juurde 
File projekti juurde

3. samm. Kaasake API päis file faili main.c algusesse, nagu on näidatud joonisel 25. (Ext: #include "middleware/uart_module.h")
Joonis 25. Lisa API päis File peamisele.c
Kaasa API päis File

4. samm. Rakendage UART-side jaoks vajalikud sätted faili ht32_board_config.h abil file. Seda tutvustatakse üksikasjalikult jaotistes "Seadete kirjeldus" ja "Seadete muutmine ja KKK".

Seadistuse muutmine ja KKK 

Selles jaotises tutvustatakse, kuidas muuta UART-i sätteid, ja selgitatakse mõningaid kasutamise ajal esinevaid levinumaid küsimusi.

Muutke UART-i PIN-koodi määramist 

  1. Viidates HT32F52352 andmelehe peatükile "Pin Assignment", otsige üles alternatiivsete funktsioonide kaardistamise tabel, mis loetleb seadme tüübi AFIO-funktsioonid. UART-i asjakohaste kontaktide kohta vaadake veergu „AF6 USART/UART”, nagu on näidatud joonisel 26.
    Joonis 26. HT32F52352 alternatiivsete funktsioonide kaardistamise tabel
    Alternatiivne funktsioonide kaardistamise tabel
  2. See samm juhendab kasutajaid ülaltoodud tabeli abil vastavad UART-tihvtid leidma. HT32F52352 eksample kasutab USART1 vaikekanalina. Siin on TX- ja RX-viigud USR1_TX ja USR1_RX ning asuvad vastavalt PA4-l ja PA5-l. Joonis 27 näitab viigu vastavust ja viigu määratlusi failis “ht32_board_config.h”. Tühjad väljad „Pakett” PIN-koodi määramise tabelis tähendavad, et selles paketis ei ole asjakohaseid GPIO-sid. UART-tihvtide muutmiseks leidke sihttihvtide asukohad ja määrake need uuesti, kasutades faili „ht32_board_config.h”. file.
    Joonis 27. Pin kirjavahetus ja seadistuste muutmine
    Seadistuse muutmine

Lisage UART-kanal
Võttes HT32F52352 HTCFG_UARTM_CH1 eksample, siin kirjeldatakse uue UART-kanali lisamist.

Muutke faili ht32_board_config.h file
Viidates HT32F52352 andmelehe peatükile "Pin Assignment", otsige üles alternatiivsete funktsioonide vastendamise tabel, mis loetleb seadme tüübi AFIO-funktsioonid. Kuna USART1 on kasutatud kui HTCFG_UARTM_CH0, saab äsja lisatud HTCFG_UARTM_CH1 valida USART0. Siin asuvad TX- ja RX-viigud vastavalt PA2-l ja PA3-l, nagu on näidatud joonise 28 ülemisel poolel. Vastavad muudatused on realiseeritud koodiridade 120-126 abil failis ht32_board_config.h, nagu on näidatud joonisel punase punktiirkastiga. 28.

Joonis 28. UART-kanali lisamine
UART kanal

KKK-d
Q: Jaotise Kompileerimine ja testimine 5. sammus on edastusfunktsiooni test normaalne. Siin on "ABCSee on test!" teade on edukalt kuvatud, aga miks vastuvõtmisfunktsiooni puhul viit sisendväärtust ei tagastata ja ei kuvata?
A: Kontrollige, kas UART Jumper-J2 MCU UART RX ja DAP_Tx kontaktid on hüppaja abil lühistatud. Kuna rakenduse kood "Module_UART" peab kasutama e-Link32 Lite'i virtuaalset COM-porti (VCP), tuleks lühisätet rakendada UART Jumper-J2 kahele vasakpoolsele kontaktile, nagu on näidatud joonisel 29.

Joonis 29. UART Jumper-J2 seadistus
UART hüppaja

K: Pärast "Build" (või otsetee "F7") käivitamisel kuvatakse veateade, mis näitab, et püsivara teegi versioon on nõutavast vanem? Vaata joonist 30.
A: Rakenduse koodi "Module_UART" juurutamine peab sisaldama uart_module.c/h files, millel on nõue teatud püsivara teegi versiooni jaoks. Kui selline tõrketeade kuvatakse, tähendab see, et praegu kasutatav püsivara kogu on vanem versioon. Seetõttu tuleb jaotises "Püsivarateek" oleva lingi kaudu alla laadida uusim versioon.

Joonis 30. Püsivara raamatukogu versiooni veateade
Versiooni veateade

Järeldus

See dokument on andnud põhisissejuhatuse, et aidata kasutajatel paremini mõista rakenduse koodi "Module_UART" ja UART-sideprotokolli. Sellele järgnes ressursi allalaadimine ja ettevalmistamine. Funktsionaalse kirjelduse peatükis tutvustati file kataloogistruktuur, API arhitektuur, API kirjeldus ja API kasutus ntamples. Kasutusjuhendi peatükis tutvustati rakenduse koodi “Module_UART” keskkonnaalast ettevalmistamist, koostamist ja testimist. Samuti pakkus see juhiseid koodi siirdamiseks ja muutmise seadistamiseks ning selgitas mõningaid levinumaid probleeme, mis võivad tekkida. Kõik see koos võimaldab kasutajatel kiiresti mõista, kuidas API-sid kasutada, ja seejärel lühendada alustamiseks kuluvat aega.

Võrdlusmaterjal

Lisateabe saamiseks vaadake Holtekit websait: www.holtek.com

Versioonid ja muudatusteave

Kuupäev Autor Vabasta Muudatusteave
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Esimene versioon

Vastutusest loobumine

Kogu sellel kuvatav teave, kaubamärgid, logod, graafika, videod, heliklipid, lingid ja muud üksused websaidid ("teave") on ainult viitamiseks ja neid võidakse muuta igal ajal ilma ette teatamata ning Holtek Semiconductor Inc. ja temaga seotud ettevõtete äranägemisel (edaspidi "Holtek", "ettevõte", "meie", " meie" või "meie"). Kuigi Holtek püüab tagada selle teabe täpsuse webHoltek ei anna teabe täpsusele otsest ega kaudset garantiid. Holtek ei vastuta vigade või lekete eest.
Holtek ei vastuta kahjude eest (sealhulgas, kuid mitte ainult arvutiviirused, süsteemiprobleemid või andmete kadu), mis tekivad selle kasutamisega või sellega seoses. webmis tahes osapoole poolt. Selles piirkonnas võib olla linke, mis võimaldavad teil külastada webteiste ettevõtete saidid.
Need websaite ei kontrolli Holtek. Holtek ei kanna mingit vastutust ega garantiid sellistel saitidel kuvatava teabe eest. Hüperlingid teistele websaidid on teie enda riisikol.

Vastutuse piirang

Holtek Limited ei vastuta mingil juhul ühegi teise osapoole ees mis tahes kaotuse või kahju eest, mis on põhjustatud otseselt või kaudselt seoses teie juurdepääsuga käesolevale teabele või selle kasutamisega. websaidile, sellel olevale sisule või mis tahes kaupadele, materjalidele või teenustele.

Kehtiv seadus
Lahtiütlus, mis sisaldub websaiti reguleerivad ja tõlgendatakse vastavalt Hiina Vabariigi seadustele. Kasutajad alluvad Hiina Vabariigi kohtute mitteainuõiguslikule jurisdiktsioonile.

Vastutusest loobumise värskendus
Holtek jätab endale õiguse lahtiütlust igal ajal ajakohastada etteteatamisega või ilma, kõik muudatused jõustuvad kohe pärast selle postitamist websaidile.

Dokumendid / Ressursid

HOLTEK HT32 MCU UART rakenduse märkus [pdfKasutusjuhend
HT32 MCU, UART rakenduse märkus, HT32 MCU UART, rakenduse märkus, HT32, MCU UART rakenduse märkus, HT32 MCU UART rakenduse märkus

Viited

Jäta kommentaar

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *