HOLTEK HT32 MCU UART Toepassingsnota Gebruikershandleiding
HOLTEK HT32 MCU UART Aansoeknota

Inleiding

Die universele asynchrone ontvanger/sender - UART is 'n wyd gebruikte seriële transmissie-koppelvlak wat buigsame asynchrone voldupleks data-oordrag bied. Die "Module_UART"-toepassingskode wat in hierdie toepassingsnota verskaf word, gebruik TX/RX-onderbrekings met sagteware-ringbuffers om eenvoudige UART-stuur-/ontvangfunksies deur API's te implementeer, waarvan die verwante funksies hieronder beskryf word. Dit sal die hele data-oordragproses vereenvoudig en gebruikers in staat stel om UART-kommunikasietoepassings vinnig te verstaan ​​en te implementeer.

  • Uitsaai/ontvang funksies: greep lees, greep skryf, buffer lees, buffer skryf, ens.
  • Statusfunksies: verkry die bufferlengte, TX-status, ens.

Hierdie dokument sal eers die UART-kommunikasieprotokol bekendstel, wat gebruikers sal help om die UART-kommunikasie van beginsel tot toepassing beter te verstaan. Dit word gevolg deur die aflaai en voorbereiding van die hulpbronne wat benodig word vir die toepassingskode, insluitend die firmware-biblioteek, toepassingskode aflaai, file en gidskonfigurasie sowel as 'n inleiding tot die terminale sagteware-instrument wat in die toepassingsnota gebruik word. In die Hoofstuk Funksionele Beskrywing sal die toepassingskodegidsstruktuur, parameterinstellings en API-beskrywing bekendgestel word. Die API-gebruik sal beskryf word deur die "Module_UART"-toepassingskode te gebruik en die Flash/RAM-hulpbronverbruik wat vir die API's benodig word, sal ook gelys word. Die Gebruiksaanwysings-hoofstuk sal die gebruiker deur die stappe van omgewingsvoorbereiding, samestelling en toets lei om te bevestig dat die toepassingskode behoorlik sal werk. Dit sal dan instruksies verskaf wat verduidelik hoe om die API's in die gebruiker se projekte te integreer en uiteindelik 'n verwysing verskaf vir wysigings en algemene probleme wat teëgekom kan word.

Afkortings wat gebruik word: 

  • UART: Universele asinchrone ontvanger/sender
  • API: Toepassingsprogrammeringskoppelvlak
  • LSB: Minste beduidende bietjie
  • MSB: Die belangrikste stuk
  • PC: Persoonlike rekenaar
  • SK: Starter Kit, HT32-ontwikkelingsbord
  • ID: Geïntegreerde Ontwikkelingsomgewing

UART Kommunikasie Protokol

Die UART is 'n seriële kommunikasie tipe koppelvlak wat parallel-tot-reeks data-omskakeling by sy sender implementeer en dan serieel met 'n soortgelyke ontvanger kommunikeer. Die ontvanger voer dan 'n reeks-na-parallel data-omskakeling uit na data-ontvangs. Figuur 1 toon 'n skematiese diagram van seriële kommunikasie wat wys hoe die data in 'n bitsgewyse volgorde oorgedra word. Daarom word vir tweerigtingkommunikasie tussen sender en ontvanger slegs twee drade, TX en RX, benodig om data serieel tussen mekaar oor te dra. TX is die pen waarop die UART die reeksdata uitstuur en is gekoppel aan die RX-pen van die ontvanger. Daarom moet die sender- en ontvangertoestelle hul TX- en RX-penne kruiskoppel om UART-tweerigtingkommunikasie uit te voer, soos getoon in Figuur 2.

Figuur 1. Serial Communication Diagram
Serial Communication Diagram

Figuur 2. UART Kringdiagram
UART kringdiagram

Tydens die UART-seriële kommunikasie is data-oordrag asynchronies. Dit beteken dat daar geen klok of ander sinchronisasie sein tussen die sender en ontvanger is nie. Hier word 'n baudtempo gebruik, wat die seriële dataversend-/ontvangspoed is en wat deur beide kante gestel word voor data-oordragte. Daarbenewens word spesiale bisse soos begin- en stopbissies by die begin en einde van die datapakket gevoeg om 'n volledige UART-datapakket te vorm. Figuur 3 toon die UART-datapakketstruktuur terwyl Figuur 4 'n UART 8-bis-datapakket sonder 'n pariteitsbis toon.
Figuur 3. UART-datapakketstruktuur
UART-datapakketstruktuur

Figuur 4. UART 8-bis datapakketformaat
Datapakketformaat
Elke deel van die UART-datapakket word hieronder in volgorde bekendgestel.

  • Begin Bietjie: Dit dui die begin van 'n datapakket aan. Die UART TX-pen bly gewoonlik op 'n hoë logiese vlak voor transmissie begin. As data-oordrag begin, sal die UART-sender die TX-pen van hoog na laag trek, dws van 1 tot 0, en dit dan vir een kloksiklus daar hou. Die UART-ontvanger sal data begin lees wanneer 'n hoë na lae oorgang op die RX-pen bespeur is.
  • Data: Dit is die werklike data wat oorgedra is, met 'n datalengte van 7, 8 of 9 bisse. Die data word gewoonlik eers met die LSB oorgedra.
  • Pariteit Bit: Die aantal logiese "1" in die data word gebruik om te bepaal of enige data tydens transmissie verander het. Vir ewe pariteit moet die totale aantal logika "1" in die data 'n ewe getal wees, omgekeerd moet die totale aantal logika "1" in die data 'n onewe getal vir onewe pariteit wees.
  • Stop Bietjie: Dit dui die einde van 'n datapakkie aan, waar die UART-sender die TX-pen van laag na hoog sal trek, dit wil sê van 0 tot 1, en dit dan daar sal hou vir 'n 1 of 2-bis tydperk.

