HOLTEK HT32 MCU UART alkalmazás Megjegyzés Felhasználói kézikönyv
HOLTEK HT32 MCU UART Alkalmazási megjegyzés

Bevezetés

Az Univerzális Asynchronous Receiver/Transmitter – UART egy széles körben használt soros átviteli interfész, amely rugalmas aszinkron full-duplex adatátvitelt biztosít. Az alkalmazási megjegyzésben található „Module_UART” alkalmazáskód TX/RX megszakításokat használ szoftveres gyűrűpufferekkel, hogy egyszerű UART adási/vételi funkciókat valósítson meg API-kon keresztül, amelyek kapcsolódó funkcióit az alábbiakban ismertetjük. Ez leegyszerűsíti a teljes adatátviteli folyamatot, és lehetővé teszi a felhasználók számára, hogy gyorsan megértsék és megvalósítsák az UART kommunikációs alkalmazásokat.

  • Adási/fogadási funkciók: bájtolvasás, bájtírás, pufferolvasás, pufferírás stb.
  • Állapotfunkciók: megtudhatja a puffer hosszát, TX állapotát stb.

Ez a dokumentum először bemutatja az UART kommunikációs protokollt, amely segít a felhasználóknak abban, hogy jobban megértsék az UART kommunikációt az elvtől az alkalmazásig. Ezt követi az alkalmazáskódhoz szükséges erőforrások letöltése és előkészítése, beleértve a firmware könyvtárat, az alkalmazás kód letöltését, file és címtárkonfiguráció, valamint az alkalmazási megjegyzésben használt terminálszoftver-eszköz bevezetése. A Funkcionális leírás fejezetben bemutatásra kerül az alkalmazáskód könyvtárstruktúrája, a paraméterbeállítások és az API leírása. Az API-használat leírása a „Module_UART” alkalmazáskóddal történik, és az API-khoz szükséges Flash/RAM erőforrás-felhasználás is megjelenik. A Használati útmutató fejezet végigvezeti a felhasználót a környezeti előkészítés, az összeállítás és a tesztelés lépésein, hogy megbizonyosodjon arról, hogy az alkalmazáskód megfelelően működik. Ezután útmutatást ad az API-k felhasználói projektekbe való integrálásához, és végül hivatkozást ad az esetlegesen előforduló módosításokhoz és gyakori problémákhoz.

Használt rövidítések: 

  • UART: Univerzális aszinkron vevő/adó
  • API: Alkalmazás programozási felület
  • LSB: Legkevésbé fontos rész
  • MSB: Legjelentősebb bit
  • PC: Személyi számítógép
  • SK: Starter Kit, HT32 fejlesztő kártya
  • IDE: Integrált Fejlesztési Környezet

UART kommunikációs protokoll

Az UART egy soros kommunikációs típusú interfész, amely párhuzamos-soros adatátalakítást valósít meg az adóján, majd sorosan kommunikál egy hasonló vevővel. A vevő ezután soros-párhuzamos adatkonverziót hajt végre az adatvétel után. Az 1. ábra a soros kommunikáció vázlatos diagramját mutatja, amely bemutatja, hogyan történik az adatok bitenkénti átvitele. Ezért az adó és a vevő közötti kétirányú kommunikációhoz csak két vezeték, a TX és az RX szükséges az adatok soros átviteléhez egymás között. A TX az a tű, amelyen az UART a soros adatokat továbbítja, és a vevő RX érintkezőjéhez csatlakozik. Ezért az adó- és vevőeszközöknek keresztbe kell kötniük TX és RX érintkezőiket az UART kétirányú kommunikációhoz, amint az az alábbi ábrán látható. Ábra 2.

1. ábra Soros kommunikációs diagram
Soros kommunikációs diagram

2. ábra: UART áramköri diagram
UART áramköri diagram

Az UART soros kommunikáció során az adatátvitel aszinkron. Ez azt jelenti, hogy nincs óra vagy egyéb szinkronjel az adó és a vevő között. Itt az adatátviteli sebességet használjuk, amely a soros adatátviteli/vételi sebesség, és amelyet mindkét fél beállít az adatátvitel előtt. Ezenkívül speciális biteket, például kezdő és leállító biteket adnak hozzá az adatcsomag elejéhez és végéhez, hogy egy teljes UART adatcsomagot alkossanak. A 3. ábra az UART adatcsomag-struktúrát mutatja, míg a 4. ábra egy 8 bites UART adatcsomagot paritásbit nélkül.
3. ábra: UART adatcsomag-struktúra
UART adatcsomag-struktúra

4. ábra: UART 8 bites adatcsomag formátum
Adatcsomag formátum
Az UART adatcsomag egyes részeit az alábbiakban sorrendben mutatjuk be.

  • Kezdő bit: Ez az adatcsomag kezdetét jelzi. Az UART TX láb általában magas logikai szinten marad az átvitel megkezdése előtt. Ha az adatátvitel elindul, az UART adó magasról alacsonyra húzza a TX tűt, azaz 1-ről 0-ra, majd egy órajel ciklusig ott tartja. Az UART vevő elkezdi olvasni az adatokat, ha magasról alacsonyra való átmenetet észlel az RX érintkezőn.
  • Adat: Ez a ténylegesen átvitt adat 7, 8 vagy 9 bites adathosszal. Az adatokat általában először az LSB-vel továbbítják.
  • Paritás bit: Az adatokban szereplő logikai „1” szám arra szolgál, hogy megállapítsuk, változott-e az adat az átvitel során. Páros paritás esetén az adatokban szereplő logikai „1” teljes számának páros számnak kell lennie, fordítva, az adatokban szereplő „1” logikai számnak páratlan számnak kell lennie páratlan paritás esetén.
  • Stop bit: Ez egy adatcsomag végét jelzi, ahol az UART adó alacsonyról magasra húzza a TX tűt, azaz 0-ról 1-re, majd ott tartja 1 vagy 2 bites ideig.

Amint azt korábban említettük, mivel az UART áramkörben nincs órajel, ugyanazt a soros adatátviteli/vételi sebességet kell meghatározni az adó és a vevő között a hibamentes átvitel érdekében. Az adatátviteli sebességet a másodpercenként átvitt bitek száma határozza meg, bps-ben (bit per másodperc). Egyes szabványos és általánosan használt adatátviteli sebességek 4800 bps, 9600 bps, 19200 bps, 115200 XNUMX bps stb. Az alábbiakban látható az egyetlen adatbit átviteléhez szükséges megfelelő idő.
1. táblázat: Adatátviteli sebesség vs. 1 bites átviteli idő 

Baud Rate 1 bites átvitel Idő
4800 bps 208.33 µs
9600 bps 104.16 µs
19200 bps 52.08 µs
115200 bps 8.68 µs

Erőforrás letöltése és előkészítése

Ez a fejezet bemutatja az alkalmazás kódját és a használt szoftvereszközt, valamint a könyvtár és a címtár konfigurálását file útvonal.

Firmware Library 

Először győződjön meg arról, hogy a Holtek HT32 firmware-könyvtárat letöltötte az alkalmazáskód használata előtt. A letöltési link alább látható. Itt két lehetőség van: HT32_M0p_Vyyyymmdd.zip a HT32F5xxxx sorozathoz és HT32_M3_Vyyyymmdd.zip a HT32F1xxxx sorozathoz. Töltse le és csomagolja ki a kívánt fájlt file.

A cipzár file több mappát tartalmaz, amelyek besorolhatók a Dokumentum, Firmware Könyvtár, Eszközök és egyéb elemek közé, amelyek elhelyezési útvonala az 5. ábrán látható. A HT32 firmware könyvtár zip file a file A HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip neve a Firmware_Library mappa alatt található.

5. ábra HT32_M0p_Vyyyymmdd.zip Tartalom
Tartalom

Alkalmazási kód
Töltse le az alkalmazás kódját a következő linkről. Az alkalmazás kódja zip-be van csomagolva file a file a HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip neve. Lát 6. ábra a file névkonvenciók.

6. ábra: Alkalmazási kód File Név Bevezetés 

Letöltési link: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Alkalmazási kód

File és a Címtár konfigurációja
Mivel az alkalmazás kódja nem tartalmazza a HT32 firmware könyvtárat files, az alkalmazáskód és a firmware-könyvtár kicsomagolva files a fordítás megkezdése előtt a megfelelő útvonalra kell helyezni. Az alkalmazás kódja zip file általában egy vagy több mappát tartalmaz, például alkalmazást és könyvtárat, amint az a 7. ábrán látható. Helyezze az alkalmazásmappát a HT32 firmware-könyvtár gyökérkönyvtárába a művelet befejezéséhez. file Alternatív megoldásként csomagolja ki az alkalmazáskódot és a HT8 firmware-könyvtárat egyidejűleg ugyanarra az útvonalra, hogy ugyanazokat a konfigurációs eredményeket érje el.

7. ábra: HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Tartalom
Tartalom

8. ábra Dekompressziós útvonal
Dekompressziós útvonal

Terminál szoftver
Az alkalmazáskód üzeneteket tud továbbítani a COM-porton keresztül a funkcióválasztás vagy az állapotkijelzés megvalósításához. Ehhez a gazdaoldalon előzetesen telepítenie kell a terminálszoftvert. A felhasználók kiválaszthatják a megfelelő csatlakozási szoftvert, vagy használhatnak ingyenes licencelt szoftvereket, például a Tera Termet. Az alkalmazáskódban az UART csatorna 8 bites szóhosszúsággal, paritás nélkül, 1 stopbittel és 115200 bps adatátviteli sebességgel van konfigurálva.

Funkcionális leírás

Ez a fejezet az alkalmazás kódjának funkcionális leírását tartalmazza, beleértve a címtárstruktúrát, az API architektúrát, a beállítás leírását stb

Címtárstruktúra
Az alkalmazás kódja file alkalmazás mappát tartalmaz. A következő réteg a „Module_UART” mappa, amely két alkalmazási programot tartalmaz, az „UART_Module_Ex”ample” és „UART_Bridge”. A releváns files az alábbiakban felsoroljuk és ismertetjük.
2. táblázat: Alkalmazáskód könyvtárszerkezet

mappa / File Név Leírás
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Kötegelt szkriptek projekt létrehozásához files
_ProjectSource.ini Inicializálás file forráskód hozzáadásához a projektekhez
ht32_board_config.h Beállítás file IC periféria I/O hozzárendelésével kapcsolatos
ht32fxxxxx_01_it.c Szakítsa meg a szervizprogramot file
fő.c Fő program forráskódja
\\alkalmazás\Module_UART\UART_Bridge*2
_CreateProject.bat Kötegelt szkriptek projekt létrehozásához files
_ProjectSource.ini Inicializálás file forráskód hozzáadásához a projektekhez
ht32_board_config.h Beállítás file IC periféria I/O hozzárendelésével kapcsolatos
ht32fxxxxx_01_it.c Szakítsa meg a szervizprogramot file
fő.c A fő program forráskódja
uart_bridge.h uart_bridge.c UART hídfejléc file és a forráskód file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 API fejléc file és a forráskód file
\\utilities\common
ringbuffer.h ring_buffer.c Szoftvergyűrű puffer fejléc file és a forráskód file

Jegyzet: 

  1. Az „UART_Module_Example” alkalmazáskód, az API olvasási és írási műveletei visszacsatolásos módon kerülnek végrehajtásra, lásd az „API Usage Examples” részben további részletekért.
  2.  Az „UART_Bridge” alkalmazáskódban két UART csatorna, az UART CH0 és az UART CH1 aktiválva van, és a COMMAND struktúrákon keresztül egyéni kommunikációs protokoll valósul meg a két UART eszköz között. További információkért tekintse meg az „API Usage Examples” szakaszban.
  3. Az alkalmazás kódjának az uart_module.c/h fájlt kell használnia files amelyekhez firmware-könyvtár verziókövetelmény tartozik. A követelmény időről időre változhat a frissítésnek megfelelően. Az aktuális firmware-könyvtár verziókövetelményének megerősítéséhez tekintse meg a függőségi ellenőrzés tartalmát a „Dependency check” kulcsszóra keresve a main.c fájlban. file. Ha a firmware könyvtár verziója nem felel meg a követelményeknek, töltse le a legújabb verziót a „Firmware Library” részben található hivatkozásról.

API architektúra
Minden API-nak van egy fontos CH paramétere, ez az UART csatorna. Ez határozza meg, hogy melyik UART csatornát kell vezérelni. Jelenleg legfeljebb négy UART csatorna támogatott, ezért négy állandó szimbólum van definiálva az alábbiak szerint. Ezeket CH paraméterként használják, amelyek az API-k alapját képezik a vezérlésnek.

  • UARTM_CH0: bemeneti paraméter – az UART CH0 vezérlése vagy konfigurálása
  • UARTM_CH1: bemeneti paraméter – az UART CH1 vezérlése vagy konfigurálása
  • UARTM_CH2: bemeneti paraméter – az UART CH2 vezérlése vagy konfigurálása
  • UARTM_CH3: bemeneti paraméter – az UART CH3 vezérlése vagy konfigurálása

A memória nem vész kárba, ha csak egy UART csatornát használ. Ennek az az oka, hogy a támogatott UART csatornák száma beállítható, és a fel nem használt UART csatorna kódot az előfeldolgozó eltávolítja a rendelkezésre álló memória növelése érdekében. Az API architektúra itt látható 9. ábra.

9. ábra API architektúra blokkdiagramja
Építészeti blokkdiagram

Mindegyik API négy UART-csatornához kapcsolódó beállítási vagy vezérlőcsoportból áll, így a felhasználóknak csak a kívánt CH paramétert kell megadniuk. A vonatkozó API konfigurálásához csak egy további UART alapvető konfigurációs paramétertáblázatra van szükség a struktúra űrlappal, USART_InitTypeDef. Az API az UART alapkonfigurációt valósítja meg a táblázat paramétereinek megfelelően. Tekintse meg az „API leírása” részt az UART alapvető konfigurációs struktúra táblázatához.

Az uart_module.c/.h files csak az egyes UART csatornák megszakítását (CHx_IRQ) ​​és állapottáblázatát (CHx Status) tartalmazza, míg az UART kommunikációhoz szükséges összes beállítást a ht32_board_config.h biztosítja. A hardverre vonatkozó paraméterek a ht32_board_config.h fájlban file az alábbi táblázatban láthatók. További részletek a „Beállítás leírása” részben találhatók.

A ht32_board_config.h hardverre vonatkozó paraméterei közé tartoznak az I/O beállítások és a fizikai UART port beállításai, az alábbiak szerint.

3. táblázat: Definíció Szimbólumok a ht32_board_config.h fájlban

Szimbólum Leírás
HTCFG_UARTM_CH0 Fizikai UART port neve; Voltample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Meghatározza a TX port nevét a CH0-hoz; Voltample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Meghatározza a TX PIN-számát a CH0-hoz; Voltample: 0-15
HTCFG_UARTM0_RX_GPIO_PORT Meghatározza az RX port nevét a CH0-hoz; Voltample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Meghatározza a TX PIN-számát a CH0-hoz; Voltample: 0-15
HTCFG_UARTM0_TX_BUFFER_SIZE Meghatározza a CH0 TX puffer méretét; Voltampára: 128 XNUMX
HTCFG_UARTM0_RX_BUFFER_SIZE Meghatározza a CH0 RX puffer méretét; Voltampára: 128 XNUMX

Az UART csatorna AFIO konfigurációjának módosításához tekintse meg a megfelelő eszköz adatlapot. Jelenleg csak az UART CH0 I/O definíciói érvényesek, mivel csak az UART CH0 van konfigurálva a ht32_board_config.h fájlban. Az UART CH1~3 hozzáadásához az I/O definíciókat ki kell egészíteni az UART CH0 definícióra hivatkozva vagy a „Beállítás módosítása és GYIK” szakaszra hivatkozva.

Az API architektúra három fő jellemzője van: 

  1. Legfeljebb négy UART csatorna támogatott. Bemeneti paramétereik UARTM_CH0, UARTM_CH1, UARTM_CH2 és UARTM_CH3.
  2.  Az UART csatornák száma beállítható, és a fel nem használt csatornák nem csökkentik a rendelkezésre álló memóriaterületet.
  3. Az összes UART-beállítás és I/O-definíció teljesen elkülönül az API-któl. Ez növeli a beállítási értékek kezelésének kényelmét, és csökkenti a hibás vagy hiányzó beállítások lehetőségét.

Beállítás leírása 

Ez a rész a ht32_board_config.h és az uart_module.h paraméterek beállításait mutatja be. files.

  1. ht32_board_config.h: Ez file a pin-definíciókhoz és a fejlesztői kártya vonatkozó beállításaihoz használatos, amelyek magukban foglalják a Starter Kit (SK) által használt UART IP-csatornát (UART0, UART1, USART0…), a megfelelő TX/RX tűhelyeket és a TX/RX pufferméretet. A 10. ábra a HT32F52352 Starter Kit beállítási tartalmát mutatja. A fejlesztés funkcionális integrációjától függően a felhasználók a használt eszköz adatlapjának „Pin Assignment” részében hivatkozhatnak a tűdefiníciók megvalósítására. A beállítások módosításával kapcsolatos további részletek a „Beállítás módosítása és GYIK” részben találhatók.
    10. ábra: ht32_board_config.h beállítások (HT32F52352)
    Beállítások elemre
  2. uart_module.h: Ez az API fejléc file az alkalmazás kódja használja, amely tartalmazza a vonatkozó alapértelmezett beállításokat, funkciódefiníciókat stb. Ahogy a 11. ábrán látható, az alapértelmezett beállítások tartalma felülírható külső konfigurációkkal, például a ht32_board_config.h fájl beállításaival. file.
    11. ábra: Az uart_module.h alapértelmezett beállításai
    Alapértelmezett beállítások
API leírás
  1. Alkalmazáskód adattípus leírása.
    • USART_InitTypeDef
      Ez az UART alapvető konfigurációs struktúra, amely BaudRate, WordLength, StopBits, Parity és Mode konfigurációkból áll, az alábbiak szerint.
      Változó Név Írja be Leírás
      USART_BaudRate u32 UART kommunikációs adatátviteli sebesség
      USART_WordLength u16 UART kommunikációs szó hossza: 7, 8 vagy 9 bit
      USART_StopBits u16 UART kommunikációs stop bit hossza: 1 vagy 2 bit
      USART_Parity u16 UART kommunikációs paritás: páros, páratlan, mark, szóköz vagy paritás nélkül
      USART_Mode u16 UART kommunikációs mód; az API-k csak normál módot támogatnak
  2. Az API funkciók használata előtt végezze el az UART alapkonfigurációját a fő programban. Az alkalmazáskód UART alapkonfigurációja a 12. ábrán látható. Itt az adatátviteli sebesség 115200 8 bps, a szó hossza 1 bit, a stopbit hossza XNUMX bit, és nincs paritás.
    12. ábra: UART alapkonfiguráció
    Alapkonfiguráció
  3. A 13. ábra az uart_module.h fájlban deklarált API-függvényeket mutatja be file. A következő táblázatok ismertetik az API-függvények funkcióját, bemeneti paramétereit és használatát.
    13. ábra: API függvénynyilatkozatok az uart_module.h fájlban 
    API-függvénynyilatkozatok
Név void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funkció UART modul inicializálása
  Bemenet CH UART csatorna
pUART_Init UART alapvető konfigurációs szerkezet mutatója
 uRxTimeOutValue UART RX FIFO időtúllépési érték. Amikor az RX FIFO új adatot kap, a számláló alaphelyzetbe áll és újraindul. Amint a számláló eléri az előre beállított időtúllépési értéket, és a megfelelő időtúllépési megszakítást engedélyezték, egy időtúllépési megszakítás generálódik.
 Használat UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Az UART alapkonfiguráció végrehajtása//Lásd a 12. ábrát az USART_InitStructure konfigurációjához
Név u32 UARTM_WriteByte(u32 CH, u8 uData)
Funkció UART modul írási byte művelet (TX)
Bemenet CH UART csatorna
uData Az írandó adatok
Kimenet SIKER Sikeres
HIBA Sikertelen
Használat UARTM_WriteByte(UARTM_CH0, 'A'); //Az UART 1 bájtot ír – 'A'
Név u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funkció UART modul írási művelet (TX)
 Bemenet CH UART csatorna
pBuffer Puffermutató
uHossz Az írandó adatok hossza
Kimenet SIKER Sikeres
HIBA Sikertelen
 Használat u8 Teszt[] = "Ez teszt!\r\n"; UARTM_Write(UARTM_CH0, Teszt, mérete(Teszt) -1); //Az UART pBuffer adatokat ír
Név u32 UARTM_ReadByte(u32 CH, u8 *pData)
Funkció UART modul olvasási bájt művelet (RX)
Bemenet CH UART csatorna
pData Az olvasott adatok elhelyezésének címe
Kimenet SIKER Sikeres
HIBA Sikertelen (nincs adat)
   Használat u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == SIKER){UARTM_WriteByte(UARTM_CH0, TempData);}//Ha az UARTM_ReadByte() a SUCCESS értéket adja vissza, akkor az UART írja ezt az adatbájtot
Név u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funkció UART modul olvasási művelet (RX)
 Bemenet CH UART csatorna
pBuffer Puffermutató
uHossz Az olvasandó adatok hossza
Kimenet Olvasási szám Az adatok hossza beolvasásra került
     Használat u8 Teszt2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() 5 bájtnyi adatot olvas be, adatokat tárol a Test2-be, és hozzárendeli az olvasási bájtszámot Lennek//Írja fel a Teszt2-ből származó adatokat
Név u32 UARTM_GetReadBufferLength(u32 CH)
Funkció Szerezze meg az olvasási puffer hosszát (RX)
Bemenet CH UART csatorna
Kimenet uHossz Olvassa le a puffer hosszát
  Használat UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //UART modul inicializálása while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Várja meg, amíg az UARTM_ReadBuffer 5 bájtnyi adatot nem kap
Név u32 UARTM_GetWriteBufferLength(u32 CH)
Funkció Szerezze meg az írási puffer hosszát (TX)
Bemenet CH UART csatorna
Kimenet uHossz Írja be a puffer hosszát
Név u8 UARTM_IsTxFinished(u32 CH)
Funkció Szerezze meg a TX állapotot
Bemenet CH UART csatorna
Kimenet IGAZ TX állapot: kész
HAMIS TX állapot: nincs kész
      Használat UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // "uart_module.c" SVN >= 525 szükségeswhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Ez az API használható a TX állapot ellenőrzésére, ahogy fent látható; Várja meg, amíg az UARTM_WriteByte() API befejeződik, azaz a TX állapot IGAZ, majd folytassa a következő műveleteket.//A rendszer hozzáad egy korlátozást, mert ezt a függvényt addig nem adták hozzá, amíg az uart_module.c SVN verziószáma nem lesz 525.
Név üres UARTM_DiscardReadBuffer(u32 CH)
Funkció Dobja el az olvasási pufferben lévő adatokat
Bemenet CH UART csatorna

API-használat plamples 

Ez a rész bemutatja az API írását és olvasását, plampa „Module_UART” alkalmazáskódot az inicializálási folyamat segítségével és az „UART_Module_Ex”ample” jelentkezési kód folyamat. Az API-k használata előtt a felhasználóknak tartalmazniuk kell az API-fejlécet file a fő program forráskódjába file (#include „middleware/uart_module.h”).

A 14. ábrán látható módon, amikor belép az inicializálási folyamatba, először határozza meg az UART alapvető konfigurációs struktúráját. Ezután konfigurálja az UART alapvető konfigurációs struktúra tagjait, beleértve a BaudRate-et, a WordLength-et, a StopBits-eket, a paritást és a módot. Végül hívja meg az API inicializálási függvényt, amelynek befejezése az inicializálási folyamat végét jelzi. Ezt követően a felhasználók folytathatják az írási és olvasási műveleteket az előre beállított UART alapkonfiguráció alapján.

14. ábra Inicializálási folyamatábra
Inicializálási folyamatábra

Az „UART_Module_Example” alkalmazáskód az API olvasási és írási műveleteit visszacsatolásos módon mutatja be. Ennek folyamatábrája a 15. ábrán látható. A használt API függvények közé tartozik az UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() és UARTM_GetReadBufferLength(). Leírásukat az „API leírása” részben találja.

15. ábra: Írás és olvasás folyamatábrája Plamples
Az írás és olvasás folyamatábrája, plamples

Van egy másik „UART_Bridge” alkalmazáskód a „Module_UART” mappában, amelyhez kapcsolódik file leírását a „Könyvtárszerkezet” részben mutatjuk be. Az „UART_Bridge” alkalmazáskód két UART csatornát aktivál, az UART CH0 és az UART CH1 csatornát, majd testreszabja a kommunikációs protokollt a két UART eszköz között a COMMAND struktúrákon, a gCMD1 és gCMD2 segítségével. Ezek az uart_bridge.c fájlban vannak meghatározva, az alábbiak szerint. UARTBridge_CMD1TypeDef gCMD1:

Változó Név Írja be Leírás
uHeader u8 Fejléc
uCmd u8 Parancs
uData[3] u8 Adat

UARTBridge_CMD2TypeDef gCMD2:

Változó Név Írja be Leírás
uHeader u8 Fejléc
uCmdA u8 Parancs A
uCmdB u8 Parancs B
uData[3] u8 Adat

Az „UART_Bridge” alkalmazáskódban használja a gCMD1-et az adatok parancscsomagként történő fogadásához, majd elemzéséhez. Ezután a testreszabott kommunikációs protokollnak megfelelően állítsa be a gCMD2-t válaszcsomagként, és küldje el. A következő egy exampegy parancscsomag gCMD1) és egy válaszcsomag (gCMD2) le. Parancscsomag (UARTBridge_CMD1TypeDef gCMD1):

0 bájt 1 bájt 2. bájt ~ 4. bájt
uHeader uCmd uData [3]
"A" „1” „x, y, z”

Válaszcsomag (UARTBridge_CMD2TypeDef gCMD2):

0 bájt 1 bájt 2 bájt 3. bájt ~ 5. bájt
uHeader uCmdA uCmdB uData [3]
"B" "a" „1” „x, y, z”

Erőforrás Foglalkozás
A HT32F52352-et ex-nek tekintveample, az UART modul által elfoglalt erőforrások az alábbiakban láthatók.

HT32F52352
ROM mérete 946 bájt
RAM mérete 40*1 + 256*2 Bájtok

Jegyzet:

  1. A globális változók, beleértve a zászlókat és az egyetlen csatorna állapotát, 40 bájt RAM-ot foglalnak el.
  2.  Ez olyan állapotra vonatkozik, amikor egyetlen csatornát használnak, és a TX/RX puffer mérete 128/128 bájt. A puffer mérete az alkalmazási követelményeknek megfelelően állítható be.

4. táblázat: Alkalmazáskód erőforrás-foglalkozás 

  • Összeállítási környezet: MDK-Arm V5.36, ARMCC V5.06 7. frissítés (960-as build)
  • Optimalizálási lehetőség: 2. szint (-O2)

Használati utasítás

Ez a fejezet bemutatja a „Module_UART” alkalmazáskód környezeti előkészítését, valamint a fordítási és tesztelési lépéseket.

Környezetvédelmi felkészítés
Az alábbiakban felsoroljuk a „Module_UART” alkalmazáskódhoz szükséges hardvert és szoftvert.
5. táblázat: Hardver/szoftver környezeti előkészítés 

Hardver/Szoftver Gróf Jegyzet
Starter Kit 1 Ez az alkalmazási megjegyzés a HT32F52352 Starter Kit-et használja példakéntample
USB kábel 1 Micro USB, PC-hez csatlakoztatva
Alkalmazási kód A letöltési útvonal, file és a könyvtárkonfigurációt az „Erőforrások letöltése és előkészítése” részben mutatjuk be.Elérési út: „\\application\Module_UART\UART_Module_Example”
Tera Term Tekintse meg a „Terminálszoftver” részt
Keil IDE Keil uVision V5.xx

Először is használja a HT32F52352 Starter Kit-et az e-Link32 Lite virtuális COM portjával (VCP) kombinálva az UART alkalmazás bevezetéséhez. Ehhez a következő környezetvédelmi előkészítést kell végrehajtani:

  1. Az alaplapon két USB interfész található. Az USB-kábellel csatlakoztassa a számítógépet és az eLink32 Lite interfészt az alaplapon a 16-(a) ábrán látható módon.
  2. Mivel az alkalmazás kódjának az e-Link32 Lite Virtual COM Port (VCP) funkcióját kell használnia, győződjön meg arról, hogy az UART Jumper-J2*2 PAx*1 és DAP_Tx csatlakozója egy jumper segítségével rövidre lett zárva. A J2 helyet a 16-(b) ábra jelzi.

Jegyzet

  1. A Starter Kit J2-jének két lehetősége van: PAx és DAP_Tx rövidre vagy PAx és RS232_Tx rövidre. A részletes beállítási funkciókat a Starter Kit felhasználói kézikönyvben találja.
  2. Az MCU UART RX tűk elhelyezkedése a különböző kezdőkészleteken eltérő. Ez az exampA le PAx-ot használ az RX tű jelzésére.

16. ábra: HT32 Starter Kit blokkdiagram
Kit blokkdiagram

Most használja a felhasználói célkártyát az e-Link32 Pro Virtual COM Port (VCP) funkciójával kombinálva az UART alkalmazás bevezetéséhez. Ehhez a következő környezetvédelmi előkészítést kell végrehajtani:

  1. Az e-Link32 Pro egyik oldala mini USB-kábellel, a másik oldala pedig a 10 bites szürke kábelen keresztül a felhasználói célkártyához csatlakozik. A kábel és a célkártya SWD interfészei közötti kapcsolat Dupont vonalak segítségével valósul meg, a 17-(a) ábrán látható módon.
  2. Az e-Link32 Pro soros kommunikációs érintkezői a Pin#7 VCOM_RXD és Pin#8- VCOM_TXD. Ezeket a felhasználói célkártya TX és RX érintkezőihez kell csatlakoztatni, a 17-(b) ábrán látható módon.
    17. ábra: e-Link32 Pro + felhasználói céltábla blokkdiagramja
    Felhasználói céltábla

Összeállítás és teszt
Ez a szakasz az „application\Module_UART\UART_Module_Example” mint example a fordítási és tesztelési folyamatok bemutatására. Ezt megelőzően győződjön meg arról, hogy az előző részben leírt összes előkészületet végrehajtotta, és a Tera Term terminálszoftvert letöltötte.

A művelet részletes lépéseit az alábbiakban foglaljuk össze.
1. lépés: Bekapcsolási teszt

Állítsa be a hardverkörnyezetet az előző részben leírtak szerint. Bekapcsolás után a Starter Kit bal alsó részén található D9 tápfeszültség LED világít. Az e-Link1 Lite jobb felső sarkában lévő D32 USB LED az USB felsorolás befejezése után világít. Ha a D1 hosszú idő után nem világít, ellenőrizze, hogy az USB-kábel képes-e kommunikálni. Ha nem, akkor távolítsa el, és helyezze be újra.

2. lépés: Hozzon létre egy projektet
Nyissa meg az alkalmazást\Module_UART\UART_Module_Example mappát, kattintson a _CreateProject.bat fájlra file projekt létrehozásához, a 18. ábrán látható módon. Mivel ez az alkalmazási megjegyzés a HT32F52352 Starter Kit-et használja, nyissa meg az MDK_ARMv52352 mappa alatt található „Project_5.uvprojx” Keil IDE projektet.

18. ábra. A projekt létrehozásához hajtsa végre a _CreateProject.bat parancsot
Projekt létrehozása

3. lépés Fordítás és programozás
A projekt megnyitása után először kattintson a „Build” gombra (vagy használja az „F7” parancsikont), majd kattintson a „Letöltés” ​​gombra (vagy használja az „F8” parancsikont). Ezt követően a felépítési és letöltési eredmények megjelennek a Build Output ablakban. Lásd a 19. ábrát.

19. ábra: Összeépítési és letöltési eredmények
Építési és letöltési eredmények

4. lépés. Nyissa meg a Tera Term szoftvert, és konfigurálja a soros portot
Nyissa meg a Tera Term szoftvert és a COM portot. Ügyeljen arra, hogy a Starter Kit által generált COM portszám helyes-e vagy sem. Ezután kattintson a „Setup >> Serial Port” elemre a konfigurációs felületre való belépéshez. A „Module_UART” alkalmazáskód UART interfész konfigurációját a „Terminálszoftver” részben ismertetjük. A beállítás eredménye a 20. ábrán látható.

20. ábra: Tera Term soros port beállításának eredménye
Beállítás eredménye
5. lépés: Állítsa vissza a rendszert és tesztelje
Nyomja meg az SK reset gombot – B1 Reset. Ezt követően egy „ABCEz a teszt!” üzenet lesz
Az API-n keresztül továbbítjuk, és a Tera Term ablakban jelenik meg, ahogy a 21. ábrán látható. A fogadási funkciót illetően a Tera Term ablakba történő adatbevitelkor a megfelelő API-t használjuk a vételi puffer hosszának meghatározásához. Amikor a PC által fogadott adatok elérik az 5 bájtot, a fogadott 5 bájtnyi adat sorban kerül kiküldésre. A 22. ábrán látható módon a szekvenciálisan bevitt adatok „1, 2, 3, 4, 5”, amelyet az API fogad és határoz meg. Ezt követően az öt bevitel után az „1, 2, 3, 4, 5” adat kerül kinyomtatásra.

21. ábra „Module_UART” Alkalmazáskód Funkcionális Teszt – Átvitel
Alkalmazáskód funkcionális teszt

22. ábra: „Module_UART” Alkalmazáskód funkcionális teszt – Fogadás
Alkalmazáskód funkcionális teszt

Transzplantációs utasítások
Ez a rész bemutatja, hogyan lehet integrálni az API-kat a felhasználói projektekbe.
1. lépés Adja hozzá az uart_module.c fájlt file a projektbe. Kattintson a jobb gombbal a User mappára. Válassza a „Meglévő hozzáadása Files a „Felhasználó” csoportba, majd válassza ki az uart_module.c fájlt file és kattintson a „Hozzáadás” gombra, ahogy az a 23. ábrán látható. Lásd a „Könyvtárszerkezet” részt. file útvonal leírása.

23. ábra: uart_module.c hozzáadása File a Projekthez
File a Projekthez

2. lépés. Adja hozzá a ring_buffer.c fájlt file a projektbe. Kattintson a jobb gombbal a User mappára. Válassza a „Meglévő hozzáadása Files a 'Felhasználó' csoportba, majd válassza ki a ring_buffer.c file és kattintson a „Hozzáadás” gombra, ahogy az a 24. ábrán látható.\ Tekintse meg a „Könyvtárszerkezet” részt a file útvonal leírása.
24. ábra: Add ring_buffer.c File a Projekthez 
File a Projekthez

3. lépés. Tartalmazza az API-fejlécet file a main.c elejére, ahogy az a 25. ábrán látható. (Ext: #include „middleware/uart_module.h”)
25. ábra: tartalmazza az API fejlécet File hogy fő.c
Tartalmazza az API fejlécet File

4. lépés. Végezze el az UART kommunikációhoz szükséges beállításokat a ht32_board_config.h segítségével file. Ezt a „Beállítás leírása” és a „Beállítás módosítása és GYIK” szakaszok mutatják be részletesen.

Beállításmódosítás és GYIK 

Ez a rész bemutatja, hogyan módosíthatja az UART beállításait, és megmagyaráz néhány gyakori kérdést, amelyek a használat során felmerülnek.

Az UART PIN-kiosztás módosítása 

  1. A HT32F52352 adatlap „Pin Assignment” fejezetére hivatkozva keresse meg az Alternate Function Mapping táblázatot, amely felsorolja az eszköztípus AFIO funkcióit. Az UART releváns érintkezőit az „AF6 USART/UART” oszlopban találja, a 26. ábrán látható módon.
    26. ábra: HT32F52352 alternatív függvényleképezési táblázat
    Alternatív függvényleképezési táblázat
  2. Ez a lépés elvezeti a felhasználókat a megfelelő UART érintkezők megkereséséhez a fenti táblázat segítségével. A HT32F52352 exampA le az USART1-et használja alapértelmezett csatornaként. Itt a TX és RX érintkezők USR1_TX és USR1_RX, és PA4-en, illetve PA5-ön találhatók. A 27. ábra mutatja a tűk megfeleltetését, valamint a tűk definícióit a „ht32_board_config.h” fájlban. A „Csomag” üres mezői a PIN-kiosztási táblázatban azt jelentik, hogy ebben a csomagban nincsenek releváns GPIO-k. Az UART tűk módosításához keresse meg a céltűk helyét, és határozza meg újra a tűket a „ht32_board_config.h” segítségével. file.
    27. ábra Pin levelezés és beállítás módosítása
    Beállítás módosítása

Adjon hozzá egy UART csatornát
Példaként tekintve a HT32F52352 HTCFG_UARTM_CH1 készülékreample, itt le van írva, hogyan lehet új UART csatornát hozzáadni.

Módosítsa a ht32_board_config.h fájlt file
A HT32F52352 adatlap „Pin Assignment” fejezetére hivatkozva keresse meg az Alternate Function Mapping táblázatot, amely felsorolja az eszköztípus AFIO funkcióit. Mivel az USART1-et HTCFG_UARTM_CH0-ként használták, az újonnan hozzáadott HTCFG_UARTM_CH1 választhatja az USART0-t. Itt a TX és RX érintkezők a PA2-n és a PA3-on helyezkednek el, amint az a 28. ábra felső felében látható. A megfelelő módosítások a ht120_board_config.h fájl 126-32-os kódsoraival vannak végrehajtva, amint azt a piros pontozott négyzet mutatja az ábrán. 28.

28. ábra: UART csatorna hozzáadása
UART csatorna

GYIK
Q: Az Összeállítás és tesztelés szakasz 5. lépésében az átviteli működési teszt normális. Itt az „ABCEz a teszt!” üzenet sikeresen kijelzésre került, de a fogadás funkciónál miért nem jelenik meg az öt bemeneti érték?
A: Ellenőrizze, hogy az UART Jumper-J2 MCU UART RX és DAP_Tx érintkezői rövidre zártak-e egy jumper segítségével. Mivel a „Module_UART” alkalmazáskódnak az e-Link32 Lite virtuális COM portját (VCP) kell használnia, a rövidzár beállítást az UART Jumper-J2 bal két érintkezőjére kell alkalmazni, a 29. ábrán látható módon.

29. ábra: UART Jumper-J2 beállítás
UART Jumper

K: Utána a „Build” (vagy az „F7” parancsikon) végrehajtásakor hibaüzenet jelenik meg, amely azt jelzi, hogy a firmware-könyvtár verziója régebbi, mint a szükséges verzió? Lásd a 30. ábrát.
A: A „Module_UART” alkalmazáskód megvalósításának tartalmaznia kell az uart_module.c/h files amelyhez egy bizonyos firmware-könyvtár-verzió követelménye van. Ha egy ilyen hibaüzenet jelenik meg, az azt jelenti, hogy a jelenleg használt firmware-könyvtár egy régebbi verzió. Ezért le kell töltenie a legújabb verziót a „Firmware Library” részben található hivatkozáson keresztül.

30. ábra: Firmware Library Version Error Üzenet
Verzió hibaüzenet

Következtetés

Ez a dokumentum alapvető bevezetést nyújt, hogy segítse a felhasználókat a „Module_UART” alkalmazáskód és az UART kommunikációs protokoll jobb megértésében. Ezt követte a forrás letöltése és előkészítése. A Funkcionális leírás fejezet bemutatta a file címtárszerkezet, API architektúra, API leírás és API használat plamples. A Használati útmutató fejezet bemutatta a „Module_UART” alkalmazáskód környezeti előkészítését, összeállítását és tesztelését. Utasításokat is tartalmazott a kódtranszplantációhoz és a módosítás beállításához, valamint elmagyarázott néhány gyakori problémát, amelyekkel találkozhat. Mindezek együttesen lehetővé teszik a felhasználók számára, hogy gyorsan megértsék az API-k használatát, és ezt követően csökkentsék az induláshoz szükséges időt.

Referencia anyag

További információkért lásd a Holtek webWeboldal: www.holtek.com

Verziók és módosítási információk

Dátum Szerző Kiadás Módosítási információk
2022.04.30 蔡期育 (Csi-Yu Tsai) V1.00 Első verzió

Jogi nyilatkozat

Minden információ, védjegyek, logók, grafikák, videók, hangklipek, linkek és egyéb elemek webAz oldal („Információ”) csak tájékoztató jellegű, és bármikor, előzetes értesítés nélkül, valamint a Holtek Semiconductor Inc. és kapcsolódó vállalatai (a továbbiakban: „Holtek”, „a vállalat”, „mi”, mi" vagy "miénk"). Miközben a Holtek igyekszik biztosítani az ezzel kapcsolatos Információk pontosságát weboldalon, a Holtek nem vállal kifejezett vagy hallgatólagos garanciát az Információk pontosságára. A Holtek nem vállal felelősséget a hibákért vagy szivárgásokért.
A Holtek nem vállal felelősséget semmilyen kárért (beleértve, de nem kizárólagosan a számítógépes vírust, a rendszerproblémákat vagy az adatvesztést), amely a jelen eszköz használatából vagy azzal kapcsolatban merül fel. weboldal bármely fél által. Ezen a területen lehetnek linkek, amelyek lehetővé teszik, hogy meglátogassa a webmás cégek oldalain.
Ezek webaz oldalakat nem a Holtek felügyeli. A Holtek nem vállal felelősséget és nem vállal garanciát az ilyen webhelyeken megjelenő információkért. Hiperhivatkozások másokhoz webwebhelyek saját felelősségére.

A felelősség korlátozása

A Holtek Limited semmilyen esetben sem vállal felelősséget más felek felé semmilyen veszteségért vagy kárért, amelyet közvetlenül vagy közvetve okozott az Ön hozzáférésével vagy használatával kapcsolatban. webwebhely, az azon található tartalom vagy bármely áru, anyag vagy szolgáltatás.

Irányadó törvény
A Felelősségvállalási nyilatkozat, amelyet a webaz oldalt a Kínai Köztársaság törvényei szabályozzák és azok értelmezik. A felhasználók alávetik magukat a Kínai Köztársaság bíróságainak nem kizárólagos joghatóságának.

Felelősségi nyilatkozat frissítése
A Holtek fenntartja a jogot, hogy előzetes értesítéssel vagy anélkül bármikor frissítse a Felelősségi nyilatkozatot, minden változás azonnal hatályba lép, amint közzéteszik a webtelek.

Dokumentumok / Források

HOLTEK HT32 MCU UART Alkalmazási megjegyzés [pdf] Felhasználói kézikönyv
HT32 MCU, UART alkalmazási megjegyzés, HT32 MCU UART, alkalmazási megjegyzés, HT32, MCU UART alkalmazási megjegyzés, HT32 MCU UART alkalmazási megjegyzés

Hivatkozások

Hagyj megjegyzést

E-mail címét nem tesszük közzé. A kötelező mezők meg vannak jelölve *