Manuale d'uso HOLTEK HT32 MCU UART Application Note
Nota d'applicazione HOLTEK HT32 MCU UART

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
Diagramma di cumunicazione seriale

Figura 2. UART Circuit Diagram
Schema di u circuitu UART

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
Struttura di pacchetti di dati UART

Figura 4. UART 8-bit Data Packet Format
Format di pacchettu di dati
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
Cuntenuti

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/ Codice Applicazione

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
Cuntenuti

Figura 8. Percorsu di decompressione
Strada 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: 

  1. 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.
  2.  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.
  3. 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
Schema di blocchi di l'architettura

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: 

  1. Finu à quattru canali UART sò supportati. I so paràmetri di input sò UARTM_CH0, UARTM_CH1, UARTM_CH2 è UARTM_CH3.
  2.  U numeru di canali UART pò esse stabilitu è ​​i canali inutilizati ùn riduceranu micca u spaziu di memoria dispunibule.
  3. 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.

  1. 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)
    Settings
  2. 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
    Impostazioni predefinite
Descrizzione API
  1. 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
  2. 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
    Cunfigurazione di basa
  3. 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 
    Dichjarazioni di funzione API
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
Diagramma di flussu di inizializazione

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
Diagramma di flussu di scrittura è lettura 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:

  1. Variabili glubale cumprese bandiere è status per un unicu canali occupanu 40 bytes di RAM.
  2.  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:

  1. 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).
  2. 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

  1. 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.
  2. 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
Schema di blocchi di Kit

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:

  1. 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).
  2. 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
    Cunsigliu di destinazione d'utilizatori

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
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
Custruite è scaricate i risultati

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
Risultatu di l'installazione
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
Test Funziunale di u codice di l'applicazione

Figura 22. "Module_UART" Application Code Test Functional - Riceve
Test Funziunale di u codice di l'applicazione

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
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 
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
Includite l'intestazione API File

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 

  1. 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
    Tabella di mappatura di funzioni alternative
  2. 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
    Mudificazione di l'impostazione

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
Canale UART

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
Jumper UART

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
Missaghju d'errore di versione

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

Referenze

Lascia un cumentu

U vostru indirizzu email ùn serà micca publicatu. I campi obbligatori sò marcati *