HOLTEK HT32 MCU UART -sovellus Huomautus Käyttöopas
HOLTEK HT32 MCU UART -sovellus Huomautus

Johdanto

Universal Asynchronous Receiver/Transmitter – UART on laajalti käytetty sarjasiirtoliitäntä, joka tarjoaa joustavan asynkronisen full-duplex-tiedonsiirron. Tässä sovellushuomautuksessa annettu "Module_UART" -sovelluskoodi käyttää TX/RX-keskeytyksiä ohjelmistorengaspuskureiden kanssa toteuttaakseen yksinkertaisia ​​UART-lähetys-/vastaanottotoimintoja API:iden kautta, joiden liittyvät toiminnot kuvataan alla. Tämä yksinkertaistaa koko tiedonsiirtoprosessia ja antaa käyttäjille mahdollisuuden ymmärtää ja ottaa käyttöön UART-viestintäsovelluksia nopeasti.

  • Lähetys/vastaanottotoiminnot: tavun luku, tavun kirjoitus, puskurin luku, puskurin kirjoitus jne.
  • Tilatoiminnot: saada puskurin pituus, lähetyksen tila jne.

Tämä asiakirja esittelee ensin UART-viestintäprotokollan, joka auttaa käyttäjiä ymmärtämään paremmin UART-viestintää periaatteesta sovellukseen. Tämän jälkeen ladataan ja valmistetaan sovelluskoodia varten tarvittavat resurssit, mukaan lukien laiteohjelmistokirjasto, sovelluskoodin lataus, file ja hakemiston konfigurointi sekä johdanto sovellushuomautuksessa käytettyyn pääteohjelmistotyökaluun. Toiminnallinen kuvaus -luvussa esitellään sovelluskoodihakemistorakenne, parametriasetukset ja API-kuvaus. Sovellusliittymän käyttö kuvataan "Module_UART" -sovelluskoodilla, ja myös API:iden vaatima Flash/RAM-resurssien kulutus luetellaan. Käyttöohjeet -luku opastaa käyttäjää ympäristön valmistelun, kokoamisen ja testauksen vaiheiden läpi varmistaakseen, että sovelluskoodi toimii oikein. Sen jälkeen se antaa ohjeita, jotka selittävät API:iden integroimisen käyttäjän projekteihin, ja lopuksi antaa viitteen mahdollisista muutoksista ja yleisistä ongelmista.

Käytetyt lyhenteet: 

  • UART: Universaali asynkroninen vastaanotin/lähetin
  • API: Sovellusohjelmointiliittymä
  • LSB: Vähiten merkittävä bitti
  • MSB: Merkittävin bitti
  • PC: Henkilökohtainen tietokone
  • SK: Starter Kit, HT32 kehityskortti
  • IDE: Integroitu kehitysympäristö

UART -yhteyskäytäntö

UART on sarjaliikennetyyppinen liitäntä, joka toteuttaa rinnakkais-sarjan datamuunnoksen lähettimessä ja kommunikoi sitten sarjassa samanlaisen vastaanottimen kanssa. Vastaanotin suorittaa sitten sarja-rinnakkaisdatamuunnoksen datan vastaanoton jälkeen. Kuvassa 1 on kaavio sarjaliikenteestä, joka näyttää kuinka dataa siirretään bittijärjestyksessä. Siksi lähettimen ja vastaanottimen väliseen kaksisuuntaiseen tiedonsiirtoon tarvitaan vain kaksi johtoa, TX ja RX, siirtämään tietoja sarjassa toistensa välillä. TX on nasta, jolla UART lähettää sarjatiedot ja on kytketty vastaanottimen RX-nastaan. Siksi lähetin- ja vastaanotinlaitteiden on kytkettävä ristiin TX- ja RX-nastansa suorittaakseen UART-kaksisuuntaisen tiedonsiirron, kuten kuvassa on esitetty. Kuva 2.

Kuva 1. Sarjaliikennekaavio
Sarjaliikennekaavio

Kuva 2. UART-piirikaavio
UART-piirikaavio

UART-sarjaliikenteen aikana tiedonsiirto on asynkronista. Tämä tarkoittaa, että lähettimen ja vastaanottimen välillä ei ole kelloa tai muuta synkronointisignaalia. Tässä käytetään siirtonopeutta, joka on sarjatiedon lähetys-/vastaanottonopeus ja jonka molemmat osapuolet asettavat ennen tiedonsiirtoa. Lisäksi erityiset bitit, kuten aloitus- ja lopetusbitit, lisätään datapaketin alkuun ja loppuun täydellisen UART-datapaketin muodostamiseksi. Kuva 3 esittää UART-datapakettirakenteen, kun taas kuvio 4 esittää 8-bittistä UART-datapakettia ilman pariteettibittiä.
Kuva 3. UART-datapakettirakenne
UART-tietopakettirakenne

Kuva 4. UART 8-bittinen datapakettimuoto
Datapakettimuoto
Jokainen UART-datapaketin osa esitellään seuraavassa järjestyksessä.

  • Aloitusbitti: Tämä osoittaa datapaketin alun. UART TX -nasta pysyy yleensä korkealla logiikkatasolla ennen lähetyksen alkamista. Jos tiedonsiirto alkaa, UART-lähetin vetää TX-nastan korkeasta matalaan, eli 1:stä 0:aan, ja pitää sitä siellä yhden kellojakson ajan. UART-vastaanotin aloittaa tietojen lukemisen, kun RX-nastassa on havaittu siirtymä korkeasta matalaan.
  • Tiedot: Tämä on todellista siirrettyä dataa, jonka datapituus on 7, 8 tai 9 bittiä. Yleensä tiedot siirretään ensin LSB:n kanssa.
  • Pariteettibitti: Tiedoissa olevaa logiikkanumeroa "1" käytetään sen määrittämiseen, onko jokin data muuttunut lähetyksen aikana. Parillisen pariteetin tapauksessa datan logiikan "1" kokonaismäärän tulisi olla parillinen luku, päinvastoin datan logiikan "1" kokonaismäärän tulisi olla pariton luku parittomille pariteille.
  • Pysäytysbitti: Tämä osoittaa datapaketin päättymisen, jossa UART-lähetin vetää TX-nastan matalasta korkeaan, eli 0:sta 1:een, ja pitää sen sitten siellä 1 tai 2 bitin ajan.

