HOLTEK HT32 MCU UART rakenduse märkus Kasutusjuhend
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
Joonis 2. 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
Joonis 4. UART 8-bitine andmepaketivorming
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
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/
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
Joonis 8. Dekompressioonitee
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.
- Jaotises „UART_Module_Example" rakenduse koodi, API lugemis- ja kirjutamistoimingud tehakse tagasisilmusena, vaadake jaotist "API kasutamise eksem.amples” jaotisest lisateabe saamiseks.
- 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.
- 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
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:
- Toetatud on kuni neli UART-kanalit. Nende sisendparameetrid on UARTM_CH0, UARTM_CH1, UARTM_CH2 ja UARTM_CH3.
- UART-kanalite arvu saab seadistada ja kasutamata kanalid ei vähenda vaba mäluruumi.
- 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.
- 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)
- 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
API kirjeldus
- 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
- USART_InitTypeDef
- 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
- 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
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
„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
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.
- Globaalsed muutujad, sealhulgas ühe kanali lipud ja olek, võtavad 40 baiti RAM-i.
- 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:
- Plaadil on kaks USB-liidest. Kasutage arvuti ja eLink32 Lite liidese ühendamiseks plaadil USB-kaablit, nagu on näidatud joonisel 16-(a).
- 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
- 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.
- MCU UART RX tihvtide asukoht erinevatel stardikomplektidel on erinev. See eksample kasutab RX viigu tähistamiseks PAx.
Joonis 16. HT32 stardikomplekti 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:
- 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).
- 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
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
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
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
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
Joonis 22. Rakenduse koodi "Module_UART" funktsionaalne test – vastuvõtt
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
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
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
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
- 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
- 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
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
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
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
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 |