Manuali i përdorimit të shënimit të aplikimit HOLTEK HT32 MCU UART
Hyrje
Marrësi/Transmetuesi Universal Asinkron – UART është një ndërfaqe transmetuese serike e përdorur gjerësisht që ofron transmetim fleksibël asinkron të të dhënave të plota dupleks. Kodi i aplikacionit "Module_UART" i dhënë në këtë shënim aplikacioni përdor ndërprerjet TX/RX me buferat e unazave të softuerit për të zbatuar funksione të thjeshta të transmetimit/marrjes UART përmes API-ve, funksionet përkatëse të të cilave përshkruhen më poshtë. Kjo do të thjeshtojë të gjithë procesin e transmetimit të të dhënave dhe do t'i lejojë përdoruesit të kuptojnë dhe zbatojnë shpejt aplikacionet e komunikimit UART.
- Funksionet e transmetimit/marrjes: leximi i bajtit, shkrimi i bajtit, leximi në bufer, shkrimi në bufer, etj.
- Funksionet e statusit: merrni gjatësinë e tamponit, statusin TX, etj.
Ky dokument do të prezantojë fillimisht protokollin e komunikimit UART, i cili do t'i ndihmojë përdoruesit të kuptojnë më mirë komunikimin UART nga parimi në aplikim. Kjo pasohet nga shkarkimi dhe përgatitja e burimeve të kërkuara për kodin e aplikacionit, duke përfshirë bibliotekën e firmuerit, shkarkimin e kodit të aplikacionit, file dhe konfigurimin e drejtorisë, si dhe një hyrje në mjetin softuerik të terminalit të përdorur në shënimin e aplikacionit. Në kapitullin "Përshkrimi funksional", do të prezantohet struktura e drejtorisë së kodit të aplikacionit, cilësimet e parametrave dhe përshkrimi i API-së. Përdorimi i API-së do të përshkruhet duke përdorur kodin e aplikacionit "Module_UART" dhe konsumi i burimeve Flash/RAM që kërkohet për API-të do të listohet gjithashtu. Kapitulli i udhëzimeve për përdorim do ta udhëzojë përdoruesin përmes hapave të përgatitjes mjedisore, përpilimit dhe testimit për të konfirmuar që kodi i aplikacionit do të funksionojë siç duhet. Më pas do të ofrojë udhëzime që shpjegojnë se si të integrohen API-të në projektet e përdoruesit dhe në fund do të ofrojë një referencë për modifikimet dhe problemet e zakonshme që mund të hasen.
Shkurtesat e përdorura:
- UART: Marrës/Transmetues universal asinkron
- API: Ndërfaqja e programimit të aplikacionit
- LSB: Pika më pak e rëndësishme
- MSB: Biti më i rëndësishëm
- PC: Kompjuter personal
- SK: Kompleti fillestar, pllaka zhvillimi HT32
- IDE: Mjedisi i Zhvillimit të Integruar
Protokolli i Komunikimit UART
UART është një lloj ndërfaqe komunikimi serik që zbaton konvertimin e të dhënave paralele në seri në transmetuesin e tij dhe më pas komunikon në mënyrë serike me një marrës të ngjashëm. Marrësi më pas kryen një konvertim të të dhënave serike në paralele pas marrjes së të dhënave. Figura 1 tregon një diagram skematik të komunikimit serik që tregon se si transferohen të dhënat në një rend bit. Prandaj, për komunikimin dydrejtimësh midis transmetuesit dhe marrësit, kërkohen vetëm dy tela, TX dhe RX, për të transferuar të dhënat në mënyrë serike midis njëri-tjetrit. TX është kunja mbi të cilën UART transmeton të dhënat serike dhe lidhet me pinin RX të marrësit. Prandaj, pajisjet transmetuese dhe marrëse duhet të lidhin kunjat e tyre TX dhe RX për të kryer komunikimin me dy drejtime UART, siç tregohet në Figura 2.
Figura 1. Diagrami i komunikimit serial
Figura 2. Diagrami i qarkut UART
Gjatë komunikimit serik UART, transmetimi i të dhënave është asinkron. Kjo do të thotë se nuk ka orë ose sinjal tjetër sinkronizimi midis transmetuesit dhe marrësit. Këtu përdoret një shpejtësi baud, e cila është shpejtësia serike e transmetimit/marrjes së të dhënave dhe e cila vendoset nga të dyja palët përpara transferimit të të dhënave. Për më tepër, bitë të veçanta si bitet e fillimit dhe të ndalimit shtohen në fillim dhe në fund të paketës së të dhënave për të formuar një paketë të plotë të të dhënave UART. Figura 3 tregon strukturën e paketës së të dhënave UART ndërsa Figura 4 tregon një paketë të dhënash UART 8-bit pa një bit barazie.
Figura 3. Struktura e paketës së të dhënave UART
Figura 4. Formati i paketës së të dhënave UART 8-bit
Secila pjesë e paketës së të dhënave UART prezantohet sipas renditjes më poshtë.
- Biti i fillimit: Kjo tregon fillimin e një pakete të dhënash. Pini UART TX zakonisht mbetet në një nivel të lartë logjik përpara se të fillojë transmetimi. Nëse fillon transmetimi i të dhënave, transmetuesi UART do ta tërheqë pinin TX nga lart në të ulët, dmth, nga 1 në 0, dhe më pas do ta mbajë aty për një cikël orësh. Marrësi UART do të fillojë të lexojë të dhëna kur të zbulohet një tranzicion i lartë në i ulët në pinin RX.
- Të dhënat: Këto janë të dhënat aktuale të transferuara, me një gjatësi të dhënash prej 7, 8 ose 9 bit. Të dhënat zakonisht transferohen së pari me LSB.
- Biti i barazisë: Numri i logjikës "1" në të dhëna përdoret për të përcaktuar nëse ndonjë e dhënë ka ndryshuar gjatë transmetimit. Për barazinë çift, numri total i logjikës "1" në të dhëna duhet të jetë një numër çift, anasjelltas, numri i përgjithshëm i logjikës "1" në të dhëna duhet të jetë një numër tek për barazinë tek.
- Stop Bit: Kjo tregon fundin e një pakete të dhënash, ku transmetuesi UART do të tërheqë pinin TX nga niveli i ulët në të lartë, dmth, nga 0 në 1, dhe më pas do ta mbajë atë atje për një periudhë kohore 1 ose 2-bit.
Siç u përmend më herët, meqenëse nuk ka sinjal të orës në qarkun UART, e njëjta shpejtësi serike e transmetimit/marrjes së të dhënave, e cila njihet si shpejtësia e zhurmës, duhet të përcaktohet midis transmetuesit dhe marrësit për të zbatuar transmetimin pa gabime. Shpejtësia e baud-it përcaktohet nga numri i biteve të transferuara në sekondë, në bps (bit për sekondë). Disa norma baud standarde dhe të përdorura zakonisht janë 4800bps, 9600bps, 19200bps, 115200bps, etj. Koha përkatëse e nevojshme për transferimin e një biti të vetëm të të dhënave tregohet më poshtë.
Tabela 1. Shpejtësia e Baud kundrejt Kohës së Transmetimit 1-Bit
Baud Rate | Transmetim 1-bit Koha |
4800 bps | 208.33µs |
9600 bps | 104.16µs |
19200 bps | 52.08µs |
115200 bps | 8.68µs |
Shkarkimi dhe përgatitja e burimeve
Ky kapitull do të prezantojë kodin e aplikacionit dhe mjetin softuerik të përdorur, si dhe mënyrën e konfigurimit të drejtorisë dhe file shteg.
Biblioteka e firmuerit
Së pari, sigurohuni që biblioteka e firmuerit Holtek HT32 të jetë shkarkuar përpara se të përdorni kodin e aplikacionit. Lidhja e shkarkimit tregohet më poshtë. Këtu ka dy opsione, HT32_M0p_Vyyyymmdd.zip për serinë HT32F5xxxx dhe HT32_M3_Vyyyymmdd.zip për serinë HT32F1xxxx. Shkarkoni dhe zbërtheni atë që dëshironi file.
Zip file përmban disa dosje që mund të klasifikohen si Document, Firmware Library, Tools dhe artikuj të tjerë, rruga e vendosjes së të cilave tregohet në Figurën 5. Zip i bibliotekës së firmuerit HT32 file me një file emri i HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip ndodhet nën dosjen Firmware_Library.
Figura 5. Përmbajtja HT32_M0p_Vyyyymmdd.zip
Kodi i Aplikimit
Shkarkoni kodin e aplikacionit nga lidhja e mëposhtme. Kodi i aplikacionit është i paketuar në një zip file me një file emri i HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Shiko Figura 6 për file konventat e emrit.
Figura 6. Kodi i Aplikimit File Emri Hyrje
Lidhja e shkarkimit: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File dhe Konfigurimi i Drejtorisë
Pasi që kodi i aplikacionit nuk përmban bibliotekën e firmuerit HT32 files, kodi i aplikacionit dhe biblioteka e firmuerit u zbërthyen files duhet të vendosen në rrugën e duhur përpara fillimit të përpilimit. Kodi i aplikacionit zip file zakonisht përmban një ose më shumë dosje, të tilla si aplikacioni dhe biblioteka, siç tregohet në figurën 7. Vendosni dosjen e aplikacionit nën direktorinë rrënjë të bibliotekës së firmuerit HT32 për të përfunduar file konfigurimi i rrugës, siç tregohet në figurën 8. Përndryshe, hiqni kodin e aplikacionit dhe bibliotekën e firmuerit HT32 njëkohësisht në të njëjtën rrugë për të arritur të njëjtat rezultate të konfigurimit.
Figura 7. Përmbajtja e HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip
Figura 8. Rruga e Dekompresimit
Softueri i Terminalit
Kodi i aplikacionit mund të transferojë mesazhe përmes portës COM për të zbatuar zgjedhjen e funksionit ose shfaqjen e statusit. Kjo kërkon që pala pritës të ketë të instaluar paraprakisht softuerin e terminalit. Përdoruesit mund të zgjedhin softuerin e duhur të lidhjes ose të përdorin softuer të licencuar falas si Tera Term. Në kodin e aplikacionit, kanali UART është konfiguruar me një gjatësi fjalësh prej 8-bitësh, pa barazi, 1 bit ndalimi dhe një shpejtësi baud prej 115200 bps.
Përshkrimi funksional
Ky kapitull do të ofrojë një përshkrim funksional për kodin e aplikacionit, duke përfshirë informacionin mbi strukturën e drejtorisë, arkitekturën API, përshkrimin e cilësimeve, etj.
Struktura e Drejtorisë
Kodi i aplikimit file përmban një dosje aplikacioni. Shtresa tjetër është dosja "Module_UART" e cila përmban dy programe aplikimi, "UART_Module_Example” dhe “UART_Bridge”. Përkatëse files janë renditur dhe përshkruar më poshtë.
Tabela 2. Struktura e Drejtorisë së Kodit të Aplikimit
Dosja / File Emri | Përshkrimi |
\\application\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Skriptet e grupit për krijimin e projektit files |
_ProjectSource.ini | Inicializimi file për shtimin e kodit burimor në projekte |
ht32_board_config.h | Konfigurimi file lidhur me caktimin e I/O periferike IC |
ht32fxxxxx_01_it.c | Ndërprerja e programit të shërbimit file |
kryesore.c | Kodi burimor i programit kryesor |
\\application\Module_UART\UART_Bridge*2 | |
_CreateProject.bat | Skriptet e grupit për krijimin e projektit files |
_ProjectSource.ini | Inicializimi file për shtimin e kodit burimor në projekte |
ht32_board_config.h | Konfigurimi file lidhur me caktimin e I/O periferike IC |
ht32fxxxxx_01_it.c | Ndërprerja e programit të shërbimit file |
kryesore.c | Kodi burimor i programit kryesor |
uart_urë.h uar_urë.c | Koka e urës UART file dhe kodin burimor file |
\\ shërbimet\middleware | |
uart_moduli.h*3 uart_moduli.c*3 | Kreu i API-së file dhe kodin burimor file |
\\ shërbimet \ të përbashkëta | |
ringbuffer.h ring_buffer.c | Titulli i tamponit të unazës së softuerit file dhe kodin burimor file |
Shënim:
- Në "UART_Module_Example" kodi i aplikacionit, operacionet e leximit dhe shkrimit të API kryhen në një mënyrë loopback, referojuni "Përdorimi i API Exampseksioni les” për më shumë detaje.
- Në kodin e aplikacionit "UART_Bridge", aktivizohen dy kanale UART, UART CH0 dhe UART CH1, dhe protokolli i personalizuar i komunikimit nëpërmjet strukturave COMMAND zbatohet midis dy pajisjeve UART. Për më shumë informacion, referojuni "Sh.p. i përdorimit të APIampseksioni les”.
- Kodi i aplikacionit duhet të përdorë uart_module.c/h files të cilat kanë një kërkesë për versionin e bibliotekës së firmuerit. Kërkesa mund të ndryshojë herë pas here sipas përditësimit. Për të konfirmuar kërkesën aktuale të versionit të bibliotekës së firmuerit, referojuni përmbajtjes së kontrollit të varësisë duke kërkuar fjalën kyçe "Kontrolli i varësisë" në main.c file. Nëse versioni i bibliotekës së firmuerit nuk i plotëson kërkesat, shkarkoni versionin më të ri nga lidhja e dhënë në seksionin "Biblioteka e firmuerit".
Arkitektura API
Çdo API ka një parametër të rëndësishëm CH, që është Kanali UART. Kjo përcakton se cili kanal UART do të kontrollohet. Aktualisht mbështeten deri në katër kanale UART dhe për këtë arsye katër simbole konstante përcaktohen si më poshtë. Këto përdoren si parametër CH duke siguruar API-të bazën për kontroll.
- UARTM_CH0: parametri hyrës – kontrolloni ose konfiguroni UART CH0
- UARTM_CH1: parametri hyrës – kontrolloni ose konfiguroni UART CH1
- UARTM_CH2: parametri hyrës – kontrolloni ose konfiguroni UART CH2
- UARTM_CH3: parametri hyrës – kontrolloni ose konfiguroni UART CH3
Hapësira e memories nuk do të harxhohet nëse përdoret vetëm një kanal UART. Kjo për shkak se numri i kanaleve të mbështetura UART mund të caktohet dhe kodi i kanalit të papërdorur UART do të hiqet nga paraprocesori për të rritur hapësirën e disponueshme të memories. Arkitektura API është paraqitur në Figura 9.
Figura 9. Blloku i arkitekturës së API-së
Çdo API përbëhet nga katër grupe cilësimesh ose kontrollesh të lidhura me kanalin UART, në mënyrë që përdoruesit të kenë nevojë vetëm të futin parametrin e dëshiruar CH. Për të konfiguruar API-në përkatëse, kërkohet vetëm një tabelë shtesë e parametrave bazë të konfigurimit UART me formën e strukturës, USART_InitTypeDef. API do të zbatojë konfigurimin bazë të UART sipas përmbajtjes së parametrave në tabelë. Referojuni seksionit "Përshkrimi i API" për tabelën e strukturës bazë të konfigurimit UART.
Moduli uart.c/.h files përmbajnë vetëm ndërprerjen (CHx_IRQ) dhe tabelën e statusit (CHx Status) të çdo kanali UART ndërsa të gjitha cilësimet e kërkuara për komunikimin UART ofrohen nga ht32_board_config.h. Parametrat përkatës të harduerit në ht32_board_config.h file janë paraqitur në tabelën e mëposhtme. Më shumë detaje jepen në seksionin "Përshkrimi i cilësimeve".
Parametrat përkatës të harduerit në ht32_board_config.h përfshijnë cilësimet I/O dhe cilësimet fizike të portit UART, si më poshtë.
Tabela 3. Simbolet e definicionit në ht32_board_config.h
Simboli | Përshkrimi |
HTCFG_UARTM_CH0 | Emri fizik i portës UART; p.shample: UART0, UART1… |
HTCFG_UARTM0_TX_GPIO_PORT | Përcakton emrin e portit të TX për CH0; p.shample: A, B, C… |
HTCFG_UARTM0_TX_GPIO_PIN | Përcakton numrin e pinit të TX për CH0; p.shample: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Përcakton emrin e portit të RX për CH0; p.shample: A, B, C… |
HTCFG_UARTM0_RX_GPIO_PIN | Përcakton numrin e pinit të TX për CH0; p.shample: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Përcakton madhësinë e tamponit TX për CH0; p.shample: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Përcakton madhësinë e tamponit RX për CH0; p.shample: 128 |
Për të modifikuar konfigurimin AFIO të kanalit UART, referojuni fletës përkatëse të të dhënave të pajisjes. Aktualisht vetëm përkufizimet I/O për UART CH0 hyjnë në fuqi pasi vetëm UART CH0 është konfiguruar në ht32_board_config.h. Për të shtuar UART CH1~3, përkufizimet e tyre I/O duhet të plotësohen duke iu referuar përkufizimit të UART CH0 ose duke iu referuar seksionit "Modifikimi i cilësimeve dhe pyetjet e shpeshta".
Ekzistojnë tre karakteristika kryesore të arkitekturës API:
- Mbështeten deri në katër kanale UART. Parametrat e tyre hyrës janë UARTM_CH0, UARTM_CH1, UARTM_CH2 dhe UARTM_CH3.
- Numri i kanaleve UART mund të caktohet dhe kanalet e papërdorura nuk do të zvogëlojnë hapësirën e disponueshme të memories.
- Të gjitha cilësimet e UART dhe përkufizimet I/O janë plotësisht të ndara nga API-të. Kjo rrit komoditetin e menaxhimit të vendosjes së vlerave dhe zvogëlon mundësinë e cilësimeve të pasakta ose të munguara.
Përshkrimi i cilësimit
Ky seksion do të prezantojë cilësimet e parametrave në ht32_board_config.h dhe uart_module.h files.
- ht32_board_config.h: Kjo file përdoret për përcaktimet e pineve dhe cilësimet përkatëse të bordit të zhvillimit, të cilat përfshijnë kanalin IP UART (UART0, UART1, USART0…) të përdorur nga Kompleti fillestar (SK), vendndodhjet përkatëse të pineve TX/RX dhe madhësinë e tamponit TX/RX. Figura 10 tregon përmbajtjen e cilësimeve të kompletit fillestar HT32F52352. Në varësi të integrimit funksional të zhvillimit, përdoruesit mund t'i referohen seksionit "Caktimi i pinit" të fletës së të dhënave të pajisjes së përdorur për të zbatuar përkufizimet e pinit. Më shumë detaje rreth modifikimit të cilësimeve do të përshkruhen në seksionin "Modifikimi i cilësimeve dhe FAQ".
Figura 10. Cilësimet e ht32_board_config.h (HT32F52352)
- uart_module.h: Ky është kreu i API file përdoret nga kodi i aplikacionit, i cili përfshin cilësimet përkatëse të paracaktuara, përkufizimet e funksioneve, etj. Siç tregohet në figurën 11, përmbajtja e cilësimeve të paracaktuara mund të mbishkruhet nga konfigurime të jashtme, të tilla si cilësimet në ht32_board_config.h file.
Figura 11. Cilësimet e paracaktuara në uart_module.h
Përshkrimi i API
- Përshkrimi i llojit të të dhënave të kodit të aplikacionit.
- USART_InitTypeDef
Kjo është struktura bazë e konfigurimit UART e cila përbëhet nga konfigurimet BaudRate, WordLength, StopBits, Parity dhe Mode, siç tregohet më poshtë.E ndryshueshme Emri Lloji Përshkrimi USART_BaudRate u32 Shpejtësia e zhurmës së komunikimit UART USART_Gjatesia e fjales u16 Gjatësia e fjalës së komunikimit UART: 7, 8 ose 9 bit USART_StopBits u16 Gjatësia e bitit të ndalimit të komunikimit UART: 1 ose 2 bit USART_Barazia u16 Barazia e komunikimit UART: çift, tek, shenjë, hapësirë ose pa barazi USART_Mode u16 Mënyra e komunikimit UART; API-të mbështesin vetëm modalitetin normal
- USART_InitTypeDef
- Përpara se të përdorni funksionet API, plotësoni konfigurimin bazë të UART në programin kryesor. Konfigurimi bazë UART për këtë kod aplikacioni është paraqitur në Figurën 12. Këtu shpejtësia e baud-it është 115200bps, gjatësia e fjalës është 8-bit, gjatësia e bitit të ndalimit është 1-bit dhe nuk ka barazi.
Figura 12. Konfigurimi bazë i UART
- Figura 13 tregon funksionet API të deklaruara në uart_module.h file. Tabelat e mëposhtme shpjegojnë funksionin, parametrat e hyrjes dhe përdorimin e funksioneve API.
Figura 13. Deklaratat e funksionit API në uart_module.h
Emri | void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Funksioni | Inicializimi i modulit UART | |
Input | CH | Kanali UART |
pUART_Init | Treguesi bazë i strukturës së konfigurimit UART | |
uRxTimeOutValue | Vlera e skadimit të UART RX FIFO. Kur RX FIFO merr të dhëna të reja, numëruesi do të rivendoset dhe riniset. Pasi numëruesi të arrijë vlerën e paracaktuar të skadimit dhe të aktivizohet ndërprerja përkatëse e skadimit, do të gjenerohet një ndërprerje e skadimit. | |
Përdorimi | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Ekzekutoni konfigurimin bazë të UART//Referojuni Figurës 12 për konfigurimin e USART_InitStructure |
Emri | u32 UARTM_WriteByte (u32 CH, u8 uXNUMX të dhëna) | |
Funksioni | Operacioni i shkrimit të bajtit të modulit UART (TX) | |
Input | CH | Kanali UART |
uData | Të dhënat që duhen shkruar | |
Prodhimi | SUKSES | I suksesshëm |
GABIM | Dështoi | |
Përdorimi | UARTM_WriteByte(UARTM_CH0, 'A'); //UART shkruan 1 bajt - 'A' |
Emri | u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uXNUMX uLength) | |
Funksioni | Operacioni i shkrimit të modulit UART (TX) | |
Input | CH | Kanali UART |
pBuffer | Treguesi i tamponit | |
UGjatësia | Gjatësia e të dhënave që do të shkruhen | |
Prodhimi | SUKSES | I suksesshëm |
GABIM | Dështoi | |
Përdorimi | u8 Test[] = “Ky është test!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART shkruan të dhëna pBuffer |
Emri | u32 UARTM_ReadByte (u32 CH, u8 *pData) | |
Funksioni | Operacioni i bajtit të leximit të modulit UART (RX) | |
Input | CH | Kanali UART |
pData | Adresa për të vendosur të dhënat e lexuara | |
Prodhimi | SUKSES | I suksesshëm |
GABIM | Dështoi (pa të dhëna) | |
Përdorimi | u8 TempData; nëse (UARTM_ReadByte(UARTM_CH0, &TempData) == SUKSES){UARTM_WriteByte(UARTM_CH0, TempData);}//Nëse UARTM_ReadByte() kthen SUCCESS atëherë UART shkruan këtë bajt të dhënash |
Emri | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uXNUMX uLength) | |
Funksioni | Operacioni i leximit të modulit UART (RX) | |
Input | CH | Kanali UART |
pBuffer | Treguesi i tamponit | |
UGjatësia | Gjatësia e të dhënave që duhet lexuar | |
Prodhimi | Numri i leximeve | Gjatësia e të dhënave është lexuar |
Përdorimi | u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5); nëse (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() lexon 5 bajt të dhëna dhe ruan të dhënat në Test2 dhe cakton numrin e bajtit të lexuar te Len//Shkruani të dhënat me burim nga Test2 |
Emri | u32 UARTM_GetReadBufferLength(u32 CH) | |
Funksioni | Merrni gjatësinë e tamponit të leximit (RX) | |
Input | CH | Kanali UART |
Prodhimi | UGjatësia | Lexoni gjatësinë e tamponit |
Përdorimi | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicializimi i modulit UART ndërsa (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Prisni derisa UARTM_ReadBuffer të ketë marrë 5 bajt të dhëna |
Emri | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Funksioni | Merrni gjatësinë e tamponit të shkrimit (TX) | |
Input | CH | Kanali UART |
Prodhimi | UGjatësia | Shkruani gjatësinë e tamponit |
Emri | u8 UARTM_IsTxFinished(u32 CH) | |
Funksioni | Merrni statusin TX | |
Input | CH | Kanali UART |
Prodhimi | E VËRTETË | Statusi TX: i përfunduar |
E rreme | Statusi TX: jo i përfunduar | |
Përdorimi | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 kërkohet ndërkohë (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Kjo API mund të përdoret për të kontrolluar statusin TX, siç tregohet më sipër; prisni derisa të përfundojë UARTM_WriteByte() API, d.m.th., statusi TX është TRUE, dhe më pas vazhdoni veprimet pasuese.//Shtohet një kufizim sepse ky funksion nuk është shtuar derisa numri i versionit SVN në uart_module.c të jetë 525. |
Emri | i pavlefshëm UARTM_DiscardReadBuffer(u32 CH) | |
Funksioni | Hidhni të dhënat në buferin e leximit | |
Input | CH | Kanali UART |
Përdorimi API Shemamples
Ky seksion do të demonstrojë shkrimin dhe leximin e API p.shamppjesët e kodit të aplikacionit "Module_UART" duke përdorur procesin e inicializimit dhe "UART_Module_Ex"ample” procesi i kodit të aplikimit. Përpara përdorimit të API-ve, përdoruesit duhet të përfshijnë kokën e API-së file në kodin burimor të programit kryesor file (#include "middleware/uart_module.h").
Siç tregohet në figurën 14, kur hyni në procesin e inicializimit, së pari përcaktoni strukturën bazë të konfigurimit UART. Pastaj konfiguroni anëtarët e strukturës bazë të konfigurimit UART duke përfshirë BaudRate, WordLength, StopBits, Parity dhe Mode. Së fundi, thirrni funksionin e inicializimit API, përfundimi i të cilit tregon përfundimin e procesit të inicializimit. Pas kësaj, përdoruesit mund të vazhdojnë operacionet e shkrimit dhe leximit bazuar në konfigurimin bazë të paracaktuar të UART.
Figura 14. Grafiku i rrjedhës së inicializimit
"UART_Module_Exampkodi i aplikacionit le” demonstron operacionet e leximit dhe shkrimit të API-së në një mënyrë loopback. Grafiku i rrjedhës për këtë është paraqitur në Figurën 15. Funksionet e API-së të përdorura përfshijnë UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() dhe UARTM_GetReadBufferLength(). Përshkrimi i tyre jepet në seksionin "Përshkrimi i API".
Figura 15. Skema e rrjedhës së shkrimit dhe leximit Shembullamples
Ekziston një kod tjetër aplikacioni "UART_Bridge" nën dosjen "Module_UART", i cili lidhet file përshkrimi është paraqitur në seksionin "Struktura e Drejtorisë". Kodi i aplikacionit "UART_Bridge" aktivizon dy kanale UART, UART CH0 dhe UART CH1, dhe më pas personalizon protokollin e komunikimit midis dy pajisjeve UART përmes strukturave COMMAND, gCMD1 dhe gCMD2. Këto janë të përcaktuara në uart_bridge.c, siç tregohet më poshtë. UARTBridge_CMD1TypeDef gCMD1:
E ndryshueshme Emri | Lloji | Përshkrimi |
uHeader | u8 | Kreu |
uCmd | u8 | Komanda |
uData[3] | u8 | Të dhënat |
UARTBridge_CMD2TypeDef gCMD2:
E ndryshueshme Emri | Lloji | Përshkrimi |
uHeader | u8 | Kreu |
uCmdA | u8 | Komanda A |
uCmdB | u8 | Komanda B |
uData[3] | u8 | Të dhënat |
Në kodin e aplikacionit "UART_Bridge", përdorni gCMD1 për të marrë të dhëna si një paketë komande dhe më pas analizoni ato. Më pas, sipas protokollit të personalizuar të komunikimit, vendosni gCMD2 si një paketë përgjigjeje dhe transmetojeni atë. Më poshtë është një ishample të një pakete komande gCMD1) dhe një paketë përgjigjeje (gCMD2). Paketa e komandës (UARTBridge_CMD1TypeDef gCMD1):
Bajt 0 | Bajt 1 | Byte 2 ~ Byte 4 |
uHeader | uCmd | uData [3] |
"A" | "1" | "x, y, z" |
Paketa e përgjigjes (UARTBridge_CMD2TypeDef gCMD2):
Bajt 0 | Bajt 1 | Bajt 2 | Byte 3 ~ Byte 5 |
uHeader | uCmdA | uCmdB | uData [3] |
"B" | "a" | "1" | "x, y, z" |
Profesioni i burimeve
Marrja e HT32F52352 si një ishample, burimet e zëna nga moduli UART tregohen më poshtë.
HT32F52352 | |
Madhësia ROM | 946 byte |
Madhësia RAM | 40*1 + 256*2 Bajt |
Shënim:
- Variablat globale duke përfshirë flamujt dhe statusin për një kanal të vetëm zënë 40 bajt RAM.
- Kjo është për një gjendje ku përdoret një kanal i vetëm dhe madhësia e buferit TX/RX është 128/128 bajt. Madhësia e tamponit mund të vendoset sipas kërkesave të aplikacionit.
Tabela 4. Profesioni i burimit të kodit të aplikimit
- Mjedisi i përpilimit: Përditësimi 5.36 MDK-Arm V5.06, ARMCC V7 (ndërtimi 960)
- Optimizo opsionin: Niveli 2 (-O2)
Udhëzime për përdorim
Ky kapitull do të prezantojë përgatitjen mjedisore për kodin e aplikimit "Module_UART", si dhe hapat e përpilimit dhe testimit.
Përgatitja Mjedisore
Hardueri dhe softueri i kërkuar për kodin e aplikacionit "Module_UART" janë renditur më poshtë.
Tabela 5. Përgatitja Mjedisore e Hardware/Software
Hardware/Software | Numëroni | Shënim |
Kompleti fillestar | 1 | Ky shënim i aplikacionit përdor si ekzemplar kompletin fillestar HT32F52352ample |
Kabllo USB | 1 | Micro USB, i lidhur me PC |
Kodi i Aplikimit | — | Rruga e shkarkimit, file dhe konfigurimi i drejtorisë janë futur në seksionin "Shkarkimi dhe përgatitja e burimeve". Rruga: "\\application\Module_UART\UART_Module_Examp" |
Termi Tera | — | Referojuni seksionit "Software Terminal". |
Keil IDE | — | Keil uVision V5.xx |
Së pari, përdorni kompletin fillestar HT32F52352 të kombinuar me funksionin Virtual COM Port (VCP) të e-Link32 Lite për prezantimin e aplikacionit UART. Kjo kërkon përgatitjen e mëposhtme mjedisore për t'u zbatuar:
- Ka dy ndërfaqe USB në tabelë. Përdorni kabllon USB për të lidhur PC-në dhe ndërfaqen eLink32 Lite në tabelë siç tregohet në Figurën 16-(a).
- Pasi që kodi i aplikacionit duhet të përdorë funksionin e-Link32 Lite Virtual COM Port (VCP), sigurohuni që PAx*2 dhe DAP_Tx të UART Jumper-J2*1 të jenë shkurtuar duke përdorur një kërcyes. Vendndodhja J2 tregohet nga Figura 16-(b).
Shënim
- J2 në Starter Kit ka dy opsione, PAx dhe DAP_Tx të shkurtuar ose PAx dhe RS232_Tx të shkurtuar. Referojuni manualit të përdorimit të Kompletit fillestar për funksionet e detajuara të cilësimeve.
- Vendndodhja e pinit MCU UART RX në komplete të ndryshme fillestare janë të ndryshme. Ky ishample përdor PAx për të treguar pinin RX.
Figura 16. Diagrami i bllokut i kompletit fillestar HT32
Tani përdorni tabelën e synuar të përdoruesit të kombinuar me funksionin Virtual COM Port (VCP) të e-Link32 Pro për prezantimin e aplikacionit UART. Kjo kërkon përgatitjen e mëposhtme mjedisore për t'u zbatuar:
- Njëra anë e e-Link32 Pro është e lidhur me një PC duke përdorur një kabllo Mini USB dhe ana tjetër është e lidhur me tabelën e synuar të përdoruesit përmes kabllos së saj gri 10-bit. Lidhja midis ndërfaqeve SWD të kabllit dhe tabelës së synuar zbatohet duke përdorur linjat Dupont, siç tregohet në Figurën 17-(a).
- Kunjat serike të komunikimit të e-Link32 Pro janë Pin#7 VCOM_RXD dhe Pin#8- VCOM_TXD. Këto duhet të lidhen me kunjat TX dhe RX të tabelës së synuar të përdoruesit, siç tregohet në Figurën 17-(b).
Figura 17. e-Link32 Pro + Diagrami i bllokut të tabelës së synuar të përdoruesit
Përpilimi dhe Testimi
Ky seksion do të marrë "application\Module_UART\UART_Module_Example” si ishample të prezantojë proceset e përpilimit dhe testimit. Përpara kësaj, sigurohuni që të gjitha përgatitjet e përshkruara në seksionin e mëparshëm të jenë zbatuar dhe që softueri i terminalit Tera Term të jetë shkarkuar.
Hapat e detajuar të funksionimit janë përmbledhur më poshtë.
Hapi 1. Testi i ndezjes
Konfiguro mjedisin e harduerit siç përshkruhet në seksionin e mëparshëm. Pas ndezjes, LED-ja e energjisë D9 në pjesën e poshtme të majtë të Kompletit fillestar do të ndizet. LED D1 USB në e-Link32 Lite në pjesën e sipërme djathtas do të ndizet pasi të ketë përfunduar numërimi USB. Nëse D1 nuk ndizet pas një periudhe të gjatë kohore, konfirmoni nëse kablloja USB është në gjendje të komunikojë. Nëse jo, hiqeni atë dhe vendoseni përsëri.
Hapi 2. Gjeneroni një projekt
Hapni aplikacionin\Module_UART\UART_Module_Example dosje, klikoni në _CreateProject.bat file për të gjeneruar një projekt, siç tregohet në figurën 18. Meqenëse ky shënim aplikacioni përdor Kompletin fillestar HT32F52352, hapni projektin Keil IDE “Project_52352.uvprojx” që ndodhet nën dosjen MDK_ARMv5.
Figura 18. Ekzekutoni _CreateProject.bat për të gjeneruar projekt
Hapi 3. Përpiloni dhe programoni
Pasi të jetë hapur projekti, së pari klikoni në "Build" (ose përdorni shkurtoren "F7"), pastaj klikoni në "Shkarko" (ose përdorni shkurtoren "F8"). Pas kësaj, rezultatet e ndërtimit dhe shkarkimit do të shfaqen në dritaren Build Output. Shih Figurën 19.
Figura 19. Rezultatet e ndërtimit dhe shkarkimit
Hapi 4. Hapni softuerin Tera Term dhe konfiguroni portën serike
Hapni softuerin Tera Term dhe portën COM. Kushtojini vëmendje nëse numri i portës COM i krijuar nga Kompleti fillestar është i saktë apo jo. Pastaj klikoni në "Setup >> Serial Port" për të hyrë në ndërfaqen e konfigurimit. Konfigurimi i ndërfaqes UART i kodit të aplikacionit "Module_UART" përshkruhet në seksionin "Software Terminal". Rezultati i konfigurimit tregohet në Figurën 20.
Figura 20. Rezultati i konfigurimit të portës serike Tera Term
Hapi 5. Rivendosni sistemin dhe provoni
Shtypni tastin e rivendosjes SK – B1 Reset. Pas kësaj, një "ABCThis është test!" mesazhi do të jetë
transmetohet përmes API-së dhe do të shfaqet në dritaren Tera Term, siç tregohet në figurën 21. Lidhur me funksionin e pranimit, kur futni të dhëna në dritaren Tera Term, API-ja përkatëse do të përdoret për të përcaktuar gjatësinë e buferit të pranimit. Kur të dhënat e marra nga PC arrijnë 5 bajt, të dhënat e marra 5 bajt do të dërgohen në mënyrë sekuenciale. Siç tregohet në figurën 22, të dhënat e futura në mënyrë sekuenciale janë “1, 2, 3, 4, 5”, të cilat merren dhe përcaktohen përmes API-së. Pas kësaj, të dhënat "1, 2, 3, 4, 5" do të printohen pas pesë hyrjeve.
Figura 21. Testi Funksional i Kodit të Aplikimit “Module_UART” – Transmit
Figura 22. Testi Funksional i Kodit të Aplikimit “Module_UART” – Marrë
Udhëzimet e transplantit
Ky seksion do të prezantojë se si të integrohen API-të në projektet e përdoruesit.
Hapi 1. Shto uart_module.c file në projekt. Klikoni me të djathtën në dosjen User. Zgjidhni "Shto ekzistuese Files te Grupi 'Përdoruesi'…”, më pas zgjidhni uart_module.c file dhe klikoni në "Shto", siç tregohet në figurën 23. Referojuni seksionit "Struktura e drejtorisë" për file përshkrimi i rrugës.
Figura 23. Shto uart_module.c File te Projekti
Hapi 2. Shto ring_buffer.c file në projekt. Klikoni me të djathtën në dosjen User. Zgjidhni "Shto ekzistuese Files te Grupi 'Përdoruesi'…”, më pas zgjidhni ring_buffer.c file dhe klikoni në "Shto", siç tregohet në figurën 24.\ Referojuni seksionit "Struktura e drejtorisë" për file përshkrimi i rrugës.
Figura 24. Shto ring_buffer.c File te Projekti
Hapi 3. Përfshi kokën e API-së file në fillim të main.c, siç tregohet në Figurën 25. (Ext: #include “middleware/uart_module.h”)
Figura 25. Përfshi kokën e API File te kryesore.c
Hapi 4. Zbatoni cilësimet e kërkuara për komunikimin UART duke përdorur ht32_board_config.h file. Kjo është prezantuar në detaje në seksionet "Përshkrimi i cilësimeve" dhe "Modifikimet e cilësimeve dhe pyetjet e shpeshta".
Modifikimi i cilësimeve dhe FAQ
Ky seksion do të prezantojë se si të modifikoni cilësimet e UART dhe do të shpjegojë disa pyetje të zakonshme që hasen gjatë përdorimit.
Ndrysho caktimin e pinit UART
- Duke iu referuar kapitullit të fletës së të dhënave HT32F52352 "Caktimi i pinit", kërkoni tabelën e Hartës së Funksionit Alternativ, e cila rendit funksionet AFIO të llojit të pajisjes. Për kunjat përkatëse UART, referojuni kolonës "AF6 USART/UART", siç tregohet në Figurën 26.
Figura 26. Tabela e hartës së funksionit alternativ HT32F52352
- Ky hap do t'i udhëzojë përdoruesit për të gjetur kunjat përkatëse UART duke përdorur tabelën e mësipërme. HT32F52352 ishample përdor USART1 si kanalin e paracaktuar. Këtu, kunjat TX dhe RX janë USR1_TX dhe USR1_RX dhe janë të vendosura përkatësisht në PA4 dhe PA5. Figura 27 tregon korrespondencën e pinit si dhe përkufizimet e pinit në “ht32_board_config.h”. Fushat bosh të "Paketa" në tabelën e caktimit të pinit do të thotë se nuk ka GPIO përkatëse në këtë paketë. Për të modifikuar kunjat UART, gjeni vendndodhjet e kunjave të synuara dhe ripërcaktoni kunjat duke përdorur "ht32_board_config.h" file.
Figura 27. Korrespondenca e pinit dhe modifikimi i cilësimeve
Shto një kanal UART
Marrja e HT32F52352 HTCFG_UARTM_CH1 si një ishample, këtu përshkruhet se si të shtoni një kanal të ri UART.
Modifiko ht32_board_config.h file
Duke iu referuar kapitullit të fletës së të dhënave HT32F52352 "Caktimi i kunjave", kërkoni tabelën e Hartës së Funksionit Alternativ që liston funksionet AFIO të llojit të pajisjes. Meqenëse USART1 është përdorur si HTCFG_UARTM_CH0, HTCFG_UARTM_CH1 i sapo shtuar mund të zgjedhë USART0. Këtu, kunjat TX dhe RX janë të vendosura përkatësisht në PA2 dhe PA3, siç tregohet në gjysmën e sipërme të figurës 28. Modifikimet përkatëse zbatohen duke përdorur linjat e kodit 120~126 në ht32_board_config.h, siç tregohet nga kutia me pika të kuqe në figurë. 28.
Figura 28. Shtoni një kanal UART
Pyetjet e shpeshta
Q: Në hapin 5 të seksionit Përpilimi dhe Testi, testi funksional i transmetimit është normal. Këtu, "ABCThis është test!" mesazhi është shfaqur me sukses, por për funksionin marrë, pse nuk kthehen dhe shfaqen pesë vlerat hyrëse?
A: Kontrolloni nëse kunjat MCU UART RX dhe DAP_Tx të UART Jumper-J2 janë shkurtuar duke përdorur një kërcyes. Meqenëse kodi i aplikacionit "Module_UART" duhet të përdorë Portin Virtual COM (VCP) të e-Link32 Lite, cilësimi i qarkut të shkurtër duhet të zbatohet në dy kunjat e majta të UART Jumper-J2, siç tregohet në Figurën 29.
Figura 29. Vendosja e UART Jumper-J2
Pyetje: Pas duke ekzekutuar "Build" (ose shkurtore "F7"), shfaqet një mesazh gabimi që tregon se versioni i bibliotekës së firmuerit është më i vjetër se ai që kërkohet? Shih Figurën 30.
A: Zbatimi i kodit të aplikacionit "Module_UART" duhet të përfshijë uart_module.c/h files që ka një kërkesë për një version të caktuar të bibliotekës së firmuerit. Kur shfaqet një mesazh i tillë gabimi, do të thotë se biblioteka e firmuerit të përdorur aktualisht është një version më i vjetër. Prandaj, është e nevojshme të shkarkoni versionin më të ri përmes lidhjes së dhënë në seksionin "Biblioteka e Firmware".
Figura 30. Mesazhi i gabimit të versionit të bibliotekës së firmuerit
konkluzioni
Ky dokument ka ofruar një hyrje bazë për të ndihmuar përdoruesit të kuptojnë më mirë kodin e aplikacionit "Module_UART" dhe protokollin e komunikimit UART. Kjo u pasua nga shkarkimi dhe përgatitja e burimit. Kapitulli i Përshkrimi Funksional prezantoi file struktura e drejtorisë, arkitektura API, përshkrimi i API dhe përdorimi i API p.shamples. Kapitulli i udhëzimeve për përdorim demonstroi përgatitjen mjedisore, përpilimin dhe testimin e kodit të aplikimit "Module_UART". Ai gjithashtu ofroi udhëzime për vendosjen e transplantimit dhe modifikimit të kodit, si dhe shpjegoi disa probleme të zakonshme që mund të hasen. E gjithë kjo e kombinuar do t'i lejojë përdoruesit të kuptojnë shpejt se si të përdorin API-të dhe më pas të zvogëlojnë sasinë e kohës për të filluar.
Materiali referues
Për më shumë informacion, referojuni Holtek webfaqja: www.holtek.com
Versionet dhe informacionet e modifikimit
Data | Autori | Lirimi | Informacioni i modifikimit |
2022.04.30 | 蔡期育 (Chi-Yu Tsai) | V1.00 | Versioni i Parë |
Mohim përgjegjësie
Të gjitha informacionet, markat tregtare, logot, grafika, videot, klipet audio, lidhjet dhe artikujt e tjerë që shfaqen në këtë websajti ("Informacioni") janë vetëm për referencë dhe mund të ndryshohet në çdo kohë pa njoftim paraprak dhe sipas gjykimit të Holtek Semiconductor Inc. dhe kompanive të lidhura me të (më tej "Holtek", "kompania", "ne", " ne' ose 'tona'). Ndërsa Holtek përpiqet të sigurojë saktësinë e Informacionit për këtë webfaqe, asnjë garanci e shprehur ose e nënkuptuar nuk jepet nga Holtek për saktësinë e Informacionit. Holtek nuk mban asnjë përgjegjësi për çdo pasaktësi ose rrjedhje.
Holtek nuk do të jetë përgjegjës për asnjë dëmtim (përfshirë por pa u kufizuar në virusin kompjuterik, problemet e sistemit ose humbjen e të dhënave) çfarëdo që lind nga përdorimi ose në lidhje me përdorimin e këtij webfaqe nga çdo palë. Mund të ketë lidhje në këtë zonë, të cilat ju lejojnë të vizitoni webfaqet e kompanive të tjera.
Këto webfaqet nuk kontrollohen nga Holtek. Holtek nuk do të mbajë asnjë përgjegjësi dhe asnjë garanci për çfarëdo informacioni të shfaqur në faqe të tilla. Hiperlidhje me të tjerët webfaqet janë në rrezikun tuaj.
Kufizimi i Përgjegjësisë
Në asnjë rast Holtek Limited nuk do të jetë përgjegjës ndaj ndonjë pale tjetër për ndonjë humbje ose dëmtim të çfarëdolloj ose çfarëdo qoftë të shkaktuar në mënyrë të drejtpërdrejtë ose të tërthortë në lidhje me aksesin tuaj ose përdorimin e kësaj webfaqe, përmbajtjen në të ose ndonjë mall, material ose shërbim.
Ligji qeverisës
Mohimi i përgjegjësisë i përfshirë në webfaqja do të drejtohet dhe interpretohet në përputhje me ligjet e Republikës së Kinës. Përdoruesit do t'i nënshtrohen juridiksionit joekskluzive të gjykatave të Republikës së Kinës.
Përditësimi i mohimit
Holtek rezervon të drejtën të përditësojë Mohimin e përgjegjësisë në çdo kohë me ose pa njoftim paraprak, të gjitha ndryshimet hyjnë në fuqi menjëherë pas postimit në webfaqe.
Dokumentet / Burimet
![]() |
Shënim i aplikimit HOLTEK HT32 MCU UART [pdf] Manuali i Përdoruesit HT32 MCU, UART Shënim i Aplikimit, HT32 MCU UART, Shënim i Aplikimit, HT32, MCU UART Shënim i Aplikimit, HT32 MCU UART Shënim i Aplikimit |