Kuten aiemmin mainittiin, koska UART-piirissä ei ole kellosignaalia, lähettimen ja vastaanottimen välillä on määritettävä sama sarjadatan lähetys/vastaanottonopeus, joka tunnetaan siirtonopeudena, jotta virheetön lähetys toteutuisi. Tiedonsiirtonopeus määritellään sekunnissa siirrettyjen bittien lukumäärällä bittiä sekunnissa (bps). Jotkut vakio- ja yleisesti käytetyt baudinopeudet ovat 4800bps, 9600bps, 19200bps, 115200bps jne. Vastaava yhden databitin siirtoon tarvittava aika on esitetty alla.
Taulukko 1. Tiedonsiirtonopeus vs. 1-bittinen lähetysaika 

Tiedonsiirtonopeus 1-bittinen lähetys Aika
4800bps 208.33 µs
9600bps 104.16 µs
19200bps 52.08 µs
115200bps 8.68 µs

Resurssien lataus ja valmistelu

Tämä luku esittelee sovelluskoodin ja käytetyn ohjelmistotyökalun sekä hakemiston ja hakemiston määrittämisen file polku.

Laiteohjelmistokirjasto 

Varmista ensin, että Holtek HT32 -laiteohjelmistokirjasto on ladattu ennen sovelluskoodin käyttöä. Latauslinkki näkyy alla. Tässä on kaksi vaihtoehtoa: HT32_M0p_Vyyyymmdd.zip HT32F5xxxx-sarjalle ja HT32_M3_Vyyyymmdd.zip HT32F1xxxx-sarjalle. Lataa ja pura haluamasi file.

Vetoketju file sisältää useita kansioita, jotka voidaan luokitella asiakirjaksi, laiteohjelmistokirjastoksi, työkaluiksi ja muihin kohteisiin, joiden sijoituspolku on esitetty kuvassa 5. HT32-laiteohjelmistokirjaston zip file kanssa a file HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip-nimi sijaitsee Firmware_Library-kansiossa.

Kuva 5. HT32_M0p_Vyyyymmdd.zip Sisältö
Sisällys

Sovelluskoodi
Lataa sovelluskoodi seuraavasta linkistä. Sovelluskoodi on pakattu zip-pakettiin file kanssa a file HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Katso Kuva 6 varten file nimisopimukset.

Kuva 6. Sovelluskoodi File Nimi Johdanto 

Lataa linkki: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Sovelluskoodi

File ja Directory Configuration
Koska sovelluskoodi ei sisällä HT32-laiteohjelmistokirjastoa files, sovelluskoodi ja laiteohjelmistokirjasto on purettu files tulee sijoittaa oikealle polulle ennen käännöksen aloittamista. Sovelluskoodin zip file sisältää yleensä yhden tai useamman kansion, kuten sovelluksen ja kirjaston, kuten kuvassa 7 on esitetty. Aseta sovelluskansio HT32-laiteohjelmistokirjaston juurihakemiston alle viimeistelläksesi file polun määritys, kuten kuvassa 8. Vaihtoehtoisesti pura sovelluskoodi ja HT32-laiteohjelmistokirjasto samanaikaisesti samaan polkuun saadaksesi samat määritystulokset.

Kuva 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Sisältö
Sisällys

Kuva 8. Dekompressiopolku
Dekompressiopolku

Pääteohjelmisto
Sovelluskoodi voi siirtää viestejä COM-portin kautta toiminnon valinnan tai tilan näytön toteuttamiseksi. Tämä edellyttää, että isäntäpuolella on pääteohjelmisto asennettuna etukäteen. Käyttäjät voivat valita sopivan yhteysohjelmiston tai käyttää ilmaisia ​​lisensoituja ohjelmistoja, kuten Tera Termiä. Sovelluskoodissa UART-kanava on konfiguroitu sanapituudeksi 8 bittiä, ei pariteettia, 1 stop-bitti ja baudinopeus 115200 bps.

Toiminnallinen kuvaus

Tämä luku tarjoaa toiminnallisen kuvauksen sovelluskoodille, mukaan lukien tiedot hakemistorakenteesta, API-arkkitehtuurista, asetuskuvauksesta jne

Hakemistorakenne
Sovelluskoodi file sisältää sovelluskansion. Seuraava kerros on "Module_UART"-kansio, joka sisältää kaksi sovellusohjelmaa, "UART_Module_Ex".ample" ja "UART_Bridge". Asiaankuuluvat files on lueteltu ja kuvattu alla.
Taulukko 2. Sovelluskoodihakemistorakenne

Kansio / File Nimi Kuvaus
\\sovellus\Moduuli_UART\UART_Moduuli_Example*1
_CreateProject.bat Eräskriptit projektin luomiseen files
_ProjectSource.ini Alustus file lähdekoodin lisäämiseen projekteihin
ht32_board_config.h Asennus file liittyvät IC-oheislaitteiden I/O-määritykseen
ht32fxxxxx_01_it.c Keskeytä palveluohjelma file
tärkein. c Pääohjelman lähdekoodi
\\sovellus\Moduuli_UART\UART_Bridge*2
_CreateProject.bat Eräskriptit projektin luomiseen files
_ProjectSource.ini Alustus file lähdekoodin lisäämiseen projekteihin
ht32_board_config.h Asennus file liittyvät IC-oheislaitteiden I/O-määritykseen
ht32fxxxxx_01_it.c Keskeytä palveluohjelma file
tärkein. c Pääohjelman lähdekoodi
uart_bridge.h uart_bridge.c UART-sillan otsikko file ja lähdekoodi file
\\apuohjelmat\väliohjelmistot
uart_module.h*3 uart_module.c*3 API-otsikko file ja lähdekoodi file
\\apuohjelmat\yleinen
ringbuffer.h ring_buffer.c Ohjelmistorenkaan puskurin otsikko file ja lähdekoodi file

Huomautus: 

  1. Kohdassa "UART_Module_Example" sovelluskoodi, API:n luku- ja kirjoitustoiminnot suoritetaan silmukalla, katso "API Usage Examples" -osiossa saadaksesi lisätietoja.
  2.  "UART_Bridge" -sovelluskoodissa aktivoidaan kaksi UART-kanavaa, UART CH0 ja UART CH1, ja mukautettu viestintäprotokolla COMMAND-rakenteiden kautta toteutetaan kahden UART-laitteen välillä. Katso lisätietoja kohdasta "API Usage Examples" -osio.
  3. Sovelluskoodin on käytettävä tiedostoa uart_module.c/h files, joilla on laiteohjelmistokirjaston versiovaatimus. Vaatimus voi muuttua ajoittain päivityksen mukaan. Vahvista nykyisen laiteohjelmistokirjaston versiovaatimus katsomalla riippuvuustarkistuksen sisältöä etsimällä avainsanalla "Dependency check" main.c-tiedostossa. file. Jos laiteohjelmistokirjaston versio ei täytä vaatimuksia, lataa uusin versio "Firmware Library" -osiossa olevasta linkistä.

API-arkkitehtuuri
Jokaisella API:lla on tärkeä parametri CH, joka on UART-kanava. Tämä määrittää, mitä UART-kanavaa ohjataan. Tällä hetkellä tuetaan enintään neljää UART-kanavaa, ja siksi neljä vakiosymbolia määritellään seuraavasti. Näitä käytetään parametreina CH, jotka tarjoavat API:ille perustan ohjaukselle.

  • UARTM_CH0: syöttöparametri – ohjaa tai konfiguroi UART CH0
  • UARTM_CH1: syöttöparametri – ohjaa tai konfiguroi UART CH1
  • UARTM_CH2: syöttöparametri – ohjaa tai konfiguroi UART CH2
  • UARTM_CH3: syöttöparametri – ohjaa tai konfiguroi UART CH3

Muistitilaa ei tuhlata, jos käytetään vain yhtä UART-kanavaa. Tämä johtuu siitä, että tuettujen UART-kanavien lukumäärä voidaan asettaa ja esiprosessori poistaa käyttämättömän UART-kanavakoodin käytettävissä olevan muistitilan lisäämiseksi. API-arkkitehtuuri näkyy Kuva 9.

Kuva 9. API-arkkitehtuurin lohkokaavio
Arkkitehtuurilohkokaavio

Jokainen API koostuu neljästä UART-kanavaan liittyvien asetusten tai säätimien ryhmästä, joten käyttäjien tarvitsee vain syöttää haluttu CH-parametri. Asianmukaisen API:n määrittämistä varten tarvitaan vain ylimääräinen UART-peruskonfiguraatioparametritaulukko, jonka rakennelomake on USART_InitTypeDef. API toteuttaa UART-peruskonfiguraation taulukon parametrien sisällön mukaisesti. Katso UART-peruskonfiguraatiorakenteen taulukko "API-kuvaus"-osiosta.

uart_module.c/.h files sisältävät vain kunkin UART-kanavan keskeytyksen (CHx_IRQ) ​​ja tilataulukon (CHx Status), kun taas kaikki UART-viestintään tarvittavat asetukset tarjoaa ht32_board_config.h. Laitteistoon liittyvät parametrit tiedostossa ht32_board_config.h file on esitetty alla olevassa taulukossa. Lisätietoja on "Asetuksen kuvaus" -osiossa.

Ht32_board_config.h:n laitteistoon liittyvät parametrit sisältävät I/O-asetukset ja fyysisen UART-portin asetukset seuraavasti.

Taulukko 3. Määritelmä Symbolit tiedostossa ht32_board_config.h

Symboli Kuvaus
HTCFG_UARTM_CH0 Fyysisen UART-portin nimi; Esimample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Määrittää TX:n portin nimen CH0:lle; Esimample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Määrittää TX:n PIN-numeron CH0:lle; Esimample: 0-15
HTCFG_UARTM0_RX_GPIO_PORT Määrittää RX:n portin nimen CH0:lle; Esimample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Määrittää TX:n PIN-numeron CH0:lle; Esimample: 0-15
HTCFG_UARTM0_TX_BUFFER_SIZE Määrittää CH0:n TX-puskurin koon; Esimamppuh: 128
HTCFG_UARTM0_RX_BUFFER_SIZE Määrittää RX-puskurin koon CH0:lle; Esimamppuh: 128

Jos haluat muokata UART-kanavan AFIO-konfiguraatiota, katso asianmukainen laitetietolehti. Tällä hetkellä vain UART CH0:n I/O-määritykset ovat voimassa, koska vain UART CH0 on määritetty tiedostossa ht32_board_config.h. UART CH1~3 lisäämiseksi niiden I/O-määritykset on täydennettävä viittaamalla UART CH0 -määrittelyyn tai "Asetuksen muuttaminen ja usein kysytyt kysymykset" -osaan.

API-arkkitehtuurin pääpiirteitä on kolme: 

  1. Jopa neljää UART-kanavaa tuetaan. Niiden tuloparametrit ovat UARTM_CH0, UARTM_CH1, UARTM_CH2 ja UARTM_CH3.
  2.  UART-kanavien määrä voidaan asettaa, eivätkä käyttämättömät kanavat vähennä käytettävissä olevaa muistitilaa.
  3. Kaikki UART-asetukset ja I/O-määritykset ovat täysin erillään API:ista. Tämä lisää asetusarvojen hallinnan mukavuutta ja vähentää virheellisten tai puuttuvien asetusten mahdollisuutta.

Asetuksen kuvaus 

Tässä osassa esitellään parametrien asetukset tiedostoissa ht32_board_config.h ja uart_module.h files.

  1. ht32_board_config.h: Tämä file käytetään nastamäärittelyihin ja kehityskorttiin liittyviin asetuksiin, jotka sisältävät Starter Kitin (SK) käyttämän UART IP-kanavan (UART0, UART1, USART0…), vastaavat TX/RX-nastapaikat ja TX/RX-puskurin koon. Kuva 10 näyttää HT32F52352 Starter Kitin asetussisällön. Kehityksen toiminnallisesta integraatiosta riippuen käyttäjät voivat viitata käytetyn laitteen tietolomakkeen kohtaan "Pin Assignment" nastamäärittelyjen toteuttamiseen. Lisätietoja asetusten muuttamisesta on kuvattu "Asetusten muuttaminen ja usein kysytyt kysymykset" -osiossa.
    Kuva 10. ht32_board_config.h-asetukset (HT32F52352)
    Asetukset
  2. uart_module.h: Tämä on API-otsikko file sovelluskoodin käyttämä, joka sisältää asiaankuuluvat oletusasetukset, toimintomääritykset jne. Kuten kuvasta 11 näkyy, oletusasetusten sisältö voidaan korvata ulkoisilla kokoonpanoilla, kuten ht32_board_config.h:n asetuksilla. file.
    Kuva 11. Oletusasetukset tiedostossa uart_module.h
    Oletusasetukset
API-kuvaus
  1. Sovelluskoodin tietotyypin kuvaus.
    • USART_InitTypeDef
      Tämä on UART-peruskokoonpanorakenne, joka koostuu BaudRate-, WordLength-, StopBits-, Parity- ja Mode -kokoonpanoista, kuten alla on esitetty.
      Muuttuva Nimi Tyyppi Kuvaus
      USART_BaudRate u32 UART-tiedonsiirtonopeus
      USART_WordLength u16 UART-viestintäsanan pituus: 7, 8 tai 9 bittiä
      USART_StopBits u16 UART-tiedonsiirron pysäytysbitin pituus: 1 tai 2 bittiä
      USART_Pariteetti u16 UART-viestintäpariteetti: parillinen, pariton, merkki, välilyönti tai ei pariteettia
      USART_Mode u16 UART-viestintätila; API:t tukevat vain normaalitilaa
  2. Ennen kuin käytät API-toimintoja, suorita UART-perusasetukset pääohjelmassa. Tämän sovelluskoodin UART-peruskonfiguraatio on esitetty kuvassa 12. Tässä tiedonsiirtonopeus on 115200 bps, sanan pituus on 8-bittinen, stop-bitin pituus on 1-bittinen, eikä pariteettia ole.
    Kuva 12. UART-peruskokoonpano
    Peruskokoonpano
  3. Kuva 13 näyttää uart_module.h:ssa määritetyt API-funktiot file. Seuraavissa taulukoissa selitetään API-toimintojen toiminto, syöttöparametrit ja käyttö.
    Kuva 13. API-funktion ilmoitukset tiedostossa uart_module.h 
    API-toimintoilmoitukset
Nimi void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Toiminto UART-moduulin alustus
  Syöte CH UART kanava
pUART_Init UART-peruskokoonpanorakenteen osoitin
 uRxTimeOutValue UART RX FIFO aikakatkaisuarvo. Kun RX FIFO vastaanottaa uutta dataa, laskuri nollautuu ja käynnistyy uudelleen. Kun laskuri saavuttaa esiasetetun aikakatkaisuarvon ja vastaava aikakatkaisukeskeytys on otettu käyttöön, aikakatkaisukeskeytys generoidaan.
 Käyttö UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Suorita UART-peruskonfiguraatio//Katso kuvasta 12 USART_InitStructure-määritykset
Nimi u32 UARTM_WriteByte(u32 CH, u8 uData)
Toiminto UART-moduulin kirjoitustavutoiminto (TX)
Syöte CH UART kanava
uData Kirjoitettava data
Lähtö MENESTYS Onnistunut
VIRHE Epäonnistui
Käyttö UARTM_WriteByte(UARTM_CH0, 'A'); //UART kirjoittaa 1 tavun – 'A'
Nimi u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Toiminto UART-moduulin kirjoitustoiminto (TX)
 Syöte CH UART kanava
pBuffer Puskurin osoitin
uPituus Kirjoitettavien tietojen pituus
Lähtö MENESTYS Onnistunut
VIRHE Epäonnistui
 Käyttö u8 Test[] = "Tämä on testi!\r\n"; UARTM_Write(UARTM_CH0, Testi, koko(testi) -1); //UART kirjoittaa pBuffer-tiedot
Nimi u32 UARTM_ReadByte(u32 CH, u8 *pData)
Toiminto UART-moduulin lukutavutoiminto (RX)
Syöte CH UART kanava
pData Osoite, johon luetut tiedot asetetaan
Lähtö MENESTYS Onnistunut
VIRHE Epäonnistui (ei tietoja)
   Käyttö u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SUCCESS){UARTM_WriteByte(UARTM_CH0, TempData);}//Jos UARTM_ReadByte() palauttaa MENESTYS, UART kirjoittaa tämän datatavun