Soos voorheen genoem, aangesien daar geen kloksein in die UART-kring is nie, moet dieselfde seriële data-versend-/ontvangspoed, wat bekend staan ​​as die baudtempo, tussen die sender en ontvanger gedefinieer word om foutvrye transmissie te implementeer. Die baudtempo word gedefinieer deur die aantal bisse wat per sekonde oorgedra word, in bps (bis per sekonde). Sommige standaard en algemeen gebruikte baud rate is 4800bps, 9600bps, 19200bps, 115200bps, ens. Die ooreenstemmende tyd wat benodig word vir die oordrag van 'n enkele databis word hieronder getoon.
Tabel 1. Baud-tempo vs. 1-bis-oordragtyd 

Baud-koers 1-bis transmissie Tyd
4800 bps 208.33 µs
9600 bps 104.16 µs
19200 bps 52.08 µs
115200 bps 8.68 µs

Hulpbronaflaai en voorbereiding

Hierdie hoofstuk sal die toepassingskode en die sagteware-instrument wat gebruik word bekendstel, asook hoe om die gids en file pad.

Firmware-biblioteek 

Maak eers seker dat die Holtek HT32-firmware-biblioteek afgelaai is voordat die toepassingskode gebruik word. Die aflaaiskakel word hieronder getoon. Hier is twee opsies, HT32_M0p_Vyyyymmdd.zip vir die HT32F5xxxx-reeks en HT32_M3_Vyyyymmdd.zip vir die HT32F1xxxx-reeks. Laai die verlangde af en pak dit uit file.

Die zip file bevat verskeie vouers wat geklassifiseer kan word as Dokument, Firmware Biblioteek, Tools en ander items, waarvan die plasingspad in Figuur 5 getoon word. Die HT32-firmware-biblioteek zip file met a file naam van HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip is onder die Firmware_Library-lêergids geleë.

Figuur 5. HT32_M0p_Vyyyymmdd.zip Inhoud
Inhoud

Aansoek kode
Laai die toepassingskode af vanaf die volgende skakel. Die toepassingskode is in 'n zip verpak file met a file naam van HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Sien Figuur 6 vir die file naamkonvensies.

Figuur 6. Toepassingskode File Naam Inleiding 

Aflaai skakel: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Aansoek kode

File en Gidskonfigurasie
Aangesien die toepassingskode nie die HT32-firmware-biblioteek bevat nie files, die toepassingskode en firmware-biblioteek uitgepak files moet in die regte pad geplaas word voordat die samestelling begin word. Die aansoek kode zip file bevat gewoonlik een of meer vouers, soos toepassing en biblioteek, soos getoon in Figuur 7. Plaas die toepassingslêer onder die HT32-firmware-biblioteek se wortelgids om die file padkonfigurasie, soos getoon in Figuur 8. Alternatiewelik, pak die toepassingskode en HT32-firmware-biblioteek gelyktydig in dieselfde pad uit om dieselfde konfigurasieresultate te bereik.

Figuur 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Inhoud
Inhoud

Figuur 8. Dekompressiepad
Dekompressiepad

Terminale sagteware
Die toepassingskode kan boodskappe deur die COM-poort oordra om funksiekeuse of statusvertoning te implementeer. Dit vereis dat die gasheerkant die terminale sagteware vooraf moet installeer. Gebruikers kan toepaslike verbindingsagteware kies, of gratis gelisensieerde sagteware soos Tera Term gebruik. In die toepassingskode is die UART-kanaal gekonfigureer met 'n woordlengte van 8-bis, geen pariteit, 1 stopbis en 'n baudsnelheid van 115200bps.

Funksionele beskrywing

Hierdie hoofstuk sal 'n funksionele beskrywing vir die toepassingskode verskaf, insluitend inligting oor die gidsstruktuur, API-argitektuur, instellingsbeskrywing, ens.

Gidsstruktuur
Die toepassingskode file bevat 'n toepassingslêergids. Die volgende laag is die "Module_UART"-lêergids wat twee toepassingsprogramme, "UART_Module_Ex" bevatample" en "UART_Bridge". Die relevante files word hieronder gelys en beskryf.
Tabel 2. Toepassingskodegidsstruktuur

gids / File Naam Beskrywing
\\toepassing\Module_UART\UART_Module_Example*1
_CreateProject.bat Batch skrifte vir die skep van projek files
_ProjectSource.ini Inisialisering file vir die byvoeging van bronkode by projekte
ht32_board_config.h Opstelling file verband hou met IC perifere I/O-opdrag
ht32fxxxxx_01_it.c Onderbreek diensprogram file
hoof.c Hoofprogram bronkode
\\toepassing\Module_UART\UART_Bridge*2
_CreateProject.bat Batch skrifte vir die skep van projek files
_ProjectSource.ini Inisialisering file vir die byvoeging van bronkode by projekte
ht32_board_config.h Opstelling file verband hou met IC perifere I/O-opdrag
ht32fxxxxx_01_it.c Onderbreek diensprogram file
hoof.c Bronkode van die hoofprogram
uart_bridge.h uart_bridge.c UART-brugkop file en bronkode file
\\utilities\middelware
uart_module.h*3 uart_module.c*3 API-opskrif file en bronkode file
\\utilities\algemeen
ringbuffer.h ring_buffer.c Sagteware ring buffer kop file en bronkode file

Let wel: 

  1. In die "UART_Module_Example" toepassingskode, word die API-lees- en skryfbewerkings op 'n terugloop-manier uitgevoer, verwys na die "API Usage Examples”-afdeling vir meer besonderhede.
  2.  In die "UART_Bridge"-toepassingskode word twee UART-kanale, UART CH0 en UART CH1, geaktiveer, en pasgemaakte kommunikasieprotokol deur die COMMAND-strukture word tussen die twee UART-toestelle geïmplementeer. Vir meer inligting, verwys na die "API Gebruik Examples” afdeling.
  3. Die toepassingskode moet die uart_module.c/h gebruik files wat 'n firmware biblioteek weergawe vereiste het. Die vereiste kan van tyd tot tyd verander volgens die opdatering. Om die huidige vereiste firmware-biblioteekweergawe te bevestig, verwys na die afhanklikheidskontrole-inhoud deur te soek vir die sleutelwoord "Afhanklikheidkontrole" in die hoof.c file. As die firmware-biblioteekweergawe nie aan die vereistes voldoen nie, laai die nuutste weergawe af vanaf die skakel wat in die "Firmware-biblioteek"-afdeling verskaf word.

API argitektuur
Elke API het 'n belangrike parameter CH, wat die UART-kanaal is. Dit bepaal watter UART-kanaal beheer moet word. Tans word tot vier UART-kanale ondersteun en daarom word vier konstante simbole soos volg gedefinieer. Dit word gebruik as die parameter CH wat die API's die basis vir beheer verskaf.

  • UARTM_CH0: invoerparameter – beheer of konfigureer UART CH0
  • UARTM_CH1: invoerparameter – beheer of konfigureer UART CH1
  • UARTM_CH2: invoerparameter – beheer of konfigureer UART CH2
  • UARTM_CH3: invoerparameter – beheer of konfigureer UART CH3

Geheuespasie sal nie vermors word as slegs een UART-kanaal gebruik word nie. Dit is omdat die aantal ondersteunde UART-kanale ingestel kan word en die ongebruikte UART-kanaalkode sal deur die voorverwerker verwyder word om beskikbare geheuespasie te vergroot. Die API-argitektuur word in Figuur 9.

Figuur 9. API-argitektuurblokdiagram
Argitektuur Blokdiagram

Elke API is saamgestel uit vier groepe UART-kanaalverwante instellings of kontroles sodat gebruikers slegs die verlangde CH-parameter hoef in te voer. Om die relevante API te konfigureer, is dit slegs nodig om 'n bykomende UART basiese konfigurasie parameter tabel te hê met die struktuurvorm, USART_InitTypeDef. Die API sal die basiese UART-konfigurasie implementeer volgens die parameterinhoud in die tabel. Verwys na die "API-beskrywing" afdeling vir die UART basiese konfigurasie struktuur tabel.

Die uart_module.c/.h files bevat slegs die onderbreking (CHx_IRQ) ​​en statustabel (CHx Status) van elke UART-kanaal terwyl al die instellings wat vir UART-kommunikasie benodig word, deur ht32_board_config.h verskaf word. Die hardeware relevante parameters in die ht32_board_config.h file word in die tabel hieronder getoon. Meer besonderhede word verskaf in die "Instellingsbeskrywing"-afdeling.

Die hardeware-relevante parameters in die ht32_board_config.h sluit I/O-instellings en fisiese UART-poortinstellings in, soos volg.

Tabel 3. Definisie Simbole in ht32_board_config.h

Simbool Beskrywing
HTCFG_UARTM_CH0 Fisiese UART-poortnaam; Bvample: UART0, UART1...
HTCFG_UARTM0_TX_GPIO_PORT Definieer die poortnaam van TX vir CH0; Bvample: A, B, C...
HTCFG_UARTM0_TX_GPIO_PIN Definieer die pinnommer van TX vir CH0; Bvample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Definieer die poortnaam van RX vir CH0; Bvample: A, B, C...
HTCFG_UARTM0_RX_GPIO_PIN Definieer die pinnommer van TX vir CH0; Bvample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Definieer die TX buffer grootte vir CH0; Bvampwe: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Definieer die RX buffer grootte vir CH0; Bvampwe: 128

Om die UART-kanaal AFIO-konfigurasie te wysig, verwys na die relevante toesteldatablad. Tans tree slegs die I/O-definisies vir UART CH0 in werking aangesien slegs UART CH0 in ht32_board_config.h opgestel is. Om UART CH1~3 by te voeg, moet hul I/O-definisies voltooi word deur na die UART CH0-definisie te verwys of na die "Instellingswysiging en Gereelde Vrae"-afdeling te verwys.

Daar is drie hoofkenmerke van API-argitektuur: 

  1. Tot vier UART-kanale word ondersteun. Hul invoerparameters is UARTM_CH0, UARTM_CH1, UARTM_CH2 en UARTM_CH3.
  2.  Die aantal UART-kanale kan ingestel word en ongebruikte kanale sal nie beskikbare geheuespasie verminder nie.
  3. Al die UART-instellings en I/O-definisies is heeltemal geskei van die API's. Dit verhoog die bestuursgerief om waardes in te stel en verminder die moontlikheid van verkeerde of ontbrekende instellings.

Instelling Beskrywing 

Hierdie afdeling sal die parameterinstellings in die ht32_board_config.h en uart_module.h bekendstel files.

  1. ht32_board_config.h: Hierdie file word gebruik vir pendefinisies en relevante instellings vir ontwikkelingsbord, wat die UART IP-kanaal (UART0, UART1, USART0 ...) wat deur die Starter Kit (SK) gebruik word, insluit, ooreenstemmende TX/RX-penliggings en TX/RX-buffergrootte. Figuur 10 toon die instellingsinhoud van die HT32F52352 Starter Kit. Afhangende van die funksionele integrasie van die ontwikkeling, kan gebruikers na die "Pin Assignment"-afdeling van die datablad van die gebruikte toestel verwys om die pen-definisies te implementeer. Meer besonderhede oor instellingswysiging sal beskryf word in die "Instellingswysiging en Gereelde Vrae" afdeling.
    Figuur 10. ht32_board_config.h Instellings (HT32F52352)
    Instellings
  2. uart_module.h: Dit is die API-opskrif file gebruik word deur die toepassingskode, wat die relevante verstekinstellings, funksiedefinisies, ens insluit. Soos getoon in Figuur 11, kan die verstekinstellingsinhoud deur eksterne konfigurasies oorskryf word, soos die instellings in die ht32_board_config.h file.
    Figuur 11. Standaardinstellings in uart_module.h
    Verstek instellings
API beskrywing
  1. Toepassingskode datatipe beskrywing.
    • USART_InitTypeDef
      Dit is die UART basiese konfigurasie struktuur wat saamgestel is uit BaudRate, WordLength, StopBits, Pariteit en Modus konfigurasies, soos hieronder getoon.
      Veranderlik Naam Tik Beskrywing
      USART_BaudRate u32 UART kommunikasie baud rate
      USART_WordLength u16 UART kommunikasie woord lengte: 7, 8 of 9 bisse
      USART_StopBits u16 UART kommunikasie stop bis lengte: 1 of 2 bisse
      USART_Pariteit u16 UART kommunikasiepariteit: ewe, onewe, merk, spasie of geen pariteit
      USART_modus u16 UART kommunikasie modus; die API's ondersteun slegs normale modus
  2. Voordat u die API-funksies gebruik, voltooi die basiese UART-konfigurasie in die hoofprogram. Die basiese UART-konfigurasie vir hierdie toepassingskode word in Figuur 12 getoon. Hier is die baudtempo 115200bps, woordlengte is 8-bis, stopbislengte is 1-bis, en daar is geen pariteit nie.
    Figuur 12. UART Basiese Konfigurasie
    Basiese konfigurasie
  3. Figuur 13 toon die API-funksies wat in die uart_module.h verklaar is file. Die volgende tabelle verduidelik die funksie, invoerparameters en gebruik van die API-funksies.
    Figuur 13. API-funksieverklarings in uart_module.h 
    API-funksieverklarings
Naam nietig UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funksie Inisialisering van UART-module
  Invoer CH UART kanaal
pUART_Init UART basiese konfigurasie struktuur wyser
 uRxTimeOutValue UART RX EIEU uittelwaarde. Wanneer die RX EIEU nuwe data ontvang, sal die teller herstel en herbegin. Sodra die teller die voorafbepaalde time-out-waarde bereik en die ooreenstemmende time-out-onderbreking geaktiveer is, sal 'n time-out-onderbreking gegenereer word.
 Gebruik UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);// Voer UART basiese konfigurasie uit//Verwys na Figuur 12 vir USART_InitStructure-konfigurasie
Naam u32 UARTM_WriteByte(u32 CH, u8 uData)
Funksie UART-module skryfgreepbewerking (TX)
Invoer CH UART kanaal
uData Die data wat geskryf moet word
Uitset SUKSES Suksesvol
FOUT Misluk
Gebruik UARTM_WriteByte(UARTM_CH0, 'A'); //UART skryf 1 greep – 'A'
Naam u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funksie UART-module skryfbewerking (TX)
 Invoer CH UART kanaal
pBuffer Bufferwyser
uLengte Die lengte van die data wat geskryf moet word
Uitset SUKSES Suksesvol
FOUT Misluk
 Gebruik u8 Test[] = “Dit is toets!\r\n”; UARTM_Write(UARTM_CH0, Toets, groottevan(Toets) -1); //UART skryf pBuffer-data
Naam u32 UARTM_ReadByte(u32 CH, u8 *pData)
Funksie UART-module lees byte-bewerking (RX)
Invoer CH UART kanaal
pData Die adres om die gelees data te plaas
Uitset SUKSES Suksesvol
FOUT Misluk (geen data)
   Gebruik u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//As UARTM_ReadByte() SUCCESS terugstuur, dan skryf UART hierdie datagreep
Naam u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funksie UART-module leesbewerking (RX)
 Invoer CH UART kanaal
pBuffer Bufferwyser
uLengte Die lengte van die data wat gelees moet word
Uitset Lees tel Die lengte van die data is gelees
     Gebruik u8 Toets2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Toets2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Toets2, Len);}//UARTM_Read() lees 5 grepe data en stoor data in Toets2, en ken die geleesgreeptelling toe to Len//Skryf die data afkomstig van Toets2
Naam u32 UARTM_GetReadBufferLength(u32 CH)
Funksie Verkry die leesbufferlengte (RX)
Invoer CH UART kanaal
Uitset uLengte Lees bufferlengte
  Gebruik UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART module inisialisering while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Wag totdat UARTM_ReadBuffer 5 grepe data ontvang het
Naam u32 UARTM_GetWriteBufferLength(u32 CH)
Funksie Verkry die skryfbufferlengte (TX)
Invoer CH UART kanaal
Uitset uLengte Skryf bufferlengte
Naam u8 UARTM_IsTxFinished(u32 CH)
Funksie Verkry die TX-status
Invoer CH UART kanaal
Uitset WAAR TX-status: klaar
ONWAAR TX-status: nie klaar nie
      Gebruik UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == ONWAAR) #elsewhile (1) #endif //Hierdie API kan gebruik word om die TX-status na te gaan, soos hierbo getoon; wag totdat die UARTM_WriteByte() API klaar is, dit wil sê, TX-status is WAAR, en gaan dan voort met die daaropvolgende aksies.//'n Beperking word bygevoeg omdat hierdie funksie nie bygevoeg is nie totdat die SVN-weergawenommer in uart_module.c 525 is.
Naam nietig UARTM_DiscardReadBuffer(u32 CH)
Funksie Gooi die data in die leesbuffer weg
Invoer CH UART kanaal

API-gebruik Bvamples 

Hierdie afdeling sal API skryf en lees eksamplese van die "Module_UART"-toepassingskode met behulp van die inisialiseringsproses en die "UART_Module_Example” aansoekkode proses. Voordat gebruikers die API's gebruik, moet gebruikers die API-opskrif insluit file in die hoofprogrambronkode file (#sluit “middleware/uart_module.h” in).

Soos getoon in Figuur 14, definieer eers die UART basiese konfigurasiestruktuur wanneer u die inisialiseringsproses betree. Stel dan die UART basiese konfigurasiestruktuurlede op, insluitend BaudRate, WordLength, StopBits, Parity en Mode. Laastens, roep die API-inisialiseringsfunksie, waarvan die voltooiing die einde van die inisialiseringsproses aandui. Hierna kan gebruikers voortgaan met die skryf- en leesbewerkings gebaseer op die voorafbepaalde UART basiese konfigurasie.

Figuur 14. Inisialisering Vloeidiagram
Inisialisering Vloeidiagram

Die "UART_Module_Example" toepassingskode demonstreer die API-lees- en skryfbewerkings op 'n terugloop-manier. Die vloeidiagram hiervoor word in Figuur 15 getoon. Die API-funksies wat gebruik word, sluit in UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() en UARTM_GetReadBufferLength(). Hul beskrywing word in die "API-beskrywing"-afdeling verskaf.

Figuur 15. Vloeidiagram van Skryf en Lees Examples
Vloeidiagram van Skryf en Lees Examples

Daar is nog 'n "UART_Bridge"-toepassingskode onder die "Module_UART"-lêergids wat verband hou file beskrywing word in die "Gidsstruktuur"-afdeling bekendgestel. Die "UART_Bridge"-toepassingskode aktiveer twee UART-kanale, UART CH0 en UART CH1, en pas dan die kommunikasieprotokol tussen die twee UART-toestelle aan deur COMMAND-strukture, gCMD1 en gCMD2. Dit word gedefinieer in uart_bridge.c, soos hieronder getoon. UARTBridge_CMD1TypeDef gCMD1:

Veranderlik Naam Tik Beskrywing
u Kopskrif u8 Opskrif
uCmd u8 Bevel
uData[3] u8 Data

UARTBridge_CMD2TypeDef gCMD2:

Veranderlik Naam Tik Beskrywing
u Kopskrif u8 Opskrif
uCmdA u8 Opdrag A
uCmdB u8 Opdrag B
uData[3] u8 Data

In die "UART_Bridge"-toepassingskode, gebruik gCMD1 om data as 'n opdragpakkie te ontvang en ontleed dit dan. Stel dan gCMD2 as 'n antwoordpakket volgens die pasgemaakte kommunikasieprotokol en stuur dit. Die volgende is 'n example van 'n opdragpakkie gCMD1) en 'n antwoordpakkie (gCMD2). Opdragpakket (UARTBridge_CMD1TypeDef gCMD1):

Byte 0 Byte 1 Byte 2 ~ Byte 4
u Kopskrif uCmd uData [3]
"A" "1" "x, y, z"

Antwoordpakket (UARTBridge_CMD2TypeDef gCMD2):

Byte 0 Byte 1 Byte 2 Byte 3 ~ Byte 5
u Kopskrif uCmdA uCmdB uData [3]
"B" "a" "1" "x, y, z"

Hulpbronberoep
Neem die HT32F52352 as 'n example, die hulpbronne wat deur die UART-module beset word, word hieronder getoon.

HT32F52352
ROM grootte 946 Bytes
RAM grootte 40*1 + 256*2 Bytes

Let wel:

  1. Globale veranderlikes, insluitend vlae en status vir 'n enkele kanaal, beslaan 40 grepe RAM.
  2.  Dit is vir 'n toestand waar 'n enkele kanaal gebruik word en die TX/RX-buffergrootte 128/128 grepe is. Die buffergrootte kan volgens die toepassingsvereistes ingestel word.

Tabel 4. Toepassingskode Hulpbronberoep 

  • Samestelling omgewing: MDK-Arm V5.36, ARMCC V5.06-opdatering 7 (bou 960)
  • Optimaliseer opsie: Vlak 2 (-O2)

Gebruiksaanwysings

Hierdie hoofstuk sal die omgewingsvoorbereiding vir die "Module_UART"-toepassingskode bekendstel, sowel as die samestelling en toetsstappe.

Omgewingsvoorbereiding
Die hardeware en sagteware benodig vir die "Module_UART"-toepassingskode word hieronder gelys.
Tabel 5. Hardeware/sagteware Omgewingsvoorbereiding 

Hardeware/sagteware Tel Let wel
Starter Kit 1 Hierdie toepassingsnota gebruik die HT32F52352 Starter Kit as 'n example
USB kabel 1 Mikro USB, gekoppel aan rekenaar
Aansoek kode Die aflaai pad, file en gidskonfigurasie word in die "Hulpbronaflaai en voorbereiding"-afdeling bekendgestel. Pad: "\\toepassing\Module_UART\UART_Module_Example ”
Tera Termyn Verwys na die afdeling "Terminaalsagteware".
Keil IDE Keil uVision V5.xx

Gebruik eers die HT32F52352 Starter Kit gekombineer met die Virtual COM Port (VCP) funksie van e-Link32 Lite vir die UART toepassing inleiding. Dit vereis dat die volgende omgewingsvoorbereiding geïmplementeer word:

  1. Daar is twee USB-koppelvlakke op die bord. Gebruik die USB-kabel om die rekenaar en die eLink32 Lite-koppelvlak op die bord te koppel soos getoon in Figuur 16-(a).
  2. Aangesien die toepassingskode die e-Link32 Lite Virtual COM Port (VCP)-funksie moet gebruik, maak seker dat die PAx*2 en DAP_Tx van UART Jumper-J2*1 met 'n jumper verkort is. Die J2-ligging word deur Figuur 16-(b) aangedui.

Let wel

  1. J2 op die Starter Kit het twee opsies, PAx en DAP_Tx verkort of PAx en RS232_Tx verkort. Verwys na die Starter Kit-gebruikershandleiding vir die gedetailleerde instellingsfunksies.
  2. Die MCU UART RX pen ligging op verskillende Starter Kits verskil. Hierdie example gebruik PAx om die RX-pen aan te dui.

Figuur 16. HT32 Starter Kit Blokdiagram
Kit Blokdiagram

Gebruik nou die gebruikersteikenbord gekombineer met die virtuele COM-poort (VCP)-funksie van die e-Link32 Pro vir die UART-toepassingsinleiding. Dit vereis dat die volgende omgewingsvoorbereiding geïmplementeer word:

  1. Die een kant van e-Link32 Pro is met 'n Mini USB-kabel aan 'n rekenaar gekoppel en die ander kant is deur sy 10-bis grys kabel aan die gebruikerteikenbord gekoppel. Die verbinding tussen die SWD-koppelvlakke van die kabel en teikenbord word geïmplementeer deur Dupont-lyne te gebruik, soos getoon in Figuur 17-(a).
  2. Die reekskommunikasiepenne van die e-Link32 Pro is Pin#7 VCOM_RXD en Pin#8-VCOM_TXD. Dit moet aan die TX- en RX-penne van die gebruikerteikenbord gekoppel word, soos in Figuur 17-(b) getoon.
    Figuur 17. e-Link32 Pro + Gebruikersteikenbordblokdiagram
    Gebruikers teikenbord

Samestelling en toets
Hierdie afdeling sal die "toepassing\Module_UART\UART_Module_Example” as 'n example om die samestelling en toetsprosesse bekend te stel. Voor dit, maak seker dat al die voorbereidings wat in die vorige afdeling beskryf is, geïmplementeer is en dat die Tera Term terminale sagteware afgelaai is.

Die gedetailleerde operasiestappe word hieronder opgesom.
Stap 1. Aanskakeltoets

Stel die hardeware-omgewing op soos beskryf in die vorige afdeling. Nadat dit aangeskakel is, sal die D9-krag-LED links onder van die Starter Kit verlig word. Die D1 USB-LED op die e-Link32 Lite regs bo sal verlig word nadat die USB-opsomming voltooi is. As D1 na 'n lang tydperk nie verlig word nie, bevestig of die USB-kabel in staat is om te kommunikeer. Indien nie, verwyder dit dan en plaas dit weer in.

Stap 2. Genereer 'n projek
Maak die toepassing\Module_UART\UART_Module_Ex oopample gids, klik op die _CreateProject.bat file om 'n projek te genereer, soos getoon in Figuur 18. Aangesien hierdie toepassingsnota die HT32F52352 Starter Kit gebruik, maak die Keil IDE-projek “Project_52352.uvprojx” onder die MDK_ARMv5-lêergids oop.

Figuur 18. Voer _CreateProject.bat uit om projek te genereer
Genereer projek

Stap 3. Stel saam en programmeer
Nadat die projek oopgemaak is, klik eers op “Bou” (of gebruik kortpad “F7”), klik dan op “Laai af” (of gebruik kortpad “F8”). Hierna sal die bou- en aflaairesultate in die Bou-uitvoer-venster vertoon word. Sien Figuur 19.

Figuur 19. Bou en laai resultate af
Bou en laai resultate af

Stap 4. Maak die Tera Term-sagteware oop en stel die seriële poort op
Maak die Tera Term-sagteware en die COM-poort oop. Let daarop of die COM-poortnommer wat deur die Starter Kit gegenereer word, korrek is of nie. Klik dan op "Setup >> Serial Port" om die konfigurasie-koppelvlak te betree. Die UART-koppelvlakkonfigurasie van die "Module_UART"-toepassingskode word in die "Terminaalsagteware"-afdeling beskryf. Die opstellingresultaat word in Figuur 20 getoon.

Figuur 20. Tera Term Serial Port Setup Result
Opstel resultaat
Stap 5. Stel die stelsel terug en toets
Druk die SK-terugstelsleutel – B1 Herstel. Hierna, 'n "ABCThis is toets!" boodskap sal wees
versend deur die API en sal in die Tera Term-venster vertoon word, soos in Figuur 21 getoon. Wat die ontvangfunksie betref, wanneer data in die Tera Term-venster ingevoer word, sal die relevante API gebruik word om die ontvangbufferlengte te bepaal. Wanneer die data wat deur die rekenaar ontvang word 5 grepe bereik, sal die ontvangde 5 grepe data opeenvolgend uitgestuur word. Soos getoon in Figuur 22, is die data wat opeenvolgend ingevoer word "1, 2, 3, 4, 5", wat deur die API ontvang en bepaal word. Hierna sal die data "1, 2, 3, 4, 5" na die vyf invoere gedruk word.

Figuur 21. “Module_UART” Toepassingskode Funksionele Toets – Versend
Toepassingskode funksionele toets

Figuur 22. “Module_UART” Toepassingskode Funksionele Toets – Ontvang
Toepassingskode funksionele toets

Oorplantingsinstruksies
Hierdie afdeling sal bekendstel hoe om die API's in die gebruiker se projekte te integreer.
Stap 1. Voeg die uart_module.c by file in die projek. Regskliek op die User-lêergids. Kies "Voeg bestaande by Files na Groepeer 'Gebruiker'...", kies dan die uart_module.c file en klik op “Voeg by”, soos getoon in Figuur 23. Verwys na die “Directory Structure”-afdeling vir die file pad beskrywing.

Figuur 23. Voeg uart_module.c by File om te projek
File om te projek

Stap 2. Voeg die ring_buffer.c by file in die projek. Regskliek op die User-lêergids. Kies "Voeg bestaande by Files na Groepeer 'Gebruiker'...", kies dan die ring_buffer.c file en klik op “Voeg by”, soos getoon in Figuur 24.\ Verwys na die “Directory Structure”-afdeling vir die file pad beskrywing.
Figuur 24. Voeg ring_buffer.c by File om te projek 
File om te projek

Stap 3. Sluit die API-opskrif in file in die begin van main.c, soos getoon in Figuur 25. (Ext: #include “middleware/uart_module.h”)
Figuur 25. Sluit API Header in File aan hoof.c
Sluit API-opskrif in File

Stap 4. Implementeer die instellings wat benodig word vir die UART-kommunikasie deur die ht32_board_config.h file. Dit word in detail bekendgestel in die afdelings "Instellingsbeskrywing" en "Instellingswysiging en Gereelde Vrae".

Instellingswysiging en Gereelde Vrae 

Hierdie afdeling sal bekendstel hoe om die UART-instellings te wysig en verduidelik 'n paar algemene vrae wat tydens gebruik teëgekom word.

Verander UART-pentoewysing 

  1. Met verwysing na die HT32F52352-datablad “Pin Assignment”-hoofstuk, soek die Alternatiewe Funksie-kartering-tabel op wat die AFIO-funksies van die toesteltipe lys. Vir die UART-relevante penne, verwys na die "AF6 USART/UART"-kolom, soos getoon in Figuur 26.
    Figuur 26. HT32F52352 Alternatiewe Funksie Kartering Tabel
    Alternatiewe funksie kartering tabel
  2. Hierdie stap sal gebruikers lei om die ooreenstemmende UART-penne op te spoor deur die bostaande tabel te gebruik. Die HT32F52352 example gebruik USART1 as die verstekkanaal. Hier is die TX- en RX-penne USR1_TX en USR1_RX en is onderskeidelik op PA4 en PA5 geleë. Figuur 27 toon die penkorrespondensie sowel as die pendefinisies in “ht32_board_config.h”. Die leë velde van "Pakket" in die pentoewysingstabel beteken dat daar geen relevante GPIO's in hierdie pakket is nie. Om die UART-pennetjies te verander, vind die teikenpen-liggings en herdefinieer die penne met die "ht32_board_config.h" file.
    Figuur 27. Penkorrespondensie en instellingswysiging
    Verandering van instellings

Voeg 'n UART-kanaal by
Neem die HT32F52352 HTCFG_UARTM_CH1 as 'n example, hier word beskryf hoe om 'n nuwe UART-kanaal by te voeg.

Wysig die ht32_board_config.h file
Met verwysing na die HT32F52352-datablad “Pin Assignment”-hoofstuk, soek die Alternatiewe Funksie-kartering-tabel op wat die AFIO-funksies van die toesteltipe lys. Aangesien USART1 as HTCFG_UARTM_CH0 gebruik is, kan die nuut bygevoegde HTCFG_UARTM_CH1 USART0 kies. Hier is die TX- en RX-penne onderskeidelik op PA2 en PA3 geleë, soos getoon in die boonste helfte van Figuur 28. Die ooreenstemmende wysigings word geïmplementeer deur gebruik te maak van kodelyne 120~126 in ht32_board_config.h, soos getoon deur die rooi stippelblokkie in Figuur 28.

Figuur 28. Voeg 'n UART-kanaal by
UART-kanaal

Gereelde vrae
Q: In stap 5 van die samestelling en toets afdeling is die oordrag funksionele toets normaal. Hier, die "ABCThis is toets!" boodskap is suksesvol vertoon, maar vir die ontvangfunksie, hoekom word die vyf invoerwaardes nie teruggestuur en vertoon nie?
A: Kontroleer of die MCU UART RX- en DAP_Tx-penne van UART Jumper-J2 met 'n jumper verkort is. Aangesien die "Module_UART"-toepassingskode die virtuele COM-poort (VCP) van e-Link32 Lite moet gebruik, moet die kortsluitinginstelling op die linker twee penne van UART Jumper-J2 toegepas word, soos in Figuur 29 getoon.

Figuur 29. UART Jumper-J2-instelling
UART Jumper

V: Na “Build” (of kortpad “F7”) uit te voer, verskyn 'n foutboodskap wat aandui dat die firmware-biblioteekweergawe ouer is as die een wat vereis word? Sien Figuur 30.
A: Die implementering van die "Module_UART"-toepassingskode moet die uart_module.c/h insluit files wat 'n vereiste het vir 'n sekere firmware-biblioteekweergawe. Wanneer so 'n foutboodskap verskyn, beteken dit dat die huidige gebruikte firmware-biblioteek 'n ouer weergawe is. Daarom is dit nodig om die nuutste weergawe af te laai deur die skakel wat in die "Firmware-biblioteek"-afdeling verskaf word.

Figuur 30. Firmware-biblioteekweergawe-foutboodskap
Weergawe foutboodskap

Gevolgtrekking

Hierdie dokument het 'n basiese inleiding verskaf om gebruikers te help met 'n beter begrip van die "Module_UART"-toepassingskode en UART-kommunikasieprotokol. Dit is gevolg deur die hulpbronaflaai en voorbereiding. Die Hoofstuk Funksionele Beskrywing het die file gidsstruktuur, die API-argitektuur, API-beskrywing en API-gebruik bvamples. Die Gebruiksaanwysings-hoofstuk het die omgewingsvoorbereiding, samestelling en toetsing van die "Module_UART"-toepassingskode gedemonstreer. Dit het ook instruksies verskaf vir die instelling van kodeoorplanting en wysiging, asook 'n verduideliking van 'n paar algemene probleme wat teëgekom kan word. Dit alles saam sal gebruikers in staat stel om vinnig te verstaan ​​hoe om die API's te gebruik en daarna die hoeveelheid tyd om te begin verminder.

Verwysingsmateriaal

Vir meer inligting, verwys na die Holtek webwebwerf: www.holtek.com

Weergawes en wysigingsinligting

Datum Skrywer Loslaat Wysigingsinligting
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Eerste weergawe

Disclaimer

Alle inligting, handelsmerke, logo's, grafika, video's, oudiosnitte, skakels en ander items wat hierop verskyn webwebwerf ('Inligting') is slegs vir verwysing en is onderhewig aan verandering te eniger tyd sonder vooraf kennisgewing en volgens die diskresie van Holtek Semiconductor Inc. en sy verwante maatskappye (hierna 'Holtek', 'die maatskappy', 'ons', ' ons' of 'ons'). Terwyl Holtek poog om die akkuraatheid van die inligting hieroor te verseker webwebwerf, word geen uitdruklike of geïmpliseerde waarborg deur Holtek gegee vir die akkuraatheid van die inligting nie. Holtek sal geen verantwoordelikheid vir enige onjuistheid of lekkasie dra nie.
Holtek sal nie aanspreeklik wees vir enige skade (insluitend maar nie beperk nie tot rekenaarvirus, stelselprobleme of dataverlies nie) hoegenaamd wat voortspruit uit die gebruik van of in verband met die gebruik van hierdie webwebwerf deur enige party. Daar kan skakels in hierdie area wees, wat jou toelaat om die webwebwerwe van ander maatskappye.
Hierdie webwebwerwe word nie deur Holtek beheer nie. Holtek sal geen verantwoordelikheid en geen waarborg dra vir enige inligting wat op sulke webwerwe vertoon word nie. Hiperskakels na ander webwebwerwe is op eie risiko.

Beperking van aanspreeklikheid

In geen geval sal Holtek Beperk teenoor enige ander party aanspreeklik wees vir enige verlies of skade hoegenaamd of hoe ook al direk of indirek veroorsaak in verband met jou toegang tot of gebruik van hierdie webwebwerf, die inhoud daarop of enige goedere, materiaal of dienste.

Beheersende wet
Die vrywaring vervat in die webwebwerf sal beheer word deur en geïnterpreteer word in ooreenstemming met die wette van die Republiek van China. Gebruikers sal hulle onderwerp aan die nie-eksklusiewe jurisdiksie van die howe in die Republiek van China.

Opdatering van vrywaring
Holtek behou die reg voor om die Vrywaring te eniger tyd by te werk met of sonder vooraf kennisgewing, alle veranderinge is onmiddellik van krag nadat dit aan die webwebwerf.

Dokumente / Hulpbronne

HOLTEK HT32 MCU UART Aansoeknota [pdfGebruikershandleiding
HT32 MCU, UART Aansoeknota, HT32 MCU UART, Aansoeknota, HT32, MCU UART Aansoeknota, HT32 MCU UART Aansoeknota

Verwysings

Los 'n opmerking

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde is gemerk *