HOLTEK HT32 MCU UART alkalmazás Megjegyzés Felhasználói kézikönyv
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
2. ábra: 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
4. ábra: UART 8 bites 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
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/
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
8. ábra 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:
- 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.
- 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.
- 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
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:
- Legfeljebb négy UART csatorna támogatott. Bemeneti paramétereik UARTM_CH0, UARTM_CH1, UARTM_CH2 és UARTM_CH3.
- 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.
- 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.
- 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)
- 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
API leírás
- 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
- USART_InitTypeDef
- 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ó
- 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
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
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
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:
- 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.
- 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:
- 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.
- 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
- 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.
- 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
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:
- 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.
- 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
Ö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
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
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
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
22. ábra: „Module_UART” Alkalmazáskód funkcionális teszt – Fogadás
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
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
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
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
- 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
- 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
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
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
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
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 |