Nimi u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Toiminto UART-moduulin lukutoiminto (RX)
 Syöte CH UART kanava
pBuffer Puskurin osoitin
uPituus Luettavien tietojen pituus
Lähtö Lukumäärä Tietojen pituus on luettu
     Käyttö u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() lukee 5 tavua dataa ja tallentaa tiedot Test2:een ja määrittää lukutavumäärän Lenille//Kirjoita Test2:sta peräisin olevat tiedot
Nimi u32 UARTM_GetReadBufferLength(u32 CH)
Toiminto Selvitä lukupuskurin pituus (RX)
Syöte CH UART kanava
Lähtö uPituus Lue puskurin pituus
  Käyttö UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART-moduulin alustus while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Odota, kunnes UARTM_ReadBuffer on vastaanottanut 5 tavua dataa
Nimi u32 UARTM_GetWriteBufferLength(u32 CH)
Toiminto Hanki kirjoituspuskurin pituus (TX)
Syöte CH UART kanava
Lähtö uPituus Kirjoita puskurin pituus
Nimi u8 UARTM_IsTxFinished(u32 CH)
Toiminto Hanki TX-tila
Syöte CH UART kanava
Lähtö TOTTA Lähetyksen tila: valmis
EPÄTOSI Lähetyksen tila: ei valmis
      Käyttö UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Tällä API:lla voidaan tarkistaa lähetyksen tila, kuten yllä on esitetty; odota, kunnes UARTM_WriteByte() API on valmis, eli lähetyksen tila on TOSI, ja jatka sitten seuraavia toimia.//Lisätään rajoitus, koska tätä toimintoa ei ole lisätty ennen kuin SVN-versionumero tiedostossa uart_module.c on 525.
Nimi mitätön UARTM_DiscardReadBuffer(u32 CH)
Toiminto Hävitä lukupuskurissa olevat tiedot
Syöte CH UART kanava

API käyttö esimamples 

Tämä osio näyttää API:n kirjoittamisen ja lukemisen esimamp"Module_UART"-sovelluskoodin alustusprosessia käyttäen ja "UART_Module_Ex"ample” hakemuskoodiprosessi. Ennen sovellusliittymien käyttöä käyttäjien on sisällytettävä API-otsikko file pääohjelman lähdekoodiin file (#include "middleware/uart_module.h").

Kuten kuvassa 14 esitetään, määritä ensin UART-peruskonfiguraatiorakenne aloittaessasi alustusprosessin. Määritä sitten UART-peruskokoonpanorakenteen jäsenet, mukaan lukien BaudRate, WordLength, StopBits, Parity ja Mode. Lopuksi kutsu API alustustoiminto, jonka valmistuminen osoittaa alustusprosessin päättymisen. Tämän jälkeen käyttäjät voivat jatkaa kirjoitus- ja lukutoimintoja esiasetetun UART-peruskokoonpanon perusteella.

Kuva 14. Alustusvuokaavio
Alustusvuokaavio

"UART_Module_Example” sovelluskoodi esittelee API:n luku- ja kirjoitustoiminnot silmukalla. Vuokaavio tähän on esitetty kuvassa 15. Käytettyjä API-toimintoja ovat UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() ja UARTM_GetReadBufferLength(). Niiden kuvaus on "API-kuvaus" -osiossa.

Kuva 15. Vuokaavio Write and Read Examples
Vuokaavio kirjoittamisesta ja lukemisesta Examples

"Module_UART"-kansiossa on toinen "UART_Bridge" -sovelluskoodi, joka liittyy file kuvaus on esitelty "Hakemistorakenne" -osiossa. "UART_Bridge" -sovelluskoodi aktivoi kaksi UART-kanavaa, UART CH0 ja UART CH1, ja mukauttaa sitten kahden UART-laitteen välistä viestintäprotokollaa KOMENTOrakenteiden, gCMD1 ja gCMD2, kautta. Nämä määritellään tiedostossa uart_bridge.c, kuten alla on esitetty. UARTBridge_CMD1TypeDef gCMD1:

Muuttuva Nimi Tyyppi Kuvaus
uHeader u8 Otsikko
uCmd u8 Komento
uData[3] u8 Data

UARTBridge_CMD2TypeDef gCMD2:

Muuttuva Nimi Tyyppi Kuvaus
uHeader u8 Otsikko
uCmdA u8 Komento A
uCmdB u8 Komento B
uData[3] u8 Data

Käytä "UART_Bridge" -sovelluskoodissa gCMD1:tä tietojen vastaanottamiseen komentopakettina ja analysoi se sitten. Aseta sitten räätälöidyn viestintäprotokollan mukaisesti gCMD2 vastauspaketiksi ja lähetä se. Seuraava on exampkomentopaketin gCMD1) ja vastauspaketin (gCMD2) le. Komentopaketti (UARTBridge_CMD1TypeDef gCMD1):

Tavu 0 Tavu 1 Tavu 2 ~ tavu 4
uHeader uCmd uData [3]
"A" "1" "x, y, z"

Vastauspaketti (UARTBridge_CMD2TypeDef gCMD2):

Tavu 0 Tavu 1 Tavu 2 Tavu 3 ~ tavu 5
uHeader uCmdA uCmdB uData [3]
"B" "a" "1" "x, y, z"

Resurssien ammatti
Otetaan HT32F52352 entiseksiample, UART-moduulin käyttämät resurssit on esitetty alla.

HT32F52352
ROMin koko 946 tavua
RAM-muistin koko 40*1 + 256*2 tavua

Huomautus:

  1. Globaalit muuttujat, mukaan lukien liput ja yksittäisen kanavan tila, vievät 40 tavua RAM-muistia.
  2.  Tämä koskee tilannetta, jossa käytetään yhtä kanavaa ja TX/RX-puskurin koko on 128/128 tavua. Puskurin koko voidaan asettaa sovelluksen vaatimusten mukaan.

Taulukko 4. Sovelluskoodin resurssien käyttö 

  • Kokoonpanoympäristö: MDK-Arm V5.36, ARMCC V5.06 päivitys 7 (koontiversio 960)
  • Optimointivaihtoehto: Taso 2 (-O2)

Käyttöohjeet

Tässä luvussa esitellään "Module_UART" -sovelluskoodin ympäristövalmistelut sekä käännös- ja testausvaiheet.

Ympäristön valmistelu
"Module_UART" -sovelluskoodin edellyttämät laitteistot ja ohjelmistot on lueteltu alla.
Taulukko 5. Laitteiston/ohjelmiston ympäristövalmistelu 

Laitteisto/ohjelmisto Laskea Huom
Aloitussarja 1 Tämä sovellushuomautus käyttää HT32F52352-aloitussarjaa entisenäample
USB-kaapeli 1 Micro USB, liitetty PC:hen
Sovelluskoodi Latauspolku, file ja hakemiston määritykset esitellään "Resurssien lataus ja valmistelu" -osiossa. Polku: "\\application\Module_UART\UART_Module_Examp"
Tera Term Katso kohtaa "Pääteohjelmistot".
Keil IDE Keil uVision V5.xx

Käytä ensin HT32F52352 Starter Kitiä yhdistettynä e-Link32 Liten Virtual COM Port (VCP) -toimintoon UART-sovelluksen esittelyyn. Tämä edellyttää seuraavan ympäristövalmistelun toteuttamista:

  1. Kortissa on kaksi USB-liitäntää. Käytä USB-kaapelia PC:n ja eLink32 Lite -liitännän yhdistämiseen kortilla kuvan 16-(a) mukaisesti.
  2. Koska sovelluskoodin on käytettävä e-Link32 Lite Virtual COM Port (VCP) -toimintoa, varmista, että UART Jumper-J2*2:n PAx*1 ja DAP_Tx on oikosuljettu jumpperia käyttämällä. J2-paikka on esitetty kuvassa 16-(b).

Huom

  1. Aloitussarjan J2:ssa on kaksi vaihtoehtoa, PAx ja DAP_Tx oikosulussa tai PAx ja RS232_Tx oikosulussa. Katso tarkemmat asetustoiminnot Starter Kitin käyttöoppaasta.
  2. MCU UART RX -nastan sijainti eri aloitussarjoissa on erilainen. Tämä example käyttää PAx:a osoittamaan RX-nastaa.

Kuva 16. HT32 Starter Kit -lohkokaavio
Sarjan lohkokaavio

Käytä nyt käyttäjän kohdekorttia yhdistettynä e-Link32 Pron Virtual COM Port (VCP) -toimintoon UART-sovelluksen esittelyyn. Tämä edellyttää seuraavan ympäristövalmistelun toteuttamista:

  1. e-Link32 Pron toinen puoli on liitetty tietokoneeseen Mini-USB-kaapelilla ja toinen puoli käyttäjän kohdekorttiin sen 10-bittisellä harmaalla kaapelilla. Kaapelin ja kohdekortin SWD-liitäntöjen välinen yhteys on toteutettu Dupont-linjoilla kuvan 17-(a) mukaisesti.
  2. e-Link32 Pron sarjaliikennenastat ovat Pin#7 VCOM_RXD ja Pin#8- VCOM_TXD. Nämä tulee kytkeä käyttäjän kohdekortin TX- ja RX-nastoihin kuvan 17-(b) mukaisesti.
    Kuva 17. e-Link32 Pro + käyttäjän kohdekortin lohkokaavio
    User Target Board

Kokoaminen ja testaus
Tämä osio sisältää "application\Module_UART\UART_Module_Example" exänäample esitellä kokoamis- ja testausprosessit. Varmista ennen tätä, että kaikki edellisessä osiossa kuvatut valmistelut on toteutettu ja että Tera Term -pääteohjelmisto on ladattu.

Yksityiskohtaiset toimintavaiheet on yhteenveto alla.
Vaihe 1. Käynnistystesti

Määritä laitteistoympäristö edellisessä osiossa kuvatulla tavalla. Virran kytkemisen jälkeen Starter Kitin vasemmassa alakulmassa oleva D9-virran merkkivalo syttyy. e-Link1 Liten oikeassa yläkulmassa oleva D32 USB-LED syttyy, kun USB-luettelo on valmis. Jos D1 ei syty pitkän ajan kuluttua, tarkista, pystyykö USB-kaapeli kommunikoimaan. Jos ei, poista se ja aseta se uudelleen.

Vaihe 2. Luo projekti
Avaa sovellus\Module_UART\UART_Module_Exampkansio, napsauta _CreateProject.bat file luodaksesi projektin kuvan 18 mukaisesti. Koska tämä sovellushuomautus käyttää HT32F52352-aloituspakettia, avaa Keil IDE -projekti ”Project_52352.uvprojx”, joka sijaitsee MDK_ARMv5-kansiossa.

Kuva 18. Suorita _CreateProject.bat luodaksesi projektin
Luo projekti

Vaihe 3. Kääntää ja ohjelmoida
Kun projekti on avattu, napsauta ensin "Build" (tai käytä pikanäppäintä "F7") ja napsauta sitten "Download" (tai käytä pikanäppäintä "F8"). Tämän jälkeen koonti- ja lataustulokset näkyvät Build Output -ikkunassa. Katso kuva 19.

Kuva 19. Rakennus- ja lataustulokset
Rakenna ja lataa tulokset

Vaihe 4. Avaa Tera Term -ohjelmisto ja määritä sarjaportti
Avaa Tera Term -ohjelmisto ja COM-portti. Kiinnitä huomiota siihen, onko Starter Kitin luoma COM-portin numero oikea vai ei. Napsauta sitten ”Setup >> Serial Port” päästäksesi asetusliittymään. "Module_UART" -sovelluskoodin UART-liitännän konfiguraatio on kuvattu osiossa "Pääteohjelmistot". Asennustulos näkyy kuvassa 20.

Kuva 20. Tera Term -sarjaportin asennuksen tulos
Asennuksen tulos
Vaihe 5. Nollaa järjestelmä ja testaa
Paina SK-nollausnäppäintä – B1 Reset. Tämän jälkeen "ABCTämä on testi!" viesti tulee olemaan
lähetetään API:n kautta ja näytetään Tera Term -ikkunassa, kuten kuvassa 21. Mitä tulee vastaanottotoimintoon, kun syötetään tietoja Tera Term -ikkunaan, asiaankuuluvaa API:ta käytetään määrittämään vastaanottopuskurin pituus. Kun PC:n vastaanottama data saavuttaa 5 tavua, vastaanotetut 5 tavua dataa lähetetään peräkkäin. Kuten kuvasta 22 näkyy, peräkkäin syötettävät tiedot ovat "1, 2, 3, 4, 5", joka vastaanotetaan ja määritetään API:n kautta. Tämän jälkeen viiden syöttämisen jälkeen tulostetaan tiedot "1, 2, 3, 4, 5".

Kuva 21. Sovelluskoodin "Module_UART" toiminnallinen testi – lähetys
Sovelluskoodin toiminnallinen testi

Kuva 22. Sovelluskoodin "Module_UART" toiminnallinen testi – vastaanotto
Sovelluskoodin toiminnallinen testi

Siirtoohjeet
Tämä osio esittelee, kuinka sovellusliittymät integroidaan käyttäjän projekteihin.
Vaihe 1. Lisää uart_module.c file projektiin. Napsauta hiiren kakkospainikkeella Käyttäjä-kansiota. Valitse "Lisää olemassa oleva Files kohtaan 'Käyttäjä'…”, valitse sitten uart_module.c file ja napsauta "Lisää", kuten kuvassa 23. Katso "Hakemistorakenne" -osiosta file polun kuvaus.

Kuva 23. Lisää uart_module.c File Projektiin
File Projektiin

Vaihe 2. Lisää ring_buffer.c file projektiin. Napsauta hiiren kakkospainikkeella Käyttäjä-kansiota. Valitse "Lisää olemassa oleva Files kohtaan 'Käyttäjä'…”, valitse sitten ring_buffer.c file ja napsauta "Lisää", kuten kuvassa 24.\ Katso "Hakemistorakenne" -osiosta file polun kuvaus.
Kuva 24. Lisää ring_buffer.c File Projektiin 
File Projektiin

Vaihe 3. Sisällytä API-otsikko file main.c:n alkuun, kuten kuvassa 25. (Ext: #include "middleware/uart_module.h")
Kuva 25. Sisällytä API-otsikko File main.c
Sisällytä API-otsikko File

Vaihe 4. Toteuta UART-tiedonsiirtoon tarvittavat asetukset käyttämällä tiedostoa ht32_board_config.h file. Tämä esitellään yksityiskohtaisesti osioissa "Asetuksen kuvaus" ja "Asetuksen muuttaminen ja usein kysytyt kysymykset".

Asetusmuutos ja usein kysytyt kysymykset 

Tässä osiossa kerrotaan, kuinka UART-asetuksia muutetaan, ja selitetään joitain yleisiä käytön aikana esiintyviä kysymyksiä.

Muuta UART Pin Assignment 

  1. Katso HT32F52352 Datasheet -lukua "Pin Assignment" -taulukko, jossa on luettelo laitetyypin AFIO-toiminnoista. Katso UART-liitännät "AF6 USART/UART" -sarakkeesta kuvan 26 mukaisesti.
    Kuva 26. HT32F52352 vaihtoehtoisten funktioiden kartoitustaulukko
    Vaihtoehtoinen funktioiden kartoitustaulukko
  2. Tämä vaihe opastaa käyttäjiä löytämään vastaavat UART-nastat yllä olevan taulukon avulla. HT32F52352 example käyttää USART1:tä oletuskanavana. Tässä TX- ja RX-nastat ovat USR1_TX ja USR1_RX, ja ne sijaitsevat PA4:ssä ja PA5:ssä. Kuva 27 näyttää nastavastaavuuden sekä nastamäärittelyt tiedostossa “ht32_board_config.h”. Tyhjät "Paketti"-kentät pinojen määritystaulukossa tarkoittavat, että tässä paketissa ei ole asiaankuuluvia GPIO:ita. Muokkaa UART-nastoja etsimällä kohdepintojen sijainnit ja määrittämällä nastat uudelleen käyttämällä tiedostoa "ht32_board_config.h". file.
    Kuva 27. Pin-vastaavuus ja asetusten muuttaminen
    Asetuksen muutos

Lisää UART-kanava
Otetaan HT32F52352 HTCFG_UARTM_CH1 esimample, tässä kuvataan, kuinka uusi UART-kanava lisätään.

Muokkaa tiedostoa ht32_board_config.h file
Katso HT32F52352 Datasheet -lukua "Pin Assignment" -taulukko, jossa on luettelo laitetyypin AFIO-toiminnoista. Koska USART1:tä on käytetty kanavana HTCFG_UARTM_CH0, äskettäin lisätty HTCFG_UARTM_CH1 voi valita USART0:n. Tässä TX- ja RX-nastat sijaitsevat vastaavasti PA2:ssa ja PA3:ssa, kuten kuvan 28 yläosassa näkyy. Vastaavat muutokset on toteutettu käyttämällä koodirivejä 120-126 tiedostossa ht32_board_config.h, kuten näkyy punaisella katkoviivalla kuvassa. 28.

Kuva 28. Lisää UART-kanava
UART-kanava

UKK
Q: Kokoaminen ja testaus -osion vaiheessa 5 lähetyksen toimintatesti on normaali. Tässä "ABCTämä on testi!" viesti on näytetty onnistuneesti, mutta miksi vastaanottotoiminnon viittä syöttöarvoa ei palauteta ja näytetä?
A: Tarkista, onko UART Jumper-J2:n MCU UART RX- ja DAP_Tx-nastat oikosulussa hyppyjohtimen avulla. Koska "Module_UART" -sovelluskoodin on käytettävä e-Link32 Liten virtuaalista COM-porttia (VCP), oikosulkuasetus tulee soveltaa UART Jumper-J2:n kahteen vasempaan nastaan, kuten kuvassa 29.

Kuva 29. UART Jumper-J2 -asetus
UART jumpperi

K: Jälkeen kun suoritat "Build" (tai pikakuvakkeen "F7"), näyttöön tulee virheilmoitus, joka osoittaa, että laiteohjelmistokirjaston versio on vanhempi kuin vaadittu? Katso kuva 30.
A: Sovelluskoodin "Module_UART" toteutuksen on sisällettävä uart_module.c/h files, jolla on vaatimus tietylle laiteohjelmistokirjastoversiolle. Kun tällainen virhesanoma tulee näkyviin, se tarkoittaa, että tällä hetkellä käytössä oleva laiteohjelmistokirjasto on vanhempi versio. Siksi uusin versio on ladattava "Firmware Library" -osiossa olevan linkin kautta.

Kuva 30. Laiteohjelmistokirjaston versiovirheilmoitus
Version virheilmoitus

Johtopäätös

Tämä asiakirja on perusjohdanto, joka auttaa käyttäjiä ymmärtämään paremmin "Module_UART" -sovelluskoodia ja UART-viestintäprotokollaa. Tätä seurasi resurssien lataus ja valmistelu. Toiminnallinen kuvaus -luku esitteli file hakemistorakenne, API-arkkitehtuuri, API-kuvaus ja API käyttö esimamples. Käyttöohjeet -luvussa esiteltiin "Module_UART" -sovelluskoodin ympäristövalmistelu, kokoaminen ja testaus. Se sisälsi myös ohjeita koodin siirtämiseen ja muokkaamiseen sekä selitti joitain yleisiä ongelmia, joita voi kohdata. Kaikki tämä yhdessä antaa käyttäjille mahdollisuuden ymmärtää nopeasti, kuinka API-liittymiä käytetään, ja lyhentää sen jälkeen aloittamiseen kuluvaa aikaa.

Viitemateriaali

Katso lisätietoja Holtekista websivusto: www.holtek.com

Versiot ja muutostiedot

Päivämäärä Tekijä Vapauta Muutostiedot
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 Ensimmäinen versio

Vastuuvapauslauseke

Kaikki tiedot, tavaramerkit, logot, grafiikat, videot, äänileikkeet, linkit ja muut tässä näkyvät kohteet websivustot ("Tiedot") ovat vain viitteellisiä, ja niitä voidaan muuttaa milloin tahansa ilman ennakkoilmoitusta ja Holtek Semiconductor Inc:n ja siihen liittyvien yritysten (jäljempänä "Holtek", "yritys", "meitä") harkinnan mukaan. me" tai "meidän"). Vaikka Holtek pyrkii varmistamaan tätä koskevien tietojen oikeellisuuden webHoltek ei anna mitään nimenomaista tai oletettua takuuta Tietojen oikeellisuudesta. Holtek ei ole vastuussa virheistä tai vuodoista.
Holtek ei ole vastuussa mistään vahingoista (mukaan lukien mutta ei rajoittuen tietokoneviruksiin, järjestelmäongelmiin tai tietojen katoamiseen), jotka aiheutuvat tämän laitteen käytöstä tai sen käytöstä. webminkä tahansa puolueen sivusto. Tällä alueella voi olla linkkejä, joiden avulla voit vierailla webmuiden yritysten sivustot.
Nämä websivustot eivät ole Holtekin hallinnassa. Holtek ei ole vastuussa eikä takaa minkäänlaisilla sivustoilla näytettävistä tiedoista. Hyperlinkit muihin websivustot ovat omalla vastuullasi.

Vastuun rajoitus

Holtek Limited ei ole missään tapauksessa vastuussa millekään muulle osapuolelle mistään menetyksistä tai vahingoista, jotka ovat aiheutuneet suoraan tai välillisesti siitä, että pääset käyttämään tätä. websivustoa, sen sisältöä tai mitään tavaroita, materiaaleja tai palveluita.

Sovellettava laki
Vastuuvapauslauseke, joka sisältyy webSivustoa ohjaavat ja tulkitaan Kiinan tasavallan lakien mukaisesti. Käyttäjät alistuvat Kiinan tasavallan tuomioistuinten ei-yksinomaiseen toimivaltaan.

Vastuuvapauslausekkeen päivitys
Holtek pidättää oikeuden päivittää vastuuvapauslauseketta milloin tahansa ennakkoilmoituksella tai ilman, kaikki muutokset astuvat voimaan heti, kun ne julkaistaan websivusto.

Asiakirjat / Resurssit

HOLTEK HT32 MCU UART -sovellus Huomautus [pdfKäyttöopas
HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note

Viitteet

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *