Uživatelská příručka k aplikaci HOLTEK HT32 MCU UART
Aplikační poznámka HOLTEK HT32 MCU UART

Zavedení

Univerzální asynchronní přijímač/vysílač – UART je široce používané rozhraní sériového přenosu, které poskytuje flexibilní asynchronní plně duplexní přenos dat. Aplikační kód „Module_UART“ uvedený v této aplikační poznámce používá přerušení TX/RX se softwarovými kruhovými vyrovnávací paměti k implementaci jednoduchých funkcí vysílání/přijímání UART prostřednictvím rozhraní API, jejichž související funkce jsou popsány níže. To zjednoduší celý proces přenosu dat a umožní uživatelům rychle pochopit a implementovat komunikační aplikace UART.

  • Funkce vysílání/příjem: čtení bajtu, zápis bajtu, čtení vyrovnávací paměti, zápis do vyrovnávací paměti atd.
  • Stavové funkce: získání délky vyrovnávací paměti, stav vysílání atd.

Tento dokument nejprve představí komunikační protokol UART, který uživatelům pomůže lépe porozumět komunikaci UART od principu až po aplikaci. Následuje stažení a příprava zdrojů potřebných pro kód aplikace, včetně knihovny firmwaru, stažení kódu aplikace, file a konfiguraci adresáře a také úvod do softwarového nástroje terminálu použitého v poznámce k aplikaci. V kapitole Funkční popis bude představena adresářová struktura kódu aplikace, nastavení parametrů a popis API. Využití API bude popsáno pomocí kódu aplikace „Module_UART“ a bude také uvedena spotřeba zdrojů Flash/RAM požadovaná pro API. Kapitola Návod k použití provede uživatele kroky přípravy prostředí, kompilace a testu, aby se potvrdilo, že kód aplikace bude správně fungovat. Poté poskytne pokyny vysvětlující, jak integrovat rozhraní API do projektů uživatele, a nakonec poskytne odkaz na úpravy a běžné problémy, se kterými se můžete setkat.

Použité zkratky: 

  • UART: Univerzální asynchronní přijímač/vysílač
  • API: Aplikační programovací rozhraní
  • LSB: Nejméně významný bit
  • MSB: Nejvýznamnější bit
  • PC: Osobní počítač
  • SK: Starter Kit, vývojová deska HT32
  • IDE: Integrované vývojové prostředí

Komunikační protokol UART

UART je sériový komunikační typ rozhraní, které implementuje paralelní převod dat na sériový ve svém vysílači a poté sériově komunikuje s podobným přijímačem. Přijímač poté po příjmu dat provede sériový-paralelní převod dat. Obrázek 1 ukazuje schematický diagram sériové komunikace ukazující, jak jsou data přenášena v bitovém pořadí. Proto jsou pro obousměrnou komunikaci mezi vysílačem a přijímačem zapotřebí pouze dva vodiče, TX a RX, pro sériový přenos dat mezi sebou. TX je pin, na kterém UART přenáší sériová data a je připojen k RX pinu přijímače. Vysílací a přijímací zařízení proto musí propojit své TX a RX kolíky, aby mohla provádět obousměrnou komunikaci UART, jak je znázorněno na Postava 2.

Obrázek 1. Schéma sériové komunikace
Schéma sériové komunikace

Obrázek 2. Schéma obvodu UART
Schéma obvodu UART

Během sériové komunikace UART je přenos dat asynchronní. To znamená, že mezi vysílačem a přijímačem nejsou žádné hodiny nebo jiný synchronizační signál. Zde se používá přenosová rychlost, což je rychlost sériového vysílání/přijímání dat, která je nastavena oběma stranami před datovými přenosy. Kromě toho se na začátek a konec datového paketu přidávají speciální bity, jako jsou startovací a koncové bity, aby se vytvořil kompletní datový paket UART. Obrázek 3 ukazuje strukturu datového paketu UART, zatímco obrázek 4 ukazuje 8bitový datový paket UART bez paritního bitu.
Obrázek 3. Struktura datových paketů UART
Struktura datových paketů UART

Obrázek 4. 8bitový formát datových paketů UART
Formát datových paketů
Každá část datového paketu UART je uvedena v pořadí níže.

  • Start Bit: Označuje začátek datového paketu. Pin UART TX obvykle zůstává na vysoké logické úrovni před zahájením přenosu. Pokud se spustí přenos dat, vysílač UART přetáhne TX kolík z vysoké na nízkou, tj. z 1 na 0, a pak jej tam podrží po dobu jednoho hodinového cyklu. Přijímač UART začne číst data, když je na pinu RX detekován přechod z vysoké na nízkou.
  • Data: Jedná se o skutečně přenesená data s délkou dat 7, 8 nebo 9 bitů. Data jsou obvykle nejprve přenášena pomocí LSB.
  • Paritní bit: Číslo logické „1“ v datech se používá k určení, zda se některá data během přenosu změnila. Pro sudou paritu by měl být celkový počet logických „1“ v datech sudé číslo, naopak celkový počet logických „1“ v datech by měl být liché číslo pro lichou paritu.
  • Stop Bit: To znamená konec datového paketu, kdy UART vysílač přetáhne TX pin z nízké na vysokou, tj. z 0 na 1, a pak jej tam podrží po dobu 1 nebo 2 bitů.

Jak již bylo zmíněno, protože v obvodu UART není žádný hodinový signál, musí být mezi vysílačem a přijímačem definována stejná rychlost vysílání/přijímání sériových dat, která je známá jako přenosová rychlost, aby byl zajištěn bezchybný přenos. Přenosová rychlost je definována počtem bitů přenesených za sekundu v bps (bit za sekundu). Některé standardní a běžně používané přenosové rychlosti jsou 4800bps, 9600bps, 19200bps, 115200bps atd. Odpovídající čas potřebný pro přenos jednoho datového bitu je uveden níže.
Tabulka 1. Přenosová rychlost vs. 1bitový přenosový čas 

Přenosová rychlost 1-bitový přenos Čas
4800 bps 208.33 us
9600 bps 104.16 us
19200 bps 52.08 us
115200 bps 8.68 us

Stažení a příprava zdrojů

Tato kapitola představí kód aplikace a použitý softwarový nástroj a také způsob konfigurace adresáře a file cesta.

Knihovna firmwaru 

Nejprve se před použitím kódu aplikace ujistěte, že byla stažena knihovna firmwaru Holtek HT32. Odkaz ke stažení je uveden níže. Zde jsou dvě možnosti, HT32_M0p_Vyyyymmdd.zip pro řadu HT32F5xxxx a HT32_M3_Vyyyymmdd.zip pro řadu HT32F1xxxx. Stáhněte a rozbalte požadovaný file.

Zip file obsahuje několik složek, které lze klasifikovat jako Dokument, Knihovna firmwaru, Nástroje a další položky, jejichž umístění je znázorněno na obrázku 5. Knihovna firmwaru HT32 zip file s a file název HT32_STD_xxxxx_FWLib_Vm.n.r_s.zip se nachází ve složce Firmware_Library.

Obrázek 5. HT32_M0p_Vyyyymmdd.zip Obsah
Obsah

Kód aplikace
Stáhněte si kód aplikace z následujícího odkazu. Kód aplikace je zabalen do zipu file s a file název HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip. Vidět Obrázek 6 pro file jmenné konvence.

Obrázek 6. Kód aplikace File Název Úvod 

Odkaz ke stažení: https://mcu.holtek.com.tw/ht32/app.fw/Module_UART/ Kód aplikace

File a Konfigurace adresáře
Protože kód aplikace neobsahuje knihovnu firmwaru HT32 files, rozbalí se kód aplikace a knihovna firmwaru files by měly být umístěny ve správné cestě před zahájením kompilace. Kód aplikace zip file obvykle obsahuje jednu nebo více složek, jako je aplikace a knihovna, jak je znázorněno na obrázku 7. Umístěte složku aplikace do kořenového adresáře knihovny firmwaru HT32 a dokončete file konfigurace cesty, jak je znázorněno na obrázku 8. Alternativně rozbalte kód aplikace a knihovnu firmwaru HT32 současně do stejné cesty, abyste dosáhli stejných výsledků konfigurace.

Obrázek 7. HT32_APPFW_xxxxx_APPCODENAME_Vm.n.r_s.zip Obsah
Obsah

Obrázek 8. Dekompresní cesta
Dekompresní cesta

Terminálový software
Aplikační kód může přenášet zprávy přes COM port a realizovat výběr funkcí nebo zobrazení stavu. To vyžaduje, aby hostitelská strana měla terminálový software nainstalován předem. Uživatelé si mohou vybrat vhodný propojovací software nebo použít bezplatný licencovaný software, jako je Tera Term. V kódu aplikace je kanál UART nakonfigurován s délkou slova 8 bitů, bez parity, 1 stop bit a přenosovou rychlostí 115200 XNUMX bps.

Popis funkce

Tato kapitola poskytne funkční popis kódu aplikace, včetně informací o struktuře adresářů, architektuře API, popisu nastavení atd

Struktura adresáře
Kód aplikace file obsahuje složku aplikace. Další vrstvou je složka „Module_UART“, která obsahuje dva aplikační programy, „UART_Module_Example“ a „UART_Bridge“. Relevantní files jsou uvedeny a popsány níže.
Tabulka 2. Struktura adresáře kódu aplikace

Složka / File Jméno Popis
\\application\Module_UART\UART_Module_Example*1
_CreateProject.bat Dávkové skripty pro vytváření projektu files
_ProjectSource.ini Inicializace file pro přidávání zdrojového kódu do projektů
ht32_board_config.h Nastavení file související s přiřazením I/O periferií IC
ht32fxxxxx_01_it.c Přerušit servisní program file
hlavní.c Hlavní zdrojový kód programu
\\application\Module_UART\UART_Bridge*2
_CreateProject.bat Dávkové skripty pro vytváření projektu files
_ProjectSource.ini Inicializace file pro přidávání zdrojového kódu do projektů
ht32_board_config.h Nastavení file související s přiřazením I/O periferií IC
ht32fxxxxx_01_it.c Přerušit servisní program file
hlavní.c Zdrojový kód hlavního programu
uart_bridge.h uart_bridge.c Záhlaví mostu UART file a zdrojový kód file
\\utilities\middleware
uart_module.h*3 uart_module.c*3 hlavička API file a zdrojový kód file
\\utilities\common
ringbuffer.h ring_buffer.c Záhlaví softwarové kruhové vyrovnávací paměti file a zdrojový kód file

Poznámka: 

  1. V „UART_Module_Example“ kód aplikace, operace čtení a zápisu API se provádějí způsobem zpětné smyčky, viz „Příklad použití APIamples“ pro více podrobností.
  2.  V kódu aplikace „UART_Bridge“ jsou aktivovány dva kanály UART, UART CH0 a UART CH1, a mezi dvěma zařízeními UART je implementován vlastní komunikační protokol prostřednictvím struktur COMMAND. Další informace najdete v „API Usage Exampsekce les.
  3. Kód aplikace musí používat uart_module.c/h files, které mají požadavek na verzi knihovny firmwaru. Požadavek se může čas od času měnit podle aktualizace. Chcete-li potvrdit požadavek na aktuální verzi knihovny firmwaru, podívejte se na obsah kontroly závislostí vyhledáním klíčového slova „Kontrola závislosti“ v main.c file. Pokud verze knihovny firmwaru nesplňuje požadavky, stáhněte si nejnovější verzi z odkazu uvedeného v části „Knihovna firmwaru“.

Architektura API
Každé API má důležitý parametr CH, kterým je UART Channel. To určuje, který kanál UART má být řízen. V současné době jsou podporovány až čtyři kanály UART, a proto jsou čtyři konstantní symboly definovány následovně. Ty se používají jako parametr CH poskytující API základ pro ovládání.

  • UARTM_CH0: vstupní parametr – ovládání nebo konfigurace UART CH0
  • UARTM_CH1: vstupní parametr – ovládání nebo konfigurace UART CH1
  • UARTM_CH2: vstupní parametr – ovládání nebo konfigurace UART CH2
  • UARTM_CH3: vstupní parametr – ovládání nebo konfigurace UART CH3

Při použití pouze jednoho kanálu UART nedojde k plýtvání místem v paměti. Je to proto, že lze nastavit počet podporovaných kanálů UART a nepoužitý kód kanálu UART bude odstraněn preprocesorem, aby se zvětšil dostupný paměťový prostor. Architektura API je zobrazena v Obrázek 9.

Obrázek 9. Blokový diagram architektury API
Blokové schéma architektury

Každé API se skládá ze čtyř skupin nastavení nebo ovládacích prvků souvisejících s kanálem UART, takže uživatelé potřebují pouze zadat požadovaný parametr CH. Pro konfiguraci příslušného API je potřeba mít pouze další tabulku základních konfiguračních parametrů UART s formulářem struktury USART_InitTypeDef. API implementuje základní konfiguraci UART podle obsahu parametrů v tabulce. Tabulka základní konfigurace UART je uvedena v části „Popis rozhraní API“.

Soubor uart_module.c/.h files obsahují pouze přerušení (CHx_IRQ) ​​a stavovou tabulku (CHx Status) každého kanálu UART, zatímco všechna nastavení potřebná pro komunikaci UART poskytuje ht32_board_config.h. Parametry relevantní pro hardware v souboru ht32_board_config.h file jsou uvedeny v tabulce níže. Další podrobnosti jsou uvedeny v části „Popis nastavení“.

Hardwarově relevantní parametry v ht32_board_config.h zahrnují nastavení I/O a nastavení fyzického portu UART, jak je uvedeno níže.

Tabulka 3. Definice Symboly v ht32_board_config.h

Symbol Popis
HTCFG_UARTM_CH0 Fyzický název portu UART; Přample: UART0, UART1…
HTCFG_UARTM0_TX_GPIO_PORT Definuje název portu TX pro CH0; Přample: A, B, C…
HTCFG_UARTM0_TX_GPIO_PIN Definuje číslo pinu TX pro CH0; Přample: 0~15
HTCFG_UARTM0_RX_GPIO_PORT Definuje název portu RX pro CH0; Přample: A, B, C…
HTCFG_UARTM0_RX_GPIO_PIN Definuje číslo pinu TX pro CH0; Přample: 0~15
HTCFG_UARTM0_TX_BUFFER_SIZE Definuje velikost vyrovnávací paměti TX pro CH0; Přample: 128 XNUMX
HTCFG_UARTM0_RX_BUFFER_SIZE Definuje velikost RX vyrovnávací paměti pro CH0; Přample: 128 XNUMX

Chcete-li upravit konfiguraci AFIO kanálu UART, podívejte se na příslušný datový list zařízení. V současné době platí pouze definice I/O pro UART CH0, protože v ht0_board_config.h byl nakonfigurován pouze UART CH32. Chcete-li přidat UART CH1~3, jejich I/O definice musí být dokončeny odkazem na definici UART CH0 nebo odkazem na sekci „Úpravy nastavení a často kladené otázky“.

Existují tři hlavní vlastnosti architektury API: 

  1. Podporovány jsou až čtyři kanály UART. Jejich vstupní parametry jsou UARTM_CH0, UARTM_CH1, UARTM_CH2 a UARTM_CH3.
  2.  Počet kanálů UART lze nastavit a nevyužité kanály nesníží dostupné místo v paměti.
  3. Všechna nastavení UART a I/O definice jsou zcela odděleny od API. To zvyšuje pohodlí správy nastavení hodnot a snižuje možnost nesprávných nebo chybějících nastavení.

Popis nastavení 

Tato část představí nastavení parametrů v souborech ht32_board_config.ha uart_module.h files.

  1. ht32_board_config.h: Toto file se používá pro definice pinů a relevantní nastavení vývojové desky, která zahrnují UART IP kanál (UART0, UART1, USART0…) používaný Starter Kit (SK), odpovídající umístění pinů TX/RX a velikost vyrovnávací paměti TX/RX. Obrázek 10 ukazuje obsah nastavení startovací sady HT32F52352. V závislosti na funkční integraci vývoje mohou uživatelé pro implementaci definic pinů nahlédnout do části „Přiřazení pinů“ v datovém listu použitého zařízení. Více podrobností o úpravě nastavení bude popsáno v části „Úprava nastavení a často kladené otázky“.
    Obrázek 10. Nastavení ht32_board_config.h (HT32F52352)
    Nastavení
  2. uart_module.h: Toto je hlavička API file používá kód aplikace, který zahrnuje příslušná výchozí nastavení, definice funkcí atd. Jak ukazuje Obrázek 11, obsah výchozího nastavení lze přepsat externími konfiguracemi, jako je nastavení v souboru ht32_board_config.h file.
    Obrázek 11. Výchozí nastavení v uart_module.h
    Výchozí nastavení
Popis API
  1. Popis datového typu kódu aplikace.
    • USART_InitTypeDef
      Toto je základní konfigurační struktura UART, která se skládá z konfigurací BaudRate, WordLength, StopBits, Parity a Mode, jak je uvedeno níže.
      Variabilní Jméno Typ Popis
      USART_BaudRate u32 Přenosová rychlost komunikace UART
      USART_WordLength u16 Délka komunikačního slova UART: 7, 8 nebo 9 bitů
      USART_StopBits u16 Délka zastavení komunikace UART: 1 nebo 2 bity
      USART_Parita u16 Parita komunikace UART: sudá, lichá, značka, mezera nebo žádná parita
      USART_Mode u16 komunikační režim UART; API podporují pouze normální režim
  2. Před použitím funkcí API dokončete základní konfiguraci UART v hlavním programu. Základní konfigurace UART pro tento aplikační kód je znázorněna na obrázku 12. Zde je přenosová rychlost 115200 bps, délka slova je 8 bitů, délka stop bitu je 1 bit a neexistuje žádná parita.
    Obrázek 12. Základní konfigurace UART
    Základní konfigurace
  3. Obrázek 13 ukazuje funkce API deklarované v souboru uart_module.h file. Následující tabulky vysvětlují funkci, vstupní parametry a použití funkcí API.
    Obrázek 13. Deklarace funkcí API v uart_module.h 
    Deklarace funkcí API
Jméno void UARTM_Init(u32 CH, USART_InitTypeDef *pUART_Init, u32 uRxTimeOutValue)
Funkce Inicializace modulu UART
  Vstup CH UART kanál
pUART_Init UART základní konfigurační struktura ukazatel
 uRxTimeOutValue Hodnota časového limitu UART RX FIFO. Když RX FIFO přijme nová data, počítadlo se resetuje a restartuje. Jakmile čítač dosáhne přednastavené hodnoty časového limitu a bylo povoleno odpovídající přerušení časového limitu, bude generováno přerušení časového limitu.
 Používání UARTM_Init(UARTM_CH0, &USART_InitStructure, 40);//Provedení základní konfigurace UART//Konfiguraci USART_InitStructure viz obrázek 12
Jméno u32 UARTM_WriteByte(u32 CH, u8 uData)
Funkce Operace zápisu bajtů modulu UART (TX)
Vstup CH UART kanál
uData Data, která mají být zapsána
Výstup ÚSPĚCH Úspěšný
CHYBA Nepodařilo se
Používání UARTM_WriteByte(UARTM_CH0, 'A'); //UART zapíše 1 bajt – 'A'
Jméno u32 UARTM_Write(u32 CH, u8 *pBuffer, u32 uLength)
Funkce Operace zápisu modulu UART (TX)
 Vstup CH UART kanál
pBuffer Ukazatel vyrovnávací paměti
uLength Délka dat, která mají být zapsána
Výstup ÚSPĚCH Úspěšný
CHYBA Nepodařilo se
 Používání u8 Test[] = “Toto je test!\r\n”; UARTM_Write(UARTM_CH0, Test, sizeof(Test) -1); //UART zapisuje data pBuffer
Jméno u32 UARTM_ReadByte(u32 CH, u8 *pData)
Funkce Operace čtení bajtů modulu UART (RX)
Vstup CH UART kanál
pData Adresa pro umístění načtených dat
Výstup ÚSPĚCH Úspěšný
CHYBA Selhalo (žádná data)
   Používání u8 TempData; if (UARTM_ReadByte(UARTM_CH0, &TempData) == ÚSPĚCH){UARTM_WriteByte(UARTM_CH0, TempData);}//Pokud UARTM_ReadByte() vrátí SUCCESS, pak UART zapíše tento datový bajt
Jméno u32 UARTM_Read(u32 CH, u8 *pBuffer, u32 uLength)
Funkce Operace čtení modulu UART (RX)
 Vstup CH UART kanál
pBuffer Ukazatel vyrovnávací paměti
uLength Délka dat ke čtení
Výstup Počet přečtených Byla načtena délka dat
     Používání u8 Test2[10]; u32 Len; Len = UARTM_Read(UARTM_CH0, Test2, 5);if (Len > 0){UARTM_Write(UARTM_CH0, Test2, Len);}//UARTM_Read() přečte 5 bajtů dat a uloží data do Test2 a přiřadí počet přečtených bajtů to Len//Zapište data získaná z Test2
Jméno u32 UARTM_GetReadBufferLength(u32 CH)
Funkce Získejte délku vyrovnávací paměti pro čtení (RX)
Vstup CH UART kanál
Výstup uLength Délka vyrovnávací paměti čtení
  Používání UARTM_Init(UARTM_CH0, &USART_InitStructure, 40); //Inicializace modulu UART while (UARTM_GetReadBufferLength(UARTM_CH0) < 5);//Počkejte, dokud UARTM_ReadBuffer neobdrží 5 bajtů dat
Jméno u32 UARTM_GetWriteBufferLength(u32 CH)
Funkce Získejte délku vyrovnávací paměti pro zápis (TX)
Vstup CH UART kanál
Výstup uLength Délka vyrovnávací paměti zápisu
Jméno u8 UARTM_IsTxFinished(u32 CH)
Funkce Získejte stav TX
Vstup CH UART kanál
Výstup VĚRNÝ Stav TX: hotovo
FALEŠNÝ Stav vysílání: nedokončeno
      Používání UARTM_WriteByte(UARTM_CH0, 'O'); #if 1 // “uart_module.c” SVN >= 525 requiredwhile (UARTM_IsTxFinished(UARTM_CH0) == FALSE) #elsewhile (1) #endif //Toto API lze použít ke kontrole stavu TX, jak je uvedeno výše; počkejte, dokud neukončí UARTM_WriteByte() API, tj. stav TX je TRUE, a pak pokračujte v následných akcích.//Je přidáno omezení, protože tato funkce nebyla přidána, dokud číslo verze SVN v uart_module.c nebude 525.
Jméno prázdnota UARTM_DiscardReadBuffer(u32 CH)
Funkce Zrušte data ve vyrovnávací paměti pro čtení
Vstup CH UART kanál

Použití API Přamples 

Tato část bude demonstrovat zápis a čtení API napřampsoubory kódu aplikace „Module_UART“ pomocí procesu inicializace a „UART_Module_Example“ proces kódu aplikace. Před použitím rozhraní API musí uživatelé zahrnout hlavičku rozhraní API file do hlavního zdrojového kódu programu file (#include „middleware/uart_module.h“).

Jak je znázorněno na obrázku 14, při vstupu do procesu inicializace nejprve definujte základní konfigurační strukturu UART. Poté nakonfigurujte členy základní konfigurace UART včetně BaudRate, WordLength, StopBits, Parity a Mode. Nakonec zavolejte funkci inicializace API, jejíž dokončení indikuje konec procesu inicializace. Poté mohou uživatelé pokračovat v operacích zápisu a čtení na základě přednastavené základní konfigurace UART.

Obrázek 14. Inicializační vývojový diagram
Inicializační vývojový diagram

Modul „UART_Module_Example” kód aplikace demonstruje operace čtení a zápisu API způsobem zpětné smyčky. Vývojový diagram je znázorněn na obrázku 15. Mezi použité funkce API patří UARTM_WriteByte(), UARTM_Write(), UARTM_ReadByte(), UARTM_Read() a UARTM_GetReadBufferLength(). Jejich popis je uveden v části „Popis rozhraní API“.

Obrázek 15. Vývojový diagram zápisu a čtení Příkladamples
Vývojový diagram zápisu a čtení Přamples

Ve složce „Module_UART“ je další kód aplikace „UART_Bridge“, jehož související file popis je uveden v části „Struktura adresáře“. Aplikační kód „UART_Bridge“ aktivuje dva kanály UART, UART CH0 a UART CH1, a poté přizpůsobí komunikační protokol mezi dvěma zařízeními UART prostřednictvím struktur COMMAND, gCMD1 a gCMD2. Ty jsou definovány v uart_bridge.c, jak je uvedeno níže. UARTBridge_CMD1TypeDef gCMD1:

Variabilní Jméno Typ Popis
uHeader u8 Záhlaví
uCmd u8 Příkaz
uData[3] u8 Data

UARTBridge_CMD2TypeDef gCMD2:

Variabilní Jméno Typ Popis
uHeader u8 Záhlaví
uCmdA u8 Příkaz A
uCmdB u8 Příkaz B
uData[3] u8 Data

V kódu aplikace „UART_Bridge“ použijte gCMD1 pro příjem dat jako příkazový paket a poté je analyzujte. Poté podle přizpůsobeného komunikačního protokolu nastavte gCMD2 jako paket odpovědi a odešlete jej. Následuje example příkazového paketu gCMD1) a paketu odpovědi (gCMD2). Příkazový paket (UARTBridge_CMD1TypeDef gCMD1):

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

Paket odpovědi (UARTBridge_CMD2TypeDef gCMD2):

Bajt 0 Bajt 1 Bajt 2 Bajt 3 ~ Bajt 5
uHeader uCmdA uCmdB uData [3]
"B" "A" "1" "x, y, z"

Povolání zdrojů
Vezmeme-li HT32F52352 jako example, zdroje obsazené modulem UART jsou zobrazeny níže.

HT32F52352
Velikost ROM 946 bajtů
Velikost RAM 40*1 + 256*2 Bajtů

Poznámka:

  1. Globální proměnné včetně příznaků a stavu pro jeden kanál zabírají 40 bajtů RAM.
  2.  To platí pro stav, kdy je použit jeden kanál a velikost vyrovnávací paměti TX/RX je 128/128 bajtů. Velikost vyrovnávací paměti lze nastavit podle požadavků aplikace.

Tabulka 4. Obsazení prostředku kódu aplikace 

  • Prostředí kompilace: MDK-Arm V5.36, ARMCC V5.06 aktualizace 7 (sestavení 960)
  • Možnost optimalizace: Úroveň 2 (-O2)

Návod k použití

Tato kapitola představí environmentální přípravu kódu aplikace „Module_UART“ a také kroky kompilace a testování.

Environmentální příprava
Hardware a software požadovaný pro kód aplikace „Module_UART“ jsou uvedeny níže.
Tabulka 5. Hardware/Software Příprava prostředí 

Hardware/Software Počítat Poznámka
Startovací sada 1 Tato aplikační poznámka používá HT32F52352 Starter Kit jako example
USB kabel 1 Micro USB, připojení k PC
Kód aplikace Cesta ke stažení, file a konfigurace adresáře jsou uvedeny v části „Stažení a příprava zdrojů“. Cesta: „\\application\Module_UART\UART_Module_Example ”
Tera Termín Viz část „Terminálový software“.
Keil IDE Keil uVision V5.xx

Nejprve použijte HT32F52352 Starter Kit v kombinaci s funkcí virtuálního COM portu (VCP) e-Link32 Lite pro představení aplikace UART. To vyžaduje provedení následující ekologické přípravy:

  1. Na desce jsou dvě USB rozhraní. Pomocí kabelu USB připojte počítač a rozhraní eLink32 Lite na desce, jak je znázorněno na obrázku 16-(a).
  2. Protože kód aplikace musí používat funkci virtuálního COM portu (VCP) e-Link32 Lite, ujistěte se, že PAx*2 a DAP_Tx UART Jumper-J2*1 byly zkratovány pomocí propojky. Umístění J2 je označeno na obrázku 16-(b).

Poznámka

  1. J2 na Starter Kit má dvě možnosti, PAx a DAP_Tx zkratované nebo PAx a RS232_Tx zkratované. Podrobné informace o funkcích nastavení najdete v uživatelské příručce Starter Kit.
  2. Umístění kolíků MCU UART RX na různých startovacích sadách se liší. Tento example používá PAx k označení pinu RX.

Obrázek 16. Blokové schéma HT32 Starter Kit
Blokové schéma soupravy

Nyní použijte uživatelskou cílovou desku kombinovanou s funkcí virtuálního COM portu (VCP) e-Link32 Pro pro představení aplikace UART. To vyžaduje provedení následující ekologické přípravy:

  1. Jedna strana e-Link32 Pro je připojena k PC pomocí Mini USB kabelu a druhá strana je připojena k uživatelské cílové desce pomocí 10bitového šedého kabelu. Spojení mezi SWD rozhraními kabelu a cílové desky je realizováno pomocí Dupont linek, jak je znázorněno na obrázku 17-(a).
  2. Sériové komunikační piny e-Link32 Pro jsou Pin#7 VCOM_RXD a Pin#8- VCOM_TXD. Ty by měly být připojeny ke kolíkům TX a RX uživatelské cílové desky, jak je znázorněno na obrázku 17-(b).
    Obrázek 17. Blokové schéma e-Link32 Pro + uživatelská cílová deska
    Uživatelská cílová deska

Kompilace a test
Tato sekce bude mít „application\Module_UART\UART_Module_Example“ jako example představit procesy kompilace a testování. Předtím se ujistěte, že byly provedeny všechny přípravy popsané v předchozí části a že byl stažen software terminálu Tera Term.

Podrobné provozní kroky jsou shrnuty níže.
Krok 1. Test zapnutí

Nastavte hardwarové prostředí podle popisu v předchozí části. Po zapnutí se rozsvítí kontrolka napájení D9 v levé dolní části Starter Kit. Po dokončení výčtu USB se rozsvítí LED D1 USB na e-Link32 Lite vpravo nahoře. Pokud se D1 po dlouhé době nerozsvítí, ověřte, zda je kabel USB schopen komunikovat. Pokud ne, vyjměte jej a znovu jej vložte.

Krok 2. Vytvořte projekt
Otevřete aplikaci\Module_UART\UART_Module_Example klepněte na soubor _CreateProject.bat file pro vygenerování projektu, jak je znázorněno na obrázku 18. Protože tato aplikační poznámka používá HT32F52352 Starter Kit, otevřete projekt Keil IDE „Project_52352.uvprojx“ umístěný ve složce MDK_ARMv5.

Obrázek 18. Pro vygenerování projektu spusťte _CreateProject.bat
Generovat projekt

Krok 3. Zkompilujte a naprogramujte
Po otevření projektu klikněte nejprve na „Sestavit“ (nebo použijte zkratku „F7“), poté klikněte na „Stáhnout“ (nebo použijte zkratku „F8“). Poté se výsledky sestavení a stahování zobrazí v okně Výstup sestavení. Viz obrázek 19.

Obrázek 19. Výsledky sestavení a stažení
Vytvářejte a stahujte výsledky

Krok 4. Otevřete software Tera Term a nakonfigurujte sériový port
Otevřete software Tera Term a COM port. Věnujte pozornost tomu, zda je číslo portu COM vygenerované sadou Starter Kit správné či nikoli. Poté klikněte na „Setup >> Serial Port“ pro vstup do konfiguračního rozhraní. Konfigurace rozhraní UART kódu aplikace „Module_UART“ je popsána v části „Terminálový software“. Výsledek nastavení je znázorněn na obrázku 20.

Obrázek 20. Výsledek nastavení sériového portu Tera Term
Výsledek nastavení
Krok 5. Resetujte systém a otestujte
Stiskněte tlačítko SK reset – B1 Reset. Poté následuje „ABCThis is test!“ zpráva bude
přenášeny přes API a zobrazí se v okně Tera Term, jak je znázorněno na obrázku 21. Pokud jde o funkci příjmu, při zadávání dat do okna Tera Term se k určení délky přijímací vyrovnávací paměti použije příslušné API. Když data přijatá PC dosáhnou 5 bajtů, přijatých 5 bajtů dat bude odesláno postupně. Jak je znázorněno na obrázku 22, postupně zadávaná data jsou „1, 2, 3, 4, 5“, která jsou přijímána a určována prostřednictvím API. Poté se po pěti vstupech vytisknou data „1, 2, 3, 4, 5“.

Obrázek 21. Funkční test aplikačního kódu „Module_UART“ – přenos
Funkční test aplikačního kódu

Obrázek 22. Funkční test aplikačního kódu „Module_UART“ – příjem
Funkční test aplikačního kódu

Pokyny k transplantaci
Tato část představí, jak integrovat rozhraní API do projektů uživatele.
Krok 1. Přidejte soubor uart_module.c file do projektu. Klepněte pravým tlačítkem myši na složku Uživatel. Vyberte „Přidat existující Files to Group 'User'…”, pak vyberte soubor uart_module.c file a klikněte na „Přidat“, jak ukazuje Obrázek 23. Viz část „Struktura adresáře“, kde file popis cesty.

Obrázek 23. Přidejte uart_module.c File do projektu
File do projektu

Krok 2. Přidejte ring_buffer.c file do projektu. Klepněte pravým tlačítkem myši na složku Uživatel. Vyberte „Přidat existující Files to Group 'User'…”, pak vyberte ring_buffer.c file a klikněte na „Přidat“, jak je znázorněno na obrázku 24.\ Viz část „Struktura adresáře“ pro file popis cesty.
Obrázek 24. Přidejte ring_buffer.c File do projektu 
File do projektu

Krok 3. Zahrnout záhlaví API file na začátek main.c, jak je znázorněno na obrázku 25. (Ext: #include “middleware/uart_module.h”)
Obrázek 25. Zahrnout záhlaví API File na hlavní.c
Zahrnout záhlaví API File

Krok 4. Implementujte nastavení potřebná pro komunikaci UART pomocí souboru ht32_board_config.h file. Toto je podrobně popsáno v částech „Popis nastavení“ a „Úpravy nastavení a často kladené otázky“.

Úprava nastavení a časté dotazy 

Tato část představí, jak upravit nastavení UART, a vysvětlí některé běžné otázky, se kterými se během používání setkáte.

Změňte přiřazení pinů UART 

  1. S odkazem na kapitolu HT32F52352 Datasheet „Přiřazení pinů“ vyhledejte tabulku mapování alternativních funkcí, která uvádí funkce AFIO pro daný typ zařízení. Pro příslušné piny UART viz sloupec „AF6 USART/UART“, jak je znázorněno na obrázku 26.
    Obrázek 26. Tabulka mapování alternativních funkcí HT32F52352
    Alternativní tabulka mapování funkcí
  2. Tento krok povede uživatele k nalezení odpovídajících pinů UART pomocí výše uvedené tabulky. HT32F52352 example používá USART1 jako výchozí kanál. Zde jsou piny TX a RX USR1_TX a USR1_RX a jsou umístěny na PA4 a PA5. Obrázek 27 ukazuje shodu pinů a také definice pinů v „ht32_board_config.h“. Prázdná pole „Package“ v tabulce přiřazení pinů znamenají, že v tomto balíčku nejsou žádné relevantní GPIO. Chcete-li upravit piny UART, najděte cílové umístění pinů a znovu definujte piny pomocí „ht32_board_config.h“ file.
    Obrázek 27. Korespondence pinů a úprava nastavení
    Úprava nastavení

Přidejte kanál UART
Vezmeme-li HT32F52352 HTCFG_UARTM_CH1 jako example, zde je popsáno, jak přidat nový kanál UART.

Upravte soubor ht32_board_config.h file
S odkazem na kapitolu HT32F52352 Datasheet „Přiřazení pinů“ vyhledejte tabulku mapování alternativních funkcí, která uvádí funkce AFIO pro daný typ zařízení. Protože USART1 byl použit jako HTCFG_UARTM_CH0, nově přidané HTCFG_UARTM_CH1 si může vybrat USART0. Zde jsou piny TX a RX umístěny na PA2 a PA3, jak je znázorněno v horní polovině obrázku 28. Odpovídající úpravy jsou implementovány pomocí kódových řádků 120~126 v ht32_board_config.h, jak ukazuje červený tečkovaný rámeček na obrázku 28.

Obrázek 28. Přidejte kanál UART
Kanál UART

Nejčastější dotazy
Q: V kroku 5 části Kompilace a test je funkční test přenosu normální. Zde je „ABCThis is test!“ zpráva byla úspěšně zobrazena, proč však u funkce příjmu není vráceno a zobrazeno pět vstupních hodnot?
A: Zkontrolujte, zda piny MCU UART RX a DAP_Tx UART Jumper-J2 nebyly zkratovány pomocí propojky. Protože kód aplikace „Module_UART“ potřebuje používat virtuální COM port (VCP) e-Link32 Lite, nastavení zkratu by mělo být aplikováno na levé dva kolíky UART Jumper-J2, jak je znázorněno na obrázku 29.

Obrázek 29. Nastavení UART Jumper-J2
Propojka UART

Otázka: Po po provedení „Build“ (nebo zkratky „F7“) se zobrazí chybová zpráva, že verze knihovny firmwaru je starší než požadovaná verze? Viz obrázek 30.
A: Implementace kódu aplikace „Module_UART“ musí zahrnovat uart_module.c/h files, který má požadavek na určitou verzi knihovny firmwaru. Když se objeví takové chybové hlášení, znamená to, že aktuálně používaná knihovna firmwaru je starší verze. Proto je nutné stáhnout nejnovější verzi prostřednictvím odkazu uvedeného v sekci „Knihovna firmwaru“.

Obrázek 30. Chybová zpráva verze knihovny firmwaru
Chybová zpráva verze

Závěr

Tento dokument poskytuje základní úvod, který uživatelům pomůže lépe porozumět aplikačnímu kódu „Module_UART“ a komunikačnímu protokolu UART. Následovalo stažení a příprava zdroje. Kapitola Popis funkce představila file adresářová struktura, architektura API, popis API a použití API napřamples. Kapitola Návod k použití demonstrovala environmentální přípravu, sestavení a testování kódu aplikace „Module_UART“. Poskytuje také pokyny pro nastavení transplantace a modifikace kódu a také vysvětlení některých běžných problémů, se kterými se můžete setkat. To vše dohromady umožní uživatelům rychle pochopit, jak používat API, a následně zkrátit čas potřebný k zahájení.

Referenční materiál

Další informace naleznete v dokumentu Holtek webstránky: www.holtek.com

Verze a informace o úpravách

Datum Autor Uvolnění Informace o úpravě
2022.04.30 蔡期育 (Chi-Yu Tsai) V1.00 První verze

Zřeknutí se odpovědnosti

Všechny informace, ochranné známky, loga, grafika, videa, zvukové klipy, odkazy a další položky, které se zde objevují webstránky („Informace“) jsou pouze orientační a mohou se kdykoli změnit bez předchozího upozornění a podle uvážení společnosti Holtek Semiconductor Inc. a jejích spřízněných společností (dále jen „Holtek“, „společnost“, „nás“, „ my" nebo "naše"). Zatímco Holtek se snaží zajistit přesnost těchto informací webSpolečnost Holtek neposkytuje žádnou výslovnou ani předpokládanou záruku na přesnost informací. Holtek nenese žádnou odpovědnost za jakoukoli nesprávnost nebo únik.
Holtek nenese odpovědnost za žádné škody (včetně, ale nejen, počítačových virů, systémových problémů nebo ztráty dat), ať už vzniknou při používání nebo v souvislosti s používáním tohoto webstránky jakékoli strany. V této oblasti mohou být odkazy, které vám umožní navštívit webstránky jiných společností.
Tyto webstránky nejsou kontrolovány společností Holtek. Holtek nenese žádnou odpovědnost a žádnou záruku za jakékoli informace zobrazené na takových stránkách. Hypertextové odkazy na jiné webstránky jsou na vlastní nebezpečí.

Omezení odpovědnosti

Společnost Holtek Limited v žádném případě nenese odpovědnost vůči žádné jiné straně za jakoukoli ztrátu nebo škodu způsobenou přímo či nepřímo v souvislosti s vaším přístupem k tomuto nebo jeho používáním. webstránky, obsah na nich nebo jakékoli zboží, materiály nebo služby.

Rozhodné právo
Vyloučení odpovědnosti obsažené v webstránky se řídí a vykládají v souladu se zákony Čínské republiky. Uživatelé se podřídí nevýhradní jurisdikci soudů Čínské republiky.

Aktualizace prohlášení o vyloučení odpovědnosti
Holtek si vyhrazuje právo kdykoli aktualizovat prohlášení o vyloučení odpovědnosti s předchozím upozorněním nebo bez něj, všechny změny jsou účinné okamžitě po zveřejnění na webmísto.

Dokumenty / zdroje

Aplikační poznámka HOLTEK HT32 MCU UART [pdfUživatelská příručka
HT32 MCU, UART Application Note, HT32 MCU UART, Application Note, HT32, MCU UART Application Note, HT32 MCU UART Application Note

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *