HOLTEK HT32 MCU UART Application Note Brugervejledning
Indledning
Den universelle asynkrone modtager/sender – UART er en meget brugt seriel transmissionsgrænseflade, der giver fleksibel asynkron fuld-dupleks datatransmission. "Module_UART"-applikationskoden, der er angivet i denne applikationsnote, bruger TX/RX-afbrydelser med softwareringbuffere til at implementere simple UART-transmissions-/modtagefunktioner gennem API'er, hvis relaterede funktioner er beskrevet nedenfor. Dette vil forenkle hele datatransmissionsprocessen og give brugerne mulighed for hurtigt at forstå og implementere UART kommunikationsapplikationer.
- Sende/modtage funktioner: byte læsning, byte skrivning, buffer læsning, buffer skrivning osv.
- Statusfunktioner: Hent bufferlængden, TX-status osv.
Dette dokument vil først introducere UART-kommunikationsprotokollen, som vil hjælpe brugerne til bedre at forstå UART-kommunikationen fra princip til applikation. Dette efterfølges af download og forberedelse af de ressourcer, der kræves til applikationskoden, inklusive firmwarebiblioteket, applikationskodedownload, file og bibliotekskonfiguration samt en introduktion til terminalsoftwareværktøjet, der bruges i applikationsnotatet. I kapitlet Funktionel beskrivelse vil applikationskodebiblioteksstrukturen, parameterindstillinger og API-beskrivelse blive introduceret. API-brugen vil blive beskrevet ved hjælp af "Module_UART"-applikationskoden, og det Flash/RAM-ressourceforbrug, der kræves til API'erne, vil også blive vist. Kapitlet Brugsanvisning vil guide brugeren gennem trinnene med miljømæssig forberedelse, kompilering og test for at bekræfte, at applikationskoden fungerer korrekt. Det vil derefter give instruktioner, der forklarer, hvordan man integrerer API'erne i brugerens projekter og til sidst give en reference for ændringer og almindelige problemer, der kan opstå.
Anvendte forkortelser:
- UART: Universal asynkron modtager/sender
- API: Applikationsprogrammeringsgrænseflade
- LSB: Mindst signifikant Bit
- MSB: Vigtigste bit
- PC: Personlig computer
- SK: Startsæt, HT32 udviklingskort
- IDE: Integreret udviklingsmiljø
UART kommunikationsprotokol
UART er en seriel kommunikationstype interface, der implementerer parallel-til-seriel datakonvertering ved sin sender og derefter kommunikerer serielt med en lignende modtager. Modtageren udfører derefter en seriel-til-parallel datakonvertering efter datamodtagelse. Figur 1 viser et skematisk diagram af seriel kommunikation, der viser, hvordan dataene overføres i bitvis rækkefølge. For tovejskommunikation mellem sender og modtager kræves der derfor kun to ledninger, TX og RX, for at overføre data serielt mellem hinanden. TX er den pin, hvorpå UART transmitterer de serielle data og er forbundet til modtagerens RX pin. Derfor skal sender- og modtagerenhederne krydsforbinde deres TX- og RX-ben for at udføre UART-tovejskommunikation, som vist i Figur 2.
Figur 1. Seriel kommunikationsdiagram
Figur 2. UART-kredsløbsdiagram
Under UART seriel kommunikation er datatransmission asynkron. Det betyder, at der ikke er noget ur eller andet synkroniseringssignal mellem sender og modtager. Her bruges en baudrate, som er den serielle datatransmissions-/modtagehastighed, og som er indstillet af begge sider forud for dataoverførsler. Derudover tilføjes specielle bits såsom start- og stopbits til begyndelsen og slutningen af datapakken for at danne en komplet UART-datapakke. Figur 3 viser UART-datapakkestrukturen, mens figur 4 viser en UART 8-bit datapakke uden en paritetsbit.
Figur 3. UART-datapakkestruktur
Figur 4. UART 8-bit datapakkeformat
Hver del af UART-datapakken introduceres i rækkefølge nedenfor.
- Start bit: Dette angiver starten på en datapakke. UART TX-stiften forbliver normalt på et højt logisk niveau, før transmissionen starter. Hvis datatransmission starter, vil UART-senderen trække TX-stiften fra høj til lav, dvs. fra 1 til 0, og derefter holde den der i én clock-cyklus. UART-modtageren vil begynde at læse data, når en høj til lav overgang er blevet detekteret på RX-stiften.
- Data: Dette er de faktiske data, der overføres, med en datalængde på 7, 8 eller 9 bit. Dataene overføres normalt med LSB først.
- Paritetsbit: Antallet af logisk "1" i dataene bruges til at bestemme, om nogen data har ændret sig under transmissionen. For lige paritet skal det samlede antal logiske "1" i dataene være et lige tal, omvendt skal det samlede antal logiske "1" i dataene være et ulige tal for ulige paritet.
- Stop Bit: Dette angiver slutningen af en datapakke, hvor UART-senderen vil trække TX-stiften fra lav til høj, dvs. fra 0 til 1, og derefter holde den der i en 1 eller 2-bit periode.
Som nævnt før, da der ikke er noget clocksignal i UART-kredsløbet, skal den samme serielle datatransmissions-/modtagelseshastighed, som er kendt som baudraten, defineres mellem sender og modtager for at implementere fejlfri transmission. Baudraten er defineret af antallet af bits, der overføres pr. sekund, i bps (bit pr. sekund). Nogle standard og almindeligt anvendte baudhastigheder er 4800bps, 9600bps, 19200bps, 115200bps osv. Den tilsvarende tid, der kræves for at overføre en enkelt databit, er vist nedenfor.
Tabel 1. Baud-hastighed vs. 1-bit transmissionstid
Baud rate | 1-bit transmission Tid |
4800 bps | 208.33 µs |
9600 bps | 104.16 µs |
19200 bps | 52.08 µs |
115200 bps | 8.68 µs |
Download og forberedelse af ressourcer
Dette kapitel vil introducere applikationskoden og det anvendte softwareværktøj, samt hvordan man konfigurerer biblioteket og file sti.
Firmware bibliotek
Først skal du sikre dig, at Holtek HT32-firmwarebiblioteket er blevet downloadet, før du bruger applikationskoden. Downloadlinket er vist nedenfor. Her er der to muligheder, HT32_M0p_Vyyyymmdd.zip for HT32F5xxxx-serien og HT32_M3_Vyyyymmdd.zip for HT32F1xxxx-serien. Download og pak den ønskede ud file.
Lynlåsen file indeholder flere mapper, der kan klassificeres som dokument, firmwarebibliotek, værktøjer og andre elementer, hvis placeringssti er vist i figur 5. HT32 firmwarebibliotekets zip file med en file navnet på HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip er placeret under mappen Firmware_Library.
Figur 5. HT32_M0p_Vyyyymmdd.zip Indhold
Ansøgningskode
Download applikationskoden fra følgende link. Ansøgningskoden er pakket ind i en zip file med en file navn på HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Se Figur 6 for file navnekonventioner.
Figur 6. Anvendelseskode File Navn Introduktion
Download link: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File og Directory Configuration
Da applikationskoden ikke indeholder HT32 firmwarebiblioteket files, applikationskoden og firmwarebiblioteket udpakket files skal placeres i den korrekte sti, før du starter kompileringen. Applikationskodens postnummer file indeholder normalt en eller flere mapper, såsom applikation og bibliotek, som vist i figur 7. Placer applikationsmappen under HT32 firmwarebibliotekets rodmappe for at fuldføre file stikonfiguration, som vist i figur 8. Alternativt kan du udpakke applikationskoden og HT32-firmwarebiblioteket samtidigt i den samme sti for at opnå de samme konfigurationsresultater.
Figur 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Indhold
Figur 8. Dekompressionssti
Terminal software
Applikationskoden kan overføre meddelelser gennem COM-porten for at implementere funktionsvalg eller statusvisning. Dette kræver, at værtssiden har terminalsoftwaren installeret på forhånd. Brugere kan vælge passende tilslutningssoftware eller bruge gratis licenseret software såsom Tera Term. I applikationskoden er UART-kanalen konfigureret med en ordlængde på 8-bit, ingen paritet, 1 stopbit og en baudrate på 115200bps.
Funktionsbeskrivelse
Dette kapitel vil give en funktionel beskrivelse af applikationskoden, herunder oplysninger om mappestrukturen, API-arkitektur, indstillingsbeskrivelse osv.
Katalogstruktur
Ansøgningskoden file indeholder en applikationsmappe. Det næste lag er mappen "Module_UART", som indeholder to applikationsprogrammer, "UART_Module_Example" og "UART_Bridge". Det relevante files er anført og beskrevet nedenfor.
Tabel 2. Programkodeindeksstruktur
Mappe / File Navn | Beskrivelse |
\\applikation\Module_UART\UART_Module_Example*1 | |
_CreateProject.bat | Batch-scripts til oprettelse af projekt files |
_ProjectSource.ini | Initialisering file for at tilføje kildekode til projekter |
ht32_board_config.h | Opsætning file relateret til IC perifer I/O-tildeling |
ht32fxxxxx_01_it.c | Afbryd serviceprogram file |
hoved.c | Hovedprogrammets kildekode |
\\applikation\Module_UART\UART_Bridge*2 | |
_CreateProject.bat | Batch-scripts til oprettelse af projekt files |
_ProjectSource.ini | Initialisering file for at tilføje kildekode til projekter |
ht32_board_config.h | Opsætning file relateret til IC perifer I/O-tildeling |
ht32fxxxxx_01_it.c | Afbryd serviceprogram file |
hoved.c | Kildekoden til hovedprogrammet |
uart_bridge.h uart_bridge.c | UART brohoved file og kildekode file |
\\utilities\middleware | |
uart_module.h*3 uart_module.c*3 | API-header file og kildekode file |
\\hjælpeprogrammer\fælles | |
ringbuffer.h ring_buffer.c | Software ring buffer header file og kildekode file |
Note:
- I "UART_Module_Example" applikationskode, API-læse- og skriveoperationerne udføres på en loopback-måde, se "API Usage Ex.amples" sektion for flere detaljer.
- I "UART_Bridge"-applikationskoden aktiveres to UART-kanaler, UART CH0 og UART CH1, og tilpasset kommunikationsprotokol gennem COMMAND-strukturerne implementeres mellem de to UART-enheder. For mere information henvises til "API Usage Examples" sektionen.
- Applikationskoden skal bruge uart_module.c/h files som har et krav til firmwarebiblioteksversion. Kravet kan ændre sig fra tid til anden i henhold til opdateringen. For at bekræfte det aktuelle krav til firmwarebibliotekets version, se indholdet af afhængighedstjek ved at søge efter søgeordet "Afhængighedstjek" i main.c file. Hvis firmwarebiblioteksversionen ikke opfylder kravene, skal du downloade den nyeste version fra linket i afsnittet "Firmwarebibliotek".
API arkitektur
Hver API har en vigtig parameter CH, som er UART-kanalen. Dette bestemmer, hvilken UART-kanal, der skal styres. I øjeblikket understøttes op til fire UART-kanaler, og derfor er fire konstante symboler defineret som følger. Disse bruges som parameter CH, der giver API'erne grundlaget for kontrol.
- UARTM_CH0: inputparameter – styr eller konfigurer UART CH0
- UARTM_CH1: inputparameter – styr eller konfigurer UART CH1
- UARTM_CH2: inputparameter – styr eller konfigurer UART CH2
- UARTM_CH3: inputparameter – styr eller konfigurer UART CH3
Hukommelsesplads vil ikke blive spildt, hvis der kun bruges én UART-kanal. Dette skyldes, at antallet af de understøttede UART-kanaler kan indstilles, og den ubrugte UART-kanalkode vil blive fjernet af præprocessoren for at øge tilgængelig hukommelsesplads. API-arkitekturen er vist i Figur 9.
Figur 9. API-arkitekturblokdiagram
Hver API er sammensat af fire grupper af UART-kanalrelaterede indstillinger eller kontroller, så brugerne kun behøver at indtaste den ønskede CH-parameter. For at konfigurere den relevante API er det kun nødvendigt at have en ekstra UART grundlæggende konfigurationsparametertabel med strukturformularen, USART_InitTypeDef. API'en implementerer den grundlæggende UART-konfiguration i henhold til parameterindholdet i tabellen. Se afsnittet "API-beskrivelse" for UART-grundlæggende konfigurationsstrukturtabellen.
Uart_module.c/.h files indeholder kun interrupt (CHx_IRQ) og statustabellen (CHx Status) for hver UART-kanal, mens alle de nødvendige indstillinger til UART-kommunikation leveres af ht32_board_config.h. De hardwarerelevante parametre i ht32_board_config.h file er vist i tabellen nedenfor. Flere detaljer findes i afsnittet "Indstillingsbeskrivelse".
De hardwarerelevante parametre i ht32_board_config.h inkluderer I/O-indstillinger og fysiske UART-portindstillinger som følger.
Tabel 3. Definition Symboler i ht32_board_config.h
Symbol | Beskrivelse |
HTCFG_UARTM_CH0 | Fysisk UART-portnavn; Eksample: UART0, UART1... |
HTCFG_UARTM0_TX_GPIO_PORT | Definerer portnavnet på TX for CH0; Eksample: A, B, C... |
HTCFG_UARTM0_TX_GPIO_PIN | Definerer pin-nummeret for TX for CH0; Eksample: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Definerer portnavnet på RX for CH0; Eksample: A, B, C... |
HTCFG_UARTM0_RX_GPIO_PIN | Definerer pin-nummeret for TX for CH0; Eksample: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Definerer TX-bufferstørrelsen for CH0; Eksampaf: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Definerer RX-bufferstørrelsen for CH0; Eksampaf: 128 |
For at ændre UART-kanalens AFIO-konfiguration henvises til det relevante enhedsdatablad. I øjeblikket er det kun I/O-definitionerne for UART CH0, der træder i kraft, da kun UART CH0 er blevet konfigureret i ht32_board_config.h. For at tilføje UART CH1~3 skal deres I/O-definitioner udfyldes ved at henvise til UART CH0-definitionen eller henvise til afsnittet "Indstillingsændringer og ofte stillede spørgsmål".
Der er tre hovedfunktioner i API-arkitekturen:
- Op til fire UART-kanaler understøttes. Deres inputparametre er UARTM_CH0, UARTM_CH1, UARTM_CH2 og UARTM_CH3.
- Antallet af UART-kanaler kan indstilles, og ubrugte kanaler vil ikke reducere tilgængelig hukommelsesplads.
- Alle UART-indstillinger og I/O-definitioner er fuldstændig adskilt fra API'erne. Dette øger administrationskomforten ved at indstille værdier og reducerer muligheden for forkerte eller manglende indstillinger.
Indstillingsbeskrivelse
Dette afsnit introducerer parameterindstillingerne i ht32_board_config.h og uart_module.h files.
- ht32_board_config.h: Dette file bruges til pindefinitioner og relevante indstillinger for udviklingskort, som inkluderer UART IP-kanalen (UART0, UART1, USART0...), der bruges af Starter Kit (SK), tilsvarende TX/RX-pinplaceringer og TX/RX-bufferstørrelse. Figur 10 viser indstillingsindholdet i HT32F52352 Starter Kit. Afhængigt af den funktionelle integration af udviklingen, kan brugere henvise til afsnittet "Pin Assignment" i databladet for den brugte enhed for at implementere pindefinitionerne. Flere detaljer om indstillingsændringer vil blive beskrevet i afsnittet "Ændring af indstillinger og ofte stillede spørgsmål".
Figur 10. ht32_board_config.h Indstillinger (HT32F52352)
- uart_module.h: Dette er API-headeren file bruges af applikationskoden, som inkluderer de relevante standardindstillinger, funktionsdefinitioner osv. Som vist i figur 11 kan standardindstillingernes indhold overskrives af eksterne konfigurationer, såsom indstillingerne i ht32_board_config.h file.
Figur 11. Standardindstillinger i uart_module.h
API-beskrivelse
- Beskrivelse af applikationskodedatatype.
- USART_InitTypeDef
Dette er UART grundlæggende konfigurationsstruktur, som er sammensat af BaudRate, WordLength, StopBits, Paritet og Mode konfigurationer, som vist nedenfor.Variabel Navn Type Beskrivelse USART_BaudRate u32 UART kommunikations baudrate USART_WordLength u16 UART kommunikationsordlængde: 7, 8 eller 9 bit USART_StopBits u16 UART kommunikation stop bit længde: 1 eller 2 bit USART_Paritet u16 UART kommunikationsparitet: lige, ulige, mærke, mellemrum eller ingen paritet USART_Mode u16 UART kommunikationstilstand; API'erne understøtter kun normal tilstand
- USART_InitTypeDef
- Før du bruger API-funktionerne, skal du fuldføre den grundlæggende UART-konfiguration i hovedprogrammet. Den grundlæggende UART-konfiguration for denne applikationskode er vist i figur 12. Her er baudhastigheden 115200bps, ordlængden er 8-bit, stopbitlængden er 1-bit, og der er ingen paritet.
Figur 12. UART Basic Configuration
- Figur 13 viser API-funktionerne erklæret i uart_module.h file. Følgende tabeller forklarer funktionen, inputparametrene og brugen af API-funktionerne.
Figur 13. API-funktionserklæringer i uart_module.h
Navn | void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Fungere | UART-modulinitialisering | |
Input | CH | UART kanal |
pUART_Init | UART grundlæggende konfiguration struktur pointer | |
uRxTimeOutValue | UART RX FIFO timeout værdi. Når RX FIFO modtager nye data, nulstilles tælleren og genstartes. Når tælleren når den forudindstillede timeout-værdi, og den tilsvarende time-out-afbrydelse er blevet aktiveret, vil der blive genereret en time-out-afbrydelse. | |
Brug | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Udfør grundlæggende UART-konfiguration//Se figur 12 for USART_InitStructure-konfiguration |
Navn | u32 UARTM_WriteByte(u32 CH, u8 uData) | |
Fungere | UART modul skrive byte operation (TX) | |
Input | CH | UART kanal |
uData | De data, der skal skrives | |
Produktion | SUCCES | Vellykket |
FEJL | Mislykkedes | |
Brug | UARTM_WriteByte(UARTM_CH0, 'A'); //UART skriver 1 byte – 'A' |
Navn | u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLængde) | |
Fungere | UART-modul skriveoperation (TX) | |
Input | CH | UART kanal |
pBuffer | Buffer pointer | |
uLængde | Længden af de data, der skal skrives | |
Produktion | SUCCES | Vellykket |
FEJL | Mislykkedes | |
Brug | u8 Test[] = “Dette er test!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART skriver pBuffer-data |
Navn | u32 UARTM_ReadByte(u32 CH, u8 *pData) | |
Fungere | UART modul læse byte operation (RX) | |
Input | CH | UART kanal |
pData | Adressen til at placere de læste data | |
Produktion | SUCCES | Vellykket |
FEJL | Mislykkedes (ingen data) | |
Brug | u8 TempData; hvis (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//Hvis UARTM_ReadByte() returnerer SUCCESS, så skriver UART denne databyte |
Navn | u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLængde) | |
Fungere | UART-modulets læseoperation (RX) | |
Input | CH | UART kanal |
pBuffer | Buffer pointer | |
uLængde | Længden af de data, der skal læses | |
Produktion | Læs tæller | Længden af data er blevet læst |
Brug | u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() læser 5 bytes data og gemmer data i Test2 og tildeler antallet af læste byte til Len//Skriv dataene fra Test2 |
Navn | u32 UARTM_GetReadBufferLength(u32 CH) | |
Fungere | Få læst bufferlængde (RX) | |
Input | CH | UART kanal |
Produktion | uLængde | Læs bufferlængde |
Brug | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART-modulinitialisering while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Vent indtil UARTM_ReadBuffer har modtaget 5 bytes data |
Navn | u32 UARTM_GetWriteBufferLength(u32 CH) | |
Fungere | Få skrivebufferlængden (TX) | |
Input | CH | UART kanal |
Produktion | uLængde | Skriv bufferlængde |
Navn | u8 UARTM_IsTxFinished(u32 CH) | |
Fungere | Få TX-status | |
Input | CH | UART kanal |
Produktion | ÆGTE | TX status: afsluttet |
FALSK | TX status: ikke færdig | |
Brug | UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSK) #elsewhile (1) #endif //Denne API kan bruges til at kontrollere TX status, som vist ovenfor; vent, indtil UARTM_WriteByte() API er færdig, dvs. TX-status er TRUE, og fortsæt derefter de efterfølgende handlinger.//Der tilføjes en begrænsning, fordi denne funktion ikke er blevet tilføjet, før SVN-versionsnummeret i uart_module.c er 525. |
Navn | ugyldig UARTM_DiscardReadBuffer(u32 CH) | |
Fungere | Kassér dataene i læsebufferen | |
Input | CH | UART kanal |
API-brug Eksamples
Dette afsnit vil demonstrere API skrive og læse exampfiler af "Module_UART" applikationskoden ved hjælp af initialiseringsprocessen og "UART_Module_Example” ansøgningskodeproces. Før du bruger API'erne, skal brugerne inkludere API-headeren file ind i programmets hovedkildekode file (#include "middleware/uart_module.h").
Som vist i figur 14, når du går ind i initialiseringsprocessen, skal du først definere den grundlæggende UART-konfigurationsstruktur. Konfigurer derefter UARTs grundlæggende konfigurationsstrukturmedlemmer inklusive BaudRate, WordLength, StopBits, Parity og Mode. Til sidst skal du kalde API-initieringsfunktionen, hvis afslutning angiver slutningen af initialiseringsprocessen. Herefter kan brugere fortsætte skrive- og læseoperationerne baseret på den forudindstillede UART-grundkonfiguration.
Figur 14. Initialisering Flowchart
"UART_Module_Example"-applikationskoden demonstrerer API-læse- og skriveoperationerne på en loopback-måde. Rutediagrammet for dette er vist i figur 15. De anvendte API-funktioner inkluderer UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() og UARTM_GetReadBufferLength(). Deres beskrivelse findes i afsnittet "API-beskrivelse".
Figur 15. Flowchart over Skriv og Læs Examples
Der er en anden "UART_Bridge" applikationskode under mappen "Module_UART", hvis relaterede file beskrivelse er introduceret i afsnittet "Katalogstruktur". "UART_Bridge"-applikationskoden aktiverer to UART-kanaler, UART CH0 og UART CH1, og tilpasser derefter kommunikationsprotokollen mellem de to UART-enheder gennem COMMAND-strukturer, gCMD1 og gCMD2. Disse er defineret i uart_bridge.c, som vist nedenfor. UARTBridge_CMD1TypeDef gCMD1:
Variabel Navn | Type | Beskrivelse |
uHeader | u8 | Overskrift |
uCmd | u8 | Kommando |
uData[3] | u8 | Data |
UARTBridge_CMD2TypeDef gCMD2:
Variabel Navn | Type | Beskrivelse |
uHeader | u8 | Overskrift |
uCmdA | u8 | Kommando A |
uCmdB | u8 | Kommando B |
uData[3] | u8 | Data |
I applikationskoden "UART_Bridge" skal du bruge gCMD1 til at modtage data som en kommandopakke og derefter analysere dem. Indstil derefter gCMD2 som en svarpakke i henhold til den tilpassede kommunikationsprotokol og send den. Følgende er en example af en kommandopakke gCMD1) og en svarpakke (gCMD2). Kommandopakke (UARTBridge_CMD1TypeDef gCMD1):
bytes 0 | bytes 1 | Byte 2 ~ Byte 4 |
uHeader | uCmd | uData [3] |
"EN" | "1" | "x, y, z" |
Svarpakke (UARTBridge_CMD2TypeDef gCMD2):
bytes 0 | bytes 1 | bytes 2 | Byte 3 ~ Byte 5 |
uHeader | uCmdA | uCmdB | uData [3] |
"B" | "en" | "1" | "x, y, z" |
Ressourcebesættelse
Tager HT32F52352 som et example, de ressourcer, der er optaget af UART-modulet, er vist nedenfor.
HT32F52352 | |
ROM størrelse | 946 bytes |
RAM størrelse | 40*1 + 256*2 Bytes |
Note:
- Globale variabler inklusive flag og status for en enkelt kanal optager 40 bytes RAM.
- Dette er for en tilstand, hvor en enkelt kanal bruges, og TX/RX-bufferstørrelsen er 128/128 bytes. Bufferstørrelsen kan indstilles i henhold til applikationskravene.
Tabel 4. Ansøgningskode ressourcebesættelse
- Kompileringsmiljø: MDK-Arm V5.36, ARMCC V5.06 opdatering 7 (build 960)
- Optimeringsmulighed: Niveau 2 (-O2)
Brugsanvisning
Dette kapitel vil introducere miljøforberedelsen til "Module_UART"-applikationskoden samt kompilerings- og testtrinene.
Miljøforberedelse
Den hardware og software, der kræves til "Module_UART"-applikationskoden, er angivet nedenfor.
Tabel 5. Hardware/Software Miljøforberedelse
Hardware/Software | Tælle | Note |
Startsæt | 1 | Denne applikationsnote bruger HT32F52352 Starter Kit som et example |
USB kabel | 1 | Micro USB, tilsluttet pc |
Ansøgningskode | — | Downloadstien, file og mappekonfiguration er introduceret i afsnittet "Resource Download og Forberedelse". Sti: "\\application\Module_UART\UART_Module_Exampdet" |
Tera Term | — | Se afsnittet "Terminalsoftware". |
Keil IDE | — | Keil uVision V5.xx |
Brug først HT32F52352 Starter Kit kombineret med funktionen Virtual COM Port (VCP) i e-Link32 Lite til introduktion af UART-applikationen. Dette kræver, at følgende miljøforberedelse implementeres:
- Der er to USB-grænseflader på kortet. Brug USB-kablet til at forbinde pc'en og eLink32 Lite-grænsefladen på kortet som vist i figur 16-(a).
- Da applikationskoden skal bruge funktionen e-Link32 Lite Virtual COM Port (VCP), skal du sikre dig, at PAx*2 og DAP_Tx af UART Jumper-J2*1 er blevet kortsluttet ved hjælp af en jumper. J2-placeringen er angivet i figur 16-(b).
Note
- J2 på startsættet har to muligheder, PAx og DAP_Tx kortsluttet eller PAx og RS232_Tx kortsluttet. Se brugervejledningen til startsættet for detaljerede indstillingsfunktioner.
- MCU UART RX-stiftplaceringen på forskellige startsæt er forskellig. Denne example bruger PAx til at angive RX-stiften.
Figur 16. Blokdiagram HT32 Starter Kit
Brug nu brugermålkortet kombineret med funktionen Virtual COM Port (VCP) på e-Link32 Pro til introduktion af UART-applikationen. Dette kræver, at følgende miljøforberedelse implementeres:
- Den ene side af e-Link32 Pro er forbundet til en pc ved hjælp af et mini-USB-kabel, og den anden side er forbundet til brugermålkortet via dets 10-bit grå kabel. Forbindelsen mellem kablets og målkortets SWD-grænseflader er implementeret ved hjælp af Dupont-linjer, som vist i figur 17-(a).
- De serielle kommunikationsben på e-Link32 Pro er Pin#7 VCOM_RXD og Pin#8-VCOM_TXD. Disse skal forbindes til TX- og RX-benene på brugermålkortet, som vist i figur 17-(b).
Figur 17. Blokdiagram af e-Link32 Pro + brugermåltavle
Kompilering og test
Dette afsnit vil tage "application\Module_UART\UART_Module_Example” som example at introducere kompilerings- og testprocesserne. Før dette skal du sikre dig, at alle forberedelserne beskrevet i det foregående afsnit er implementeret, og at Tera Term terminalsoftwaren er blevet downloadet.
De detaljerede operationstrin er opsummeret nedenfor.
Trin 1. Power-on test
Konfigurer hardwaremiljøet som beskrevet i det foregående afsnit. Efter tænding vil D9-strøm-LED'en nederst til venstre på startsættet være tændt. D1 USB-LED'en på e-Link32 Lite øverst til højre vil lyse, efter at USB-opregningen er fuldført. Hvis D1 ikke lyser efter en længere periode, skal du kontrollere, om USB-kablet er i stand til at kommunikere. Hvis ikke, så fjern den og indsæt den igen.
Trin 2. Generer et projekt
Åbn applikationen\Module_UART\UART_Module_ExampI mappen skal du klikke på _CreateProject.bat file for at generere et projekt, som vist i figur 18. Da denne applikationsnote bruger HT32F52352 Starter Kit, skal du åbne Keil IDE-projektet “Project_52352.uvprojx” placeret under MDK_ARMv5-mappen.
Figur 18. Udfør _CreateProject.bat for at generere projekt
Trin 3. Kompiler og programmer
Når projektet er åbnet, skal du først klikke på "Byg" (eller brug genvejen "F7"), klik derefter på "Download" (eller brug genvejen "F8"). Herefter vil build- og downloadresultaterne blive vist i vinduet Build Output. Se figur 19.
Figur 19. Byg og download resultater
Trin 4. Åbn Tera Term-softwaren og konfigurer den serielle port
Åbn Tera Term-softwaren og COM-porten. Vær opmærksom på, om COM-portnummeret, der genereres af Starter Kit, er korrekt eller ej. Klik derefter på "Opsætning >> Seriel port" for at gå ind i konfigurationsgrænsefladen. UART-grænsefladekonfigurationen af "Module_UART"-applikationskoden er beskrevet i afsnittet "Terminalsoftware". Opsætningsresultatet er vist i figur 20.
Figur 20. Resultat af opsætning af Tera Term seriel port
Trin 5. Nulstil systemet og test
Tryk på SK reset-tasten – B1 Reset. Efter dette, en "ABCThis is test!" besked vil være
transmitteret gennem API'et og vil blive vist i Tera Term-vinduet, som vist i Figur 21. Med hensyn til modtagefunktionen, når data indtastes i Tera Term-vinduet, vil den relevante API blive brugt til at bestemme modtagebufferlængden. Når data modtaget af pc'en når 5 bytes, vil de modtagne 5 bytes data blive sendt ud sekventielt. Som vist i figur 22 er de sekventielt indtastede data "1, 2, 3, 4, 5", som modtages og bestemmes gennem API'et. Herefter udskrives data "1, 2, 3, 4, 5" efter de fem input.
Figur 21. "Module_UART" Funktionstest af applikationskode – Send
Figur 22. "Module_UART" Funktionstest for applikationskode – Modtag
Transplantationsinstruktioner
Dette afsnit vil introducere, hvordan man integrerer API'erne i brugerens projekter.
Trin 1. Tilføj uart_module.c file ind i projektet. Højreklik på brugermappen. Vælg "Tilføj eksisterende Files til Group 'User'...", vælg derefter uart_module.c file og klik på "Tilføj", som vist i figur 23. Se afsnittet "Kappestruktur" for file vejbeskrivelse.
Figur 23. Tilføj uart_module.c File til projekt
Trin 2. Tilføj ring_buffer.c file ind i projektet. Højreklik på brugermappen. Vælg "Tilføj eksisterende Files til Group 'User'...", vælg derefter ring_buffer.c file og klik på "Tilføj", som vist i figur 24.\ Se afsnittet "Bibliotekstruktur" for file vejbeskrivelse.
Figur 24. Tilføj ring_buffer.c File til projekt
Trin 3. Inkluder API-headeren file ind i begyndelsen af main.c, som vist i figur 25. (Ext: #include “middleware/uart_module.h”)
Figur 25. Inkluder API-header File til hoved.c
Trin 4. Implementer de nødvendige indstillinger for UART-kommunikationen ved hjælp af ht32_board_config.h file. Dette er introduceret i detaljer i afsnittene "Indstillingsbeskrivelse" og "Ændring af indstillinger og ofte stillede spørgsmål".
Indstillingsændringer og ofte stillede spørgsmål
Dette afsnit introducerer, hvordan du ændrer UART-indstillingerne, og forklarer nogle almindelige spørgsmål, der opstår under brug.
Skift UART-pintildeling
- Med henvisning til HT32F52352-dataarket "Pin Assignment"-kapitlet, slå op i tabellen med alternativ funktionsmapping, som viser AFIO-funktionerne for enhedstypen. For de UART-relevante stifter henvises til kolonnen "AF6 USART/UART", som vist i figur 26.
Figur 26. HT32F52352 Alternativ funktionskortlægningstabel
- Dette trin vil guide brugerne til at finde de tilsvarende UART-ben ved hjælp af ovenstående tabel. HT32F52352 example bruger USART1 som standardkanal. Her er TX- og RX-benene USR1_TX og USR1_RX og er placeret på henholdsvis PA4 og PA5. Figur 27 viser pin-korrespondancen såvel som pin-definitionerne i "ht32_board_config.h". De tomme felter i "Package" i pin-tildelingstabellen betyder, at der ikke er nogen relevante GPIO'er i denne pakke. For at ændre UART-stifterne skal du finde målstiftsplaceringerne og omdefinere stifterne ved hjælp af "ht32_board_config.h" file.
Figur 27. Pin-korrespondance og indstillingsændring
Tilføj en UART-kanal
Tager HT32F52352 HTCFG_UARTM_CH1 som et eksample, her er det beskrevet, hvordan man tilføjer en ny UART-kanal.
Rediger ht32_board_config.h file
Med henvisning til HT32F52352-dataarket "Pin Assignment"-kapitlet, slå op i tabellen med alternativ funktionsmapping, som viser AFIO-funktionerne for enhedstypen. Da USART1 er blevet brugt som HTCFG_UARTM_CH0, kan den nyligt tilføjede HTCFG_UARTM_CH1 vælge USART0. Her er TX- og RX-benene placeret på henholdsvis PA2 og PA3, som vist i den øverste halvdel af figur 28. De tilsvarende modifikationer er implementeret ved hjælp af kodelinjer 120~126 i ht32_board_config.h, som vist med den røde stiplede boks i figuren 28.
Figur 28. Tilføj en UART-kanal
Ofte stillede spørgsmål
Q: I trin 5 i afsnittet Kompilering og test er transmissionsfunktionstesten normal. Her er "ABCThis is test!" meddelelsen er blevet vist, men for modtagefunktionen, hvorfor returneres og vises de fem inputværdier ikke?
A: Kontroller, om MCU UART RX- og DAP_Tx-benene på UART Jumper-J2 er blevet kortsluttet ved hjælp af en jumper. Da "Module_UART"-applikationskoden skal bruge den virtuelle COM-port (VCP) på e-Link32 Lite, skal kortslutningsindstillingen anvendes på de to venstre ben på UART Jumper-J2, som vist i figur 29.
Figur 29. UART Jumper-J2-indstilling
Q: Efter udfører "Build" (eller genvej "F7"), vises en fejlmeddelelse, der indikerer, at firmwarebiblioteksversionen er ældre end den, der kræves? Se figur 30.
A: Implementeringen af "Module_UART"-applikationskoden skal inkludere uart_module.c/h files som har et krav om en bestemt firmware-biblioteksversion. Når en sådan fejlmeddelelse vises, betyder det, at det aktuelt brugte firmwarebibliotek er en ældre version. Derfor er det nødvendigt at downloade den nyeste version via linket i afsnittet "Firmwarebibliotek".
Figur 30. Fejlmeddelelse for firmwarebiblioteksversion
Konklusion
Dette dokument har givet en grundlæggende introduktion for at hjælpe brugere med en bedre forståelse af "Module_UART"-applikationskoden og UART-kommunikationsprotokollen. Dette blev efterfulgt af ressourcedownload og forberedelse. Kapitlet Funktionsbeskrivelse introducerede file mappestruktur, API-arkitekturen, API-beskrivelse og API-brug f.eksamples. Kapitlet om brugsvejledning demonstrerede miljømæssig forberedelse, kompilering og test af applikationskoden "Module_UART". Den gav også instruktioner til kodetransplantation og -modifikationsindstillinger samt forklarede nogle almindelige problemer, der kan opstå. Alt dette kombineret vil give brugerne mulighed for hurtigt at forstå, hvordan man bruger API'erne og efterfølgende reducere mængden af tid til at komme i gang.
Referencemateriale
For mere information henvises til Holtek webwebsted: www.holtek.com
Versioner og ændringsoplysninger
Dato | Forfatter | Frigøre | Ændringsoplysninger |
2022.04.30 | 蔡期育(Chi-Yu Tsai) | V1.00 | Første version |
Ansvarsfraskrivelse
Alle oplysninger, varemærker, logoer, grafik, videoer, lydklip, links og andre elementer, der vises på denne webwebsted ('Oplysninger') er kun til reference og kan ændres til enhver tid uden forudgående varsel og efter Holtek Semiconductor Inc.'s skøn og dets relaterede virksomheder (herefter 'Holtek', 'virksomheden', 'os', ' vi' eller 'vores'). Mens Holtek bestræber sig på at sikre nøjagtigheden af oplysningerne om dette webwebsted, giver Holtek ingen udtrykkelig eller underforstået garanti for oplysningernes nøjagtighed. Holtek påtager sig intet ansvar for fejl eller lækage.
Holtek er ikke ansvarlig for skader (herunder, men ikke begrænset til, computervirus, systemproblemer eller tab af data), der måtte opstå ved brug af eller i forbindelse med brugen af denne webwebsted af enhver part. Der kan være links i dette område, som giver dig mulighed for at besøge webandre virksomheders websteder.
Disse webwebsteder er ikke kontrolleret af Holtek. Holtek påtager sig intet ansvar og ingen garanti for nogen som helst information, der vises på sådanne websteder. Hyperlinks til andre webwebsteder er på eget ansvar.
Ansvarsbegrænsning
Holtek Limited er under ingen omstændigheder ansvarlig over for nogen anden part for tab eller skade overhovedet eller på nogen måde forårsaget direkte eller indirekte i forbindelse med din adgang til eller brug af dette webwebstedet, indholdet derpå eller varer, materialer eller tjenester.
Gældende lov
Ansvarsfraskrivelsen indeholdt i webwebsted skal være underlagt og fortolket i overensstemmelse med lovene i Republikken Kina. Brugere vil underkaste sig den ikke-eksklusive jurisdiktion for domstolene i Republikken Kina.
Opdatering af ansvarsfraskrivelse
Holtek forbeholder sig retten til at opdatere ansvarsfraskrivelsen til enhver tid med eller uden forudgående varsel, alle ændringer træder i kraft umiddelbart efter offentliggørelse til webwebsted.
Dokumenter/ressourcer
![]() |
HOLTEK HT32 MCU UART Anvendelsesnote [pdfBrugermanual HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note |