Manuale d'uso HOLTEK HT32 MCU UART Application Note
Introduzione
U Ricevitore / Trasmettitore Asincronu Universale - UART hè una interfaccia di trasmissione seriale largamente usata chì furnisce una trasmissione di dati full-duplex asincrona flessibile. U codice di l'applicazione "Module_UART" furnitu in questa nota di l'applicazione usa interruzioni TX / RX cù buffer d'anelli di software per implementà funzioni di trasmissione / ricezione UART simplici per API, chì e funzioni correlate sò descritte quì sottu. Questu simplificà tuttu u prucessu di trasmissione di dati è permette à l'utilizatori di capisce rapidamente è implementà l'applicazioni di cumunicazione UART.
- Funzioni di trasmissione / ricezione: byte read, byte write, buffer read, buffer write, etc.
- Funzioni di statutu: uttene a durata di u buffer, u statutu TX, etc.
Stu documentu prima introduverà u protocolu di cumunicazione UART, chì aiutarà l'utilizatori à capisce megliu a cumunicazione UART da u principiu à l'applicazione. Questu hè seguitatu da u scaricamentu è a preparazione di e risorse necessarie per u codice di l'applicazione, cumprese a biblioteca di firmware, u scaricamentu di u codice di l'applicazione, file è a cunfigurazione di u repertoriu è ancu una introduzione à l'uttellu di u software terminal utilizatu in a nota di l'applicazione. In u capitulu di a Descrizzione Funziunale, a struttura di u repertoriu di u codice di l'applicazione, i paràmetri di i paràmetri è a descrizzione API seranu introdutte. L'usu di l'API serà descrittu cù u codice di l'applicazione "Module_UART" è u cunsumu di risorse Flash / RAM necessariu per l'API serà ancu listatu. U capitulu di Istruzzioni per l'usu guidà l'utilizatore à traversu i passi di a preparazione ambientale, a compilazione è a prova per cunfirmà chì u codice di l'applicazione funziona bè. Dopu furnisce struzzioni chì spieghendu cumu integrà l'API in i prughjetti di l'utilizatori è infine furnisce una riferenza per e mudificazioni è i prublemi cumuni chì ponu esse scontri.
Abbreviazioni aduprate:
- UART: Ricevitore / Trasmettitore asincronu universale
- API: Interfaccia di prugrammazione di l'applicazione
- LSB: U più menu significativu
- MSB: Bit più significativu
- PC: Computer persunale
- SK: Starter Kit, scheda di sviluppu HT32
- IDE: Ambiente di sviluppu integratu
Protocolu di cumunicazione UART
L'UART hè un tipu d'interfaccia di cumunicazione seriale chì implementa a cunversione di dati paralleli à seriali in u so trasmettitore è poi cumunicà in serie cù un receptore simili. U ricevitore poi eseguisce una cunversione di dati seriale à parallelu dopu a ricezione di dati. A Figura 1 mostra un diagramma schematicu di a cumunicazione seriale chì mostra cumu i dati sò trasferiti in un ordine bit. Dunque, per a cumunicazione bidirezionale trà trasmettitore è ricevitore, solu dui fili, TX è RX, sò richiesti per trasfiriri dati in serie trà l'altri. TX hè u pin in u quale l'UART trasmette i dati seriali è hè cunnessu à u pin RX di u receptore. Dunque, i dispositi trasmettitori è ricevitori anu bisognu di cunnetta incruciate i so pin TX è RX per fà una cumunicazione bidirezionale UART, cum'è mostratu in Figura 2.
Figura 1. Diagramma di cumunicazione seriale
Figura 2. UART Circuit Diagram
Durante a cumunicazione seriale UART, a trasmissione di dati hè asincrona. Questu significa chì ùn ci hè micca un clock o un altru signalu di sincronizazione trà u trasmettitore è u ricevitore. Quì un baud rate hè utilizatu, chì hè a velocità di trasmissione / ricezione di dati seriali è chì hè stabilitu da i dui lati in anticipu di trasferimenti di dati. In più, bits spiciali, cum'è bits start and stop, sò aghjuntu à u principiu è a fine di u pacchettu di dati per furmà un pacchettu di dati UART cumpletu. A Figura 3 mostra a struttura di u pacchettu di dati UART mentre a Figura 4 mostra un pacchettu di dati UART 8-bit senza un bit di parità.
Figura 3. UART Data Packet Structure
Figura 4. UART 8-bit Data Packet Format
Ogni parte di u pacchettu di dati UART hè introduttu in ordine sottu.
- Start Bit: Questu indica l'iniziu di un pacchettu di dati. U pin UART TX ferma generalmente à un altu livellu logicu prima di a trasmissione. Se a trasmissione di dati principia, u trasmettitore UART tirarà u pin TX da altu à bassu, vale à dì, da 1 à 0, è dopu tene quì per un ciclu di clock. U ricevitore UART cumminciarà à leghje i dati quandu una transizione alta à bassa hè stata rilevata nantu à u pin RX.
- Dati: Questa hè a data reale trasferita, cù una lunghezza di dati di 7, 8 o 9 bits. I dati sò generalmente trasferiti cù u LSB prima.
- Bit di parità: U numaru di logica "1" in i dati hè utilizatu per determinà s'ellu hè cambiatu ogni dati durante a trasmissione. Per a parità pari, u numeru tutale di logica "1" in i dati deve esse un numeru pari, à u cuntrariu, u numeru tutale di logica "1" in i dati deve esse un numeru imparu per a parità impara.
- Stop Bit: Questu indica a fine di un pacchettu di dati, induve u trasmettitore UART tirarà u pin TX da bassu à altu, vale à dì, da 0 à 1, è dopu tene quì per un periodu di tempu 1 o 2-bit.
Cumu l'anu dettu prima, postu chì ùn ci hè micca un signalu di clock in u circuitu UART, a stessa velocità di trasmissione / ricezione di dati seriali, chì hè cunnisciuta cum'è u baud rate, deve esse definita trà u trasmettitore è u receptore per implementà a trasmissione senza errore. U baud rate hè definitu da u nùmeru di bits trasferiti per seconda, in bps (bit per second). Certi baud rates standard è cumunimenti usati sò 4800bps, 9600bps, 19200bps, 115200bps, etc. U tempu currispundenti necessariu per trasfiriri un unicu bit di dati hè mostratu quì sottu.
Table 1. Baud Rate versus 1-Bit Transmission Time
Baud Rate | Trasmissione 1-Bit U tempu |
4800 bps | 208.33 µs |
9600 bps | 104.16 µs |
19200 bps | 52.08 µs |
115200 bps | 8.68 µs |
Scaricamentu di risorse è preparazione
Stu capitulu introduverà u codice di l'applicazione è l'uttellu di software utilizatu, è ancu cumu cunfigurà u cartulare è file caminu.
Biblioteca di firmware
Prima, assicuratevi chì a libreria di firmware Holtek HT32 hè stata scaricata prima di utilizà u codice di l'applicazione. U ligame di scaricamentu hè mostratu quì sottu. Quì ci sò duie opzioni, HT32_M0p_Vyyyymmdd.zip per a serie HT32F5xxxx è HT32_M3_Vyyyymmdd.zip per a serie HT32F1xxxx. Scaricate è unzip u desideratu file.
U zip file cuntene parechje cartulare chì ponu esse classificate cum'è Document, Firmware Library, Tools è altri elementi, u percorsu di piazzamentu di quale hè mostratu in Figura 5. U zip di a biblioteca di firmware HT32 file cun a file nome di HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip si trova sottu à u cartulare Firmware_Library.
Figura 5. Cuntinutu HT32_M0p_Vyyyymmdd.zip
Codice Applicazione
Scaricate u codice di l'applicazione da u ligame seguente. U codice di l'applicazione hè imballatu in un zip file cun a file nome di HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Vede Figura 6 per u file cunvenzioni di nomi.
Figura 6. Codice Applicazione File Introduzione di u nome
Ligame di scaricamentu: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/
File è Configurazione di u Directory
Cume u codice di l'applicazione ùn cuntene micca a biblioteca di firmware HT32 files, u codice di l'applicazione è a biblioteca di firmware unzipped files deve esse piazzatu in u percorsu currettu prima di inizià a compilazione. U codice di l'applicazione zip file di solitu cuntene unu o più cartulare, cum'è l'applicazione è a biblioteca, cum'è mostra in a Figura 7. Pone u cartulare di l'applicazione sottu u cartulare radicale di a biblioteca di firmware HT32 per compie u file a cunfigurazione di u percorsu, cum'è mostra in a Figura 8. In alternativa, unzip u codice di l'applicazione è a biblioteca di firmware HT32 simultaneamente in u stessu percorsu per ottene i stessi risultati di cunfigurazione.
Figura 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Cuntinutu
Figura 8. Percorsu di decompressione
Software di Terminal
U codice di l'applicazione pò trasfiriri missaghji attraversu u portu COM per implementà a selezzione di funzioni o a visualizazione di u statutu. Questu hè bisognu di u latu di l'ospitu per avè u software di terminal installatu in anticipu. L'utilizatori ponu sceglie un software di cunnessione apprupriatu, o utilizà un software licenziatu gratuitu cum'è Tera Term. In u codice di l'applicazione, u canali UART hè cunfiguratu cù una lunghezza di parola di 8-bits, senza parità, 1 stop bit è un baud rate di 115200bps.
Descrizzione Funziunale
Stu capitulu furnisce una descrizzione funziunale per u codice di l'applicazione, cumprese l'infurmazioni nantu à a struttura di u repertoriu, l'architettura API, a descrizzione di l'impostazione, etc.
Struttura di u repertoriu
U codice di l'applicazione file cuntene un cartulare di l'applicazione. U prossimu stratu hè u cartulare "Module_UART" chì cuntene dui prugrammi di applicazione, "UART_Module_Ex".ample" è "UART_Bridge". U pertinenti files sò listati è descritti quì sottu.
Tabella 2. Struttura di l'annuariu di codice di l'applicazione
cartulare / File Nome | Descrizzione |
\\application\Module_UART\UART_Module_Example*1 | |
_CreaProject.bat | Scripts batch per a creazione di prughjettu files |
_ProjectSource.ini | Inizializazione file per aghjunghje u codice fonte à i prughjetti |
ht32_board_config.h | Istituisci file relative à l'assignation d'E/S périphériques IC |
ht32fxxxxx_01_it.c | Interrompe u prugramma di serviziu file |
principale.c | U codice fonte di u prugramma principale |
\\application\Module_UART\UART_Bridge*2 | |
_CreaProject.bat | Scripts batch per a creazione di prughjettu files |
_ProjectSource.ini | Inizializazione file per aghjunghje u codice fonte à i prughjetti |
ht32_board_config.h | Istituisci file relative à l'assignation d'E/S périphériques IC |
ht32fxxxxx_01_it.c | Interrompe u prugramma di serviziu file |
principale.c | U codice fonte di u prugramma principale |
uart_bridge.h uart_bridge.c | UART bridge header file è u codice fonte file |
\\utilità\middleware | |
uart_module.h*3 uart_module.c*3 | Header API file è u codice fonte file |
\\utilità\cumune | |
ringbuffer.h ring_buffer.c | L'intestazione di u buffer di u software file è u codice fonte file |
Nota:
- In u "UART_Module_Example" codice di l'applicazione, l'operazione di lettura è scrittura di l'API sò realizate in una manera di loopback, riferite à "API Usage Examples" sezione per più dettagli.
- In u codice di l'applicazione "UART_Bridge", dui canali UART, UART CH0 è UART CH1, sò attivati, è u protocolu di cumunicazione persunalizata attraversu e strutture COMMAND sò implementati trà i dui dispositi UART. Per più infurmazione, riferite à "API Usage Examples" sezione.
- U codice di l'applicazione deve aduprà uart_module.c/h files chì anu un requisitu di versione di a biblioteca di firmware. U requisitu pò cambià di tempu à tempu secondu l'aghjurnamentu. Per cunfirmà l'esigenza attuale di a versione di a biblioteca di u firmware, fate riferimentu à u cuntenutu di verificazione di dependenza cerchendu a keyword "Controllà di dependenza" in u main.c file. Se a versione di a biblioteca di firmware ùn risponde micca à i requisiti, scaricate a versione più nova da u ligame furnitu in a sezione "Biblioteca di firmware".
Architettura API
Ogni API hà un paràmetru impurtante CH, chì hè u Canale UART. Questu determina quale canale UART deve esse cuntrullatu. Attualmente finu à quattru canali UART sò supportati è dunque quattru simboli custanti sò definiti cum'è seguita. Quessi sò usati cum'è u paràmetru CH chì furnisce l'API a basa per u cuntrollu.
- UATM_CH0: paràmetru di input - cuntrullà o cunfigurà UART CH0
- UATM_CH1: paràmetru di input - cuntrullà o cunfigurà UART CH1
- UATM_CH2: paràmetru di input - cuntrullà o cunfigurà UART CH2
- UATM_CH3: paràmetru di input - cuntrullà o cunfigurà UART CH3
U spaziu di memoria ùn serà micca persu s'ellu hè adupratu solu un canale UART. Questu hè chì u numeru di i canali UART supportati pò esse stabilitu è u codice di u canali UART inutilizatu serà eliminatu da u preprocessore per aumentà u spaziu di memoria dispunibule. L'architettura API hè mostrata in Figura 9.
Figura 9. API Architecture Block Diagram
Ogni API hè cumpostu di quattru gruppi di paràmetri o cuntrolli legati à u canali UART per chì l'utilizatori solu bisognu di inserisce u paràmetru CH desideratu. Per cunfigurà l'API pertinente, hè necessariu solu avè una tabella di parametri di cunfigurazione basica UART addiziale cù a forma di struttura, USART_InitTypeDef. L'API implementerà a cunfigurazione basica UART secondu u cuntenutu di u paràmetru in a tabella. Vede a sezione "Descrizzione API" per a tabella di struttura di cunfigurazione basica UART.
U uart_module.c/.h files cuntenenu solu l'interruzzione (CHx_IRQ) è a tabella di statutu (CHx Status) di ogni canali UART mentre chì tutti i paràmetri necessarii per a cumunicazione UART sò furniti da ht32_board_config.h. I paràmetri pertinenti di hardware in u ht32_board_config.h file sò mostrati in a tabella sottu. Più dettagli sò furniti in a sezione "Setting Description".
I paràmetri pertinenti di hardware in u ht32_board_config.h includenu paràmetri I / O è paràmetri di u portu UART fisicu, cum'è seguita.
Table 3. Definizione Simboli in ht32_board_config.h
Simbulu | Descrizzione |
HTCFG_UARTM_CH0 | Nome di u portu fisicu UART; Esample: UART0, UART1... |
HTCFG_UARTM0_TX_GPIO_PORT | Definisce u nome di portu di TX per CH0; Esample: A, B, C... |
HTCFG_UARTM0_TX_GPIO_PIN | Definisce u numeru di pin di TX per CH0; Esample: 0~15 |
HTCFG_UARTM0_RX_GPIO_PORT | Definisce u nome di portu di RX per CH0; Esample: A, B, C... |
HTCFG_UARTM0_RX_GPIO_PIN | Definisce u numeru di pin di TX per CH0; Esample: 0~15 |
HTCFG_UARTM0_TX_BUFFER_SIZE | Definisce a dimensione di u buffer TX per CH0; Esamplu: 128 |
HTCFG_UARTM0_RX_BUFFER_SIZE | Definisce a dimensione di u buffer RX per CH0; Esamplu: 128 |
Per mudificà a cunfigurazione AFIO di u canale UART, riferite à a scheda di dati di u dispositivu pertinente. Attualmente, solu e definizioni I/O per UART CH0 sò in vigore, postu chì solu UART CH0 hè stata cunfigurata in ht32_board_config.h. Per aghjunghje UART CH1 ~ 3, e so definizioni I/O anu da esse cumplette riferenu à a definizione UART CH0 o riferenu à a sezione "Setting Modification and FAQs".
Ci sò trè caratteristiche principali di l'architettura API:
- Finu à quattru canali UART sò supportati. I so paràmetri di input sò UARTM_CH0, UARTM_CH1, UARTM_CH2 è UARTM_CH3.
- U numeru di canali UART pò esse stabilitu è i canali inutilizati ùn riduceranu micca u spaziu di memoria dispunibule.
- Tutti i paràmetri UART è e definizioni I/O sò completamente separati da l'API. Questu aumenta a cunvenzione di gestione di stabilisce valori è riduce a pussibilità di paràmetri sbagliati o mancanti.
Descrizione di l'impostazione
Questa sezione introduverà i paràmetri di paràmetri in ht32_board_config.h è uart_module.h files.
- ht32_board_config.h: Questu file hè utilizatu per definizioni di pin è paràmetri pertinenti di a scheda di sviluppu, chì includenu u canali IP UART (UART0, UART1, USART0 ...) utilizatu da u Starter Kit (SK), i lochi di pin TX / RX currispondenti è a dimensione di buffer TX / RX. A Figura 10 mostra u cuntenutu di u paràmetru di u Starter Kit HT32F52352. Sicondu l'integrazione funziunale di u sviluppu, l'utilizatori ponu riferite à a sezione "Assegnazione Pin" di a datasheet di u dispusitivu utilizatu per implementà e definizione di pin. Più dettagli nantu à a mudificazione di l'impostazione seranu descritte in a sezione "Modificazione di l'impostazione è FAQ".
Figura 10. Settings ht32_board_config.h (HT32F52352)
- uart_module.h: Questu hè l'intestazione API file utilizatu da u codice di l'applicazione, chì include i paràmetri predeterminati pertinenti, difinizzioni di funzioni, etc. Cumu mostra in a Figura 11, u cuntenutu di u paràmetru predeterminatu pò esse scrivite da cunfigurazioni esterne, cum'è i paràmetri in u ht32_board_config.h. file.
Figura 11. Paràmetri predeterminati in uart_module.h
Descrizzione API
- Descrizzione di u tipu di dati di u codice di l'applicazione.
- USART_InitTypeDef
Questa hè a struttura di cunfigurazione basica UART chì hè cumposta da BaudRate, WordLength, StopBits, Parità è cunfigurazioni Mode, cum'è mostratu quì sottu.Variabile Nome Tipu Descrizzione USART_BaudRate u32 UART baud rate di cumunicazione USART_Lunghezza Parola u16 Lunghezza di a parolla di cumunicazione UART: 7, 8 o 9 bit USART_StopBits u16 Lunghezza di bit di stop di cumunicazione UART: 1 o 2 bit USART_Parità u16 Parità di cumunicazione UART: pari, dispari, marcatu, spaziu o senza parità USART_Mode u16 Modu di cumunicazione UART; l'API supportanu solu u modu normale
- USART_InitTypeDef
- Prima di utilizà e funzioni API, compie a cunfigurazione basica UART in u prugramma principale. A cunfigurazione basica UART per stu codice di l'applicazione hè mostrata in a Figura 12. Quì u baud rate hè 115200bps, a durata di a parolla hè 8-bit, a durata di u bit stop hè 1-bit, è ùn ci hè micca parità.
Figura 12. UART Basic Configuration
- A Figura 13 mostra e funzioni API dichjarate in uart_module.h file. I seguenti tabelle spieganu a funzione, i paràmetri di input è l'usu di e funzioni API.
Figura 13. Dichjarazioni di Funzione API in uart_module.h
Nome | void UARTM_Init (u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue) | |
Funzione | Inizializazione di u modulu UART | |
Input | CH | Canale UART |
pUART_Init | Puntatore di struttura di cunfigurazione di basa UART | |
uRxTimeOutValue | UART RX FIFO valore di time-out. Quandu u RX FIFO riceve novi dati, u contatore resettarà è riavviarà. Quandu u contatore righjunghji u valore di time-out predeterminatu è l'interruzzione di time-out currispondente hè stata attivata, una interruzzione di time-out serà generata. | |
Usu | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Eseguite la configurazione di base UART//Figura 12 per la configurazione USART_InitStructure |
Nome | u32 UARTM_WriteByte (u32 CH, u8 uData) | |
Funzione | Operazione di scrittura di byte di modulu UART (TX) | |
Input | CH | Canale UART |
uData | I dati da esse scrittu | |
Output | SUCCESS | Successu |
ERRORE | Fiascatu | |
Usu | UARTM_WriteByte (UARTM_CH0, 'A'); //UART scrive 1 byte - 'A' |
Nome | u32 UARTM_Write (u32 CH, u8 *pBuffer, u32 uLength) | |
Funzione | Operazione di scrittura di u modulu UART (TX) | |
Input | CH | Canale UART |
pBuffer | Puntatore di buffer | |
uLunghezza | A durata di i dati da scrive | |
Output | SUCCESS | Successu |
ERRORE | Fiascatu | |
Usu | u8 Test[] = "Questu hè un test!\r\n"; UARTM_Write (UARTM_CH0, Test, sizeof (Test) -1); //UART scrive pBuffer data |
Nome | u32 UARTM_ReadByte (u32 CH, u8 *pData) | |
Funzione | U modulu UART read byte operation (RX) | |
Input | CH | Canale UART |
pData | L'indirizzu per mette i dati letti | |
Output | SUCCESS | Successu |
ERRORE | Fiascu (senza dati) | |
Usu | u8 TempData; if (UARTM_ReadByte (UARTM_CH0, &TempData) == SUCCESS) {UARTM_WriteByte (UARTM_CH0, TempData);}//If UARTM_ReadByte () torna SUCCESS allora UART scrive stu byte di dati |
Nome | u32 UARTM_Read (u32 CH, u8 *pBuffer, u32 uLength) | |
Funzione | Operazione di lettura di u modulu UART (RX) | |
Input | CH | Canale UART |
pBuffer | Puntatore di buffer | |
uLunghezza | A durata di i dati da leghje | |
Output | Leghjite u conte | A durata di i dati hè stata letta |
Usu | u8 Test2[10]; u32 Len; Len = UARTM_Read (UARTM_CH0, Test2, 5); if (Len > 0) {UARTM_Write (UARTM_CH0, Test2, Len);}//UARTM_Read() leghje 5 byte di dati è almacena dati in Test2, è assigna u conte di byte di lettura à Len// Scrivite i dati provenienti da Test2 |
Nome | u32 UARTM_GetReadBufferLength (u32 CH) | |
Funzione | Ottene a lunghezza di u buffer di lettura (RX) | |
Input | CH | Canale UART |
Output | uLunghezza | Leghjite a durata di u buffer |
Usu | UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); // Inizializazione di u modulu UART mentri (UARTM_GetReadBufferLength (UARTM_CH0) < 5);// Aspetta finu à chì UARTM_ReadBuffer hà ricevutu 5 bytes di dati |
Nome | u32 UARTM_GetWriteBufferLength (u32 CH) | |
Funzione | Ottene a lunghezza di u buffer di scrittura (TX) | |
Input | CH | Canale UART |
Output | uLunghezza | Scrivite a durata di u buffer |
Nome | u8 UARTM_IsTxFinished (u32 CH) | |
Funzione | Ottene u statutu TX | |
Input | CH | Canale UART |
Output | VERA | Statu TX: finitu |
FALSE | Status TX: micca finitu | |
Usu | UARTM_WriteByte (UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 requiredwhile (UARTM_IsTxFinished (UARTM_CH0) == FALSE) #elsewhile (1) #endif //Questa API pò esse usata per verificà u statutu TX, cum'è mostratu sopra; aspittà finu à chì l'API UARTM_WriteByte () hè finita, vale à dì, u statutu TX hè TRUE, è poi cuntinuà l'azzioni sussegwenti.//A restrizzioni hè aghjuntu perchè sta funzione ùn hè stata aghjunta finu à chì u numeru di versione SVN in uart_module.c hè 525. |
Nome | nuddu UATM_DiscardReadBuffer (u32 CH) | |
Funzione | Scarta i dati in u buffer di lettura | |
Input | CH | Canale UART |
Usage API Examples
Questa sezione dimustrarà API scrive è leghje example di u codice di l'applicazione "Module_UART" cù u prucessu di inizializazione è u "UART_Module_Example" prucessu di codice dumanda. Prima di utilizà l'API, l'utilizatori anu bisognu di include l'intestazione API file in u codice fonte di u prugramma principale file (#include "middleware/uart_module.h").
Comu mostra in a Figura 14, quandu entra in u prucessu di inizializazione, prima definisce a struttura di cunfigurazione basica UART. Allora cunfigurate i membri di a struttura di cunfigurazione di basa UART cumpresi BaudRate, WordLength, StopBits, Parità è Mode. Infine, chjamate a funzione d'inizializazione API, u cumpletu di quale indica a fine di u prucessu di inizializazione. Dopu questu, l'utilizatori ponu cuntinuà l'operazioni di scrittura è lettura basate nantu à a cunfigurazione di basa UART preset.
Figura 14. Initialisation Flowchart
U "UART_Module_Example" codice di l'applicazione mostra l'operazione di lettura è scrittura di l'API in una manera di loopback. U diagramma di flussu per questu hè mostratu in Figura 15. E funzioni API utilizati include UARTM_WriteByte (), UARTM_Write (), UARTM_ReadByte (), UARTM_Read () è UARTM_GetReadBufferLength (). A so descrizzione sò furnite in a sezione "Description API".
Figura 15. Flowchart of Write and Read Examples
Ci hè un altru codice di l'applicazione "UART_Bridge" sottu u cartulare "Module_UART" chì a so relazione file a descrizzione hè introdutta in a sezione "Struttura di l'annuariu". U codice di l'applicazione "UART_Bridge" attiva dui canali UART, UART CH0 è UART CH1, è poi persunalizà u protocolu di cumunicazione trà i dui dispositi UART attraversu strutture COMMAND, gCMD1 è gCMD2. Quessi sò definiti in uart_bridge.c, cum'è mostra sottu. UARTBridge_CMD1TypeDef gCMD1:
Variabile Nome | Tipu | Descrizzione |
uHeader | u8 | Intestazione |
uCmd | u8 | Cumanda |
uData[3] | u8 | Dati |
UARTBridge_CMD2TypeDef gCMD2:
Variabile Nome | Tipu | Descrizzione |
uHeader | u8 | Intestazione |
uCmdA | u8 | Cumandamentu A |
uCmdB | u8 | Cumanda B |
uData[3] | u8 | Dati |
In u codice di l'applicazione "UART_Bridge", aduprate gCMD1 per riceve dati cum'è un pacchettu di cumandamenti è poi analizà. Allora secondu u protocolu di cumunicazione persunalizatu, stabilisce gCMD2 cum'è un pacchettu di risposta è trasmette. U seguitu hè un example di un pacchettu di cumanda gCMD1) è un pacchettu di risposta (gCMD2). Pacchettu di cumandamentu (UARTBridge_CMD1TypeDef gCMD1):
Byte 0 | Byte 1 | Byte 2 ~ Byte 4 |
uHeader | uCmd | uData [3] |
"A" | "1" | "x, y, z" |
Pacchettu di Risposta (UARTBridge_CMD2TypeDef gCMD2):
Byte 0 | Byte 1 | Byte 2 | Byte 3 ~ Byte 5 |
uHeader | uCmdA | uCmdB | uData [3] |
"B" | "a" | "1" | "x, y, z" |
Occupazione di risorse
Pigliendu u HT32F52352 cum'è example, i risorsi occupati da u modulu UART hè mostratu quì sottu.
HT32F52352 | |
Dimensione ROM | 946 Byte |
Dimensione RAM | 40*1 + 256*2 Bytes |
Nota:
- Variabili glubale cumprese bandiere è status per un unicu canali occupanu 40 bytes di RAM.
- Questu hè per una cundizione induve un unicu canale hè utilizatu è a dimensione di u buffer TX / RX hè 128/128 bytes. A dimensione di u buffer pò esse stabilitu secondu e esigenze di l'applicazione.
Table 4. Applicazione Code Resource Occupation
- Ambiente di compilazione: MDK-Arm V5.36, ARMCC V5.06 aghjurnamentu 7 (build 960)
- Opzioni di ottimizzazione: Livellu 2 (-O2)
Istruzzioni per l'usu
Stu capitulu introduverà a preparazione ambientale per u codice di l'applicazione "Module_UART", è ancu i passi di compilazione è di prova.
Preparazione Ambientale
U hardware è u software necessariu per u codice di l'applicazione "Module_UART" sò elencati quì sottu.
Table 5. Hardware / Software Preparazione Ambientale
Hardware / Software | Conti | Nota |
Starter Kit | 1 | Questa nota di l'applicazione usa u Kit Starter HT32F52352 cum'è example |
Cavu USB | 1 | Micro USB, cunnessu à u PC |
Codice Applicazione | — | A strada di scaricamentu, file è a cunfigurazione di u repertoriu sò introdutte in a sezione "Download and Preparation di risorse". Path: "\\application\Module_UART\UART_Module_Example " |
Tera Term | — | Vede a sezione "Software Terminal". |
Keil IDE | — | Keil uVision V5.xx |
Prima, aduprate u Starter Kit HT32F52352 cumminatu cù a funzione Virtual COM Port (VCP) di e-Link32 Lite per l'introduzione di l'applicazione UART. Questu hè bisognu di a preparazione ambientale seguente per esse implementata:
- Ci sò dui interfacce USB nantu à u bordu. Aduprate u cable USB per cunnette u PC è l'interfaccia eLink32 Lite nantu à a scheda cum'è mostra in Figura 16-(a).
- Siccomu u codice di l'applicazione hà bisognu di utilizà a funzione e-Link32 Lite Virtual COM Port (VCP), assicuratevi chì PAx * 2 è DAP_Tx di UART Jumper-J2 * 1 sò stati shorted cù un jumper. U locu J2 hè indicatu da a Figura 16-(b).
Nota
- J2 nantu à u Starter Kit hà duie opzioni, PAx è DAP_Tx in cortu o PAx è RS232_Tx in corto. Vede u manuale di l'usu di Starter Kit per e funzioni di impostazione dettagliate.
- A posizione di pin MCU UART RX in diversi Starter Kits sò diverse. Questu example usa PAx per indicà u pin RX.
Figura 16. HT32 Starter Kit Block Diagram
Avà utilizate a tavola di destinazione d'utilizatore cumminata cù a funzione Virtual COM Port (VCP) di e-Link32 Pro per l'introduzione di l'applicazione UART. Questu hè bisognu di a preparazione ambientale seguente per esse implementata:
- Un latu di e-Link32 Pro hè cunnessu à un PC cù un cable Mini USB è l'altru latu hè cunnessu à a tavola di destinazione d'utilizatore attraversu u so cable grisu 10-bit. A cunnessione trà l'interfacce SWD di u cable è a tavola di destinazione hè implementata cù e linee Dupont, cum'è mostra in Figura 17-(a).
- I pins di cumunicazione seriale di e-Link32 Pro sò Pin#7 VCOM_RXD è Pin#8-VCOM_TXD. Quessi deve esse cunnessi à i pins TX è RX di a scheda di destinazione di l'utilizatori, cum'è mostra in Figura 17-(b).
Figura 17. e-Link32 Pro + User Target Board Block Diagram
Cumpilazione è Test
Questa sezione pigliarà l'applicazione "Module_UART" UART_Module_Example" cum'è example per presentà i prucessi di compilazione è di prova. Prima di questu, assicuratevi chì tutte e preparazione descritte in a sezione precedente sò state implementate è chì u software di terminal Tera Term hè statu scaricatu.
I passi di u funziunamentu detallatu sò riassunti quì sottu.
Passu 1. Test Power-on
Configurate l'ambiente hardware cum'è descrittu in a sezione precedente. Dopu à l'accensione, u LED di putenza D9 in a parte inferiore sinistra di u Starter Kit serà illuminatu. U LED USB D1 nantu à l'e-Link32 Lite nantu à a destra superiore serà illuminatu dopu chì l'enumerazione USB hè stata cumpletata. Se D1 ùn hè micca illuminatu dopu un longu periodu di tempu, cunfirmà se u cable USB hè capaci di cumunicà. Se micca allora sguassate è reinserite di novu.
Step 2. Generate un prughjettu
Aprite l'applicazione\Module_UART\UART_Module_Exampu cartulare, cliccate nant'à u _CreateProject.bat file per generà un prughjettu, cum'è mostra in a Figura 18. Siccomu questa nota di l'applicazione usa u Starter Kit HT32F52352, apre u prughjettu Keil IDE "Project_52352.uvprojx" situatu sottu u cartulare MDK_ARMv5.
Figura 18. Eseguite _CreateProject.bat per Generate Project
Step 3. Compile è prugrammu
Dopu chì u prugettu hè statu apertu, prima cliccate nant'à "Custruisce" (o aduprà a scurciatoia "F7"), poi cliccate nant'à "Download" (o aduprà a scurciatoia "F8"). Dopu à questu, i risultati di custruzzione è scaricamentu seranu visualizati in a finestra di creazione di output. Vede a figura 19.
Figura 19. Custruite è Download Results
Passu 4. Apertura u software Tera Term è cunfigurà u portu seriale
Apertura u software Tera Term è u portu COM. Prestate attenzione à se u numeru di portu COM generatu da u Starter Kit hè currettu o micca. Dopu cliccate nant'à "Setup >> Serial Port" per entre in l'interfaccia di cunfigurazione. A cunfigurazione di l'interfaccia UART di u codice di l'applicazione "Module_UART" hè descritta in a sezione "Software Terminal". U risultatu di a stallazione hè mostratu in a Figura 20.
Figura 20. Tera Term Serial Port Setup Result
Step 5. Resetten u sistema è pruvà
Appughjà a chjave SK reset - B1 Reset. Dopu questu, un "ABCThis is test!" missaghju sarà
trasmessu attraversu l'API è serà visualizatu in a finestra Tera Term, cum'è mostra in a Figura 21. In quantu à a funzione di riceve, quandu si inserisce dati in a finestra Tera Term, l'API pertinente serà utilizata per determinà a lunghezza di u buffer di ricivutu. Quandu i dati ricevuti da PC righjunghji 5 bytes, i 5 bytes di dati ricevuti seranu mandati sequentially. Cum'è mostra in a Figura 22, i dati inseriti in sequenza sò "1, 2, 3, 4, 5", chì sò ricevuti è determinati attraversu l'API. Dopu questu, i dati "1, 2, 3, 4, 5" seranu stampati dopu à cinque inputs.
Figura 21. "Module_UART" Applicazione Code Test Functional - Trasmette
Figura 22. "Module_UART" Application Code Test Functional - Riceve
Istruzzioni di trasplante
Questa sezione introduverà cumu integrà l'API in i prughjetti di l'utilizatori.
Passu 1. Aghjunghjite u uart_module.c file in u prugettu. Cliccate dritta nant'à u cartulare User. Selezziunà "Add Existing Files à u Gruppu 'Usuariu'...", dopu selezziunate u uart_module.c file è cliccate nant'à "Aggiungi", cum'è mostra in a Figura 23. Consultate a sezione "Struttura di l'annuariu" per u file descrizzione di a strada.
Figura 23. Add uart_module.c File à Prughjettu
Passu 2. Aghjunghjite u ring_buffer.c file in u prugettu. Cliccate dritta nant'à u cartulare User. Selezziunà "Add Existing Files à Gruppu 'Usuariu'...", dopu selezziunate u ring_buffer.c file è cliccate nant'à "Aggiungi", cum'è mostratu in a Figura 24. file descrizzione di a strada.
Figura 24. Add ring_buffer.c File à Prughjettu
Passu 3. Includite l'intestazione API file in u principiu di main.c, cum'è mostra in Figura 25. (Ext: #include "middleware/uart_module.h")
Figura 25. Include API Header File à main.c
Passu 4. Implementa i paràmetri necessarii per a cumunicazione UART cù u ht32_board_config.h file. Questu hè introduttu in dettagliu in e sezioni "Setting Description" è "Setting Modification and FAQs".
Setting Modification and FAQs
Questa sezione introduverà cumu mudificà i paràmetri UART è spiegà alcune dumande cumuni incontrate durante l'usu.
Cambia l'assignazione di u Pin UART
- In riferimentu à u HT32F52352 Datasheet "Pin Assignment" capitulu, cercate a tabella di Mappa di Funzione Alternativa chì elenca e funzioni AFIO di u tipu di dispusitivu. Per i pin pertinenti UART, riferite à a colonna "AF6 USART/UART", cum'è mostra in Figura 26.
Figura 26. HT32F52352 Alternate Function Mapping Table
- Stu passu guidarà l'utilizatori à localizà i pins UART currispondenti utilizendu a tabella sopra. U HT32F52352 example usa USART1 cum'è u canali predeterminatu. Quì, i pin TX è RX sò USR1_TX è USR1_RX è si trovanu in PA4 è PA5 rispettivamente. A Figura 27 mostra a currispundenza di pin è ancu e definizione di pin in "ht32_board_config.h". I campi vacanti di "Package" in a tabella di assignazione di pin significa chì ùn ci sò micca GPIO pertinenti in stu pacchettu. Per mudificà i pins UART, truvate i lochi di pin di destinazione è ridefinisce i pin usendu "ht32_board_config.h" file.
Figura 27. Pin Correspondence and Setting Modification
Aghjunghjite un Canale UART
Piglià u HT32F52352 HTCFG_UARTM_CH1 cum'è example, quì hè descrittu cumu aghjunghje un novu canale UART.
Mudificà u ht32_board_config.h file
In riferimentu à u HT32F52352 Datasheet "Pin Assignment" capitulu, cercate a tabella di Mappa di Funzione Alternativa chì elenca e funzioni AFIO di u tipu di dispusitivu. Cum'è USART1 hè stata utilizata cum'è HTCFG_UARTM_CH0, u HTCFG_UARTM_CH1 appena aghjuntu pò sceglie USART0. Quì, i pins TX è RX sò situati in PA2 è PA3 rispettivamente, cum'è mostra in a mità superiore di a Figura 28. I mudificazioni currispundenti sò implementati cù e linee di codice 120 ~ 126 in ht32_board_config.h, cum'è mostratu da a casella di punti rossi in Figura. 28.
Figura 28. Add a UART Channel
FAQs
Q: In u passu 5 di a sezione Compilation and Test, a prova funziunale di trasmissione hè normale. Eccu, u "ABCThis is test!" u missaghju hè statu affissatu cù successu, ma per a funzione di riceve, perchè i cinque valori di input ùn sò micca restituiti è visualizati?
A: Verificate se i pin MCU UART RX è DAP_Tx di UART Jumper-J2 sò stati in cortocircuiti cù un jumper. Cum'è u codice di l'applicazione "Module_UART" hà bisognu di utilizà u Portu COM Virtuale (VCP) di e-Link32 Lite, u paràmetru di u cortu circuitu deve esse appiicatu à i dui pin di manca di UART Jumper-J2, cum'è mostra in Figura 29.
Figura 29. UART Jumper-J2 Setting
Q: Dopu eseguendu "Custruisce" (o scorciatoia "F7"), un missaghju d'errore appare chì indica chì a versione di a biblioteca di firmware hè più vechja di quella chì hè necessaria? Vede a figura 30.
A: L'implementazione di u codice di l'applicazione "Module_UART" deve include uart_module.c/h files chì hà un requisitu per una certa versione di biblioteca di firmware. Quandu un tali missaghju d'errore appare, significa chì a biblioteca di firmware attualmente utilizata hè una versione più vechja. Per quessa, hè necessariu di scaricà a versione più nova attraversu u ligame furnitu in a sezione "Biblioteca di firmware".
Figura 30. Firmware Library Version Error Message
Cunclusioni
Stu documentu hà furnitu una introduzione basica per aiutà l'utilizatori cun una megliu comprensione di u codice di l'applicazione "Module_UART" è u protocolu di cumunicazione UART. Questu hè statu seguitu da u scaricamentu di risorse è a preparazione. U capitulu di Descrizzione Funziunale hà introduttu u file struttura di repertoriu, l'architettura API, descrizzione API è usu API examples. U capitulu Instructions for Use hà dimustratu a preparazione ambientale, a compilazione è a prova di u codice di l'applicazione "Module_UART". Hè ancu furnitu struzzioni per u trasplante di codice è l'impostazione di mudificazione, è spiegà certi prublemi cumuni chì ponu esse scontri. Tuttu chistu cumminatu permetterà à l'utilizatori di capisce rapidamente cumu utilizà l'API è dopu riduce a quantità di tempu per inizià.
Materiale di riferimentu
Per più infurmazione, riferite à Holtek websitu: www.holtek.com
Versioni è infurmazione di mudificazione
Data | Autore | Libera | L'infurmazione di mudificazione |
2022.04.30 | 蔡期育(Chi-Yu Tsai) | V1.00 | Prima Versione |
Disclaimer
Tutte l'infurmazioni, i marchi, i loghi, i grafici, i video, i clips audio, i ligami è altri elementi chì appariscenu nantu à questu web('Informazioni') sò solu per riferimentu è sò sottumessi à cambià in ogni mumentu senza preavvisu è à a discrezione di Holtek Semiconductor Inc. noi" o "nostru"). Mentre Holtek s'impegna à assicurà l'accuratezza di l'infurmazioni nantu à questu websitu, nisuna garanzia espressa o implicita hè datu da Holtek à l'accuratezza di l'Informazioni. Holtek ùn hà micca rispunsabilità per qualsiasi incorrezzione o fuga.
Holtek ùn serà micca rispunsevule per qualsiasi dannu (cumpresu, ma senza limitazione, virus di l'informatica, prublemi di sistema o perdita di dati) qualunque sia in l'usu o in cunnessione cù l'usu di questu. websitu da ogni partitu. Ci ponu esse ligami in questa zona, chì permettenu di visità u websiti di altre imprese.
Quessi websiti ùn sò micca cuntrullati da Holtek. Holtek ùn hà micca rispunsabilità è nisuna garanzia per qualsiasi infurmazione affissata in tali siti. Hyperlinks à l'altri webi siti sò à u vostru propiu risicu.
Limitazione di Responsabilità
In ogni casu, Holtek Limited ùn serà rispunsabili di qualsiasi altra parte per qualsiasi perdita o dannu, o qualunque sia causatu direttamente o indirettamente in cunnessione cù u vostru accessu o usu di questu. websitu, u cuntenutu in questu o qualsiasi beni, materiali o servizii.
Legge chì guverna
A Disclaimer contenuta in u webU situ serà guvernatu è interpretatu in cunfurmità cù e lege di a Republica di Cina. L'utilizatori si sottumetteranu à a ghjuridizione micca esclusiva di i tribunali di a Republica di Cina.
Actualizazione di Disclaimer
Holtek si riserva u dirittu di aghjurnà a Disclaimer in ogni mumentu cù o senza preavvisu, tutti i cambiamenti sò efficaci immediatamente dopu a pubblicazione à u websitu.
Documenti / Risorse
![]() |
Nota d'applicazione HOLTEK HT32 MCU UART [pdfManuale d'usu HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note |