UART: Hardwarový komunikační protokol

11.04.2022 Embedded systémy #uart #protokol #mcu #embedded

UART neboli univerzální asynchronní přijímač-vysílač je jedním z nejpoužívanějších komunikačních protokolů mezi zařízeními. Tento článek ukazuje, jak používat UART jako hardwarový komunikační protokol podle standardního postupu.


Při správné konfiguraci může UART pracovat s mnoha různými typy sériových protokolů, které zahrnují přenos a příjem sériových dat. Při sériové komunikaci jsou data přenášena bit po bitu pomocí jediné linky nebo drátu. V obousměrné komunikaci využíváme pro úspěšný sériový přenos dat dva vodiče. V závislosti na požadavcích aplikace a systému potřebuje sériová komunikace méně obvodů a vodičů, což snižuje náklady na implementaci.

Zde jsou probrány základní principy při používání UART se zaměřením na přenos paketů, standardní rámcový protokol a přizpůsobené rámcové protokoly, které jsou funkcemi s přidanou hodnotou pro zajištění souladu se zabezpečením při implementaci, zejména během vývoje kódu. Během vývoje produktu je cílem tohoto dokumentu také sdílet některé základní kroky při kontrole datového listu pro skutečné použití.

Komunikační protokol hraje velkou roli při organizaci komunikace mezi zařízeními. Je navržen různými způsoby na základě systémových požadavků a tyto protokoly mají specifické pravidlo dohodnuté mezi zařízeními pro dosažení úspěšné komunikace.

Vestavěné systémy, mikrokontroléry a počítače většinou používají UART jako formu hardwarového komunikačního protokolu zařízení k zařízení. Mezi dostupnými komunikačními protokoly používá UART pouze dva vodiče pro svůj vysílací a přijímací konec.

Přestože se jedná o široce používanou metodu hardwarového komunikačního protokolu, není neustále plně optimalizován. Správná implementace rámcového protokolu je běžně ignorována při použití modulu UART uvnitř mikrokontroléru.

Podle definice je UART hardwarový komunikační protokol, který používá asynchronní sériovou komunikaci s konfigurovatelnou rychlostí. Asynchronní znamená, že neexistuje žádný hodinový signál pro synchronizaci výstupních bitů z vysílacího zařízení jdoucího na přijímací konec.

Rozhraní


Obr. 1. Dva UARTy spolu přímo komunikují.

Dva signály každého zařízení UART jsou pojmenovány:

  • Vysílač (Tx)
  • Přijímač (Rx)

Hlavním účelem vysílací a přijímací linky pro každé zařízení je vysílat a přijímat sériová data určená pro sériovou komunikaci.

Obr. 2. UART s datovou sběrnicí.

Vysílací UART je připojen k řídící datové sběrnici, která odesílá data v paralelní podobě. Z toho budou nyní data přenášena po přenosové lince (drátě) sériově, bit po bitu, do přijímacího UART. To zase převede sériová data na paralelní pro přijímací zařízení.

Linky UART slouží jako komunikační médium pro přenos a příjem dat do jiných. Vezměte na vědomí, že zařízení UART má vysílací a přijímací pin vyhrazený pro vysílání nebo příjem.

Pro UART a většinu sériových komunikací musí být přenosová rychlost nastavena stejně na vysílacím i přijímacím zařízení. Přenosová rychlost je rychlost, kterou jsou informace přenášeny do komunikačního kanálu. V kontextu sériového portu bude nastavená přenosová rychlost sloužit jako maximální počet přenesených bitů za sekundu.

Tabulka 1 shrnuje, co musíme vědět o UART.

Dráty 2
Rychlost 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1000000, 1500000
Způsoby přenosu Asynchronní
Maximální počet mistrů 1
Maximální počet Slave 1

Rozhraní UART nepoužívá k synchronizaci zařízení vysílače a přijímače hodinový signál; přenáší data asynchronně. Místo hodinového signálu generuje vysílač bitový tok na základě svého hodinového signálu, zatímco přijímač používá svůj interní hodinový signál k vzorkování příchozích dat. Bod synchronizace je řízen stejnou přenosovou rychlostí na obou zařízeních. Pokud tak neučiníte, může to ovlivnit načasování odesílání a přijímání dat, což může způsobit nesrovnalosti při manipulaci s daty. Přípustný rozdíl v přenosové rychlosti je až 10 %, než se časování bitů příliš vzdálí.

Přenos dat

V UART je způsob přenosu ve formě paketu. Část, která spojuje vysílač a přijímač, zahrnuje vytváření sériových paketů a řídí tyto fyzické hardwarové linky. Paket se skládá ze startovacího bitu, datového rámce, paritního bitu a stop bitů.

Obr. 3. Paket UART.

Start Bit

Linka pro přenos dat UART je normálně udržována na úrovni vysokého napětí, když nepřenáší data. Chcete-li zahájit přenos dat, vysílající UART přetáhne přenosovou linku z vysoké na nízkou po dobu jednoho (1) hodinového cyklu. Když přijímací UART detekuje přechod vysokého napětí na nízké napětí, začne číst bity v datovém rámci na frekvenci přenosové rychlosti.


Obr. 4. Start bit.

Datový rámec

Datový rámec obsahuje aktuální přenášená data. Může být dlouhý pět (5) bitů až osm (8) bitů, pokud je použit paritní bit. Pokud není použit žádný paritní bit, může být datový rámec dlouhý devět (9) bitů. Ve většině případů jsou data odeslána s nejméně významným bitem jako první.


Obr. 5. Datový rámec.

Parita

Parita popisuje sudost nebo lichost čísla. Paritní bit je způsob, jak přijímající UART zjistit, zda se během přenosu nějaká data změnila. Bity mohou být změněny elektromagnetickým zářením, neodpovídajícími přenosovými rychlostmi nebo přenosy dat na velké vzdálenosti.

Poté, co přijímající UART načte datový rámec, spočítá počet bitů s hodnotou 1 a zkontroluje, zda je součet sudé nebo liché číslo. Je-li paritní bit 0 (sudá parita), 1 nebo logický horní bit v datovém rámci by měl mít sudé číslo. Je-li paritní bit 1 (lichá parita), 1 bit nebo logické maxima v datovém rámci by měly součet do lichého čísla.

Když paritní bit odpovídá datům, UART ví, že přenos byl bez chyb. Ale pokud je paritní bit 0 a součet je lichý nebo paritní bit je 1 a součet je sudý, UART ví, že se bity v datovém rámci změnily.


Obr. 6. Paritní bity.

Stop Bits

Pro signalizaci konce datového paketu převede odesílající UART linku přenosu dat z nízkého napětí na vysoké napětí po dobu jednoho (1) až dvou (2) bitů.


Obr. 7. Stop bity.

Kroky přenosu UART

Za prvé: Vysílající UART přijímá data paralelně z datové sběrnice.


Obr. 8. Datová sběrnice k vysílajícímu UART.

Za druhé: Vysílající UART přidá počáteční bit, paritní bit a stop bit(y) do datového rámce.


Obr. 9. Datový rámec UART na straně Tx.

Za třetí: Celý paket je odesílán sériově počínaje počátečním bitem po stop bit z vysílajícího UART do přijímacího UART. Přijímající UART vzorkuje datovou linku předem nakonfigurovanou přenosovou rychlostí.


Obr. 10. Přenos UART.

Za čtvrté: Přijímající UART zahodí počáteční bit, paritní bit a stop bit z datového rámce.


Obr. 11. Datový rámec UART na straně Rx.

Za páté: Přijímající UART převádí sériová data zpět na paralelní a přenáší je na datovou sběrnici na přijímací straně.


Obr. 12. Příjem UART na datovou sběrnici.

Frame Protocol

Jednou z klíčových funkcí, která je v UART k dispozici, ale není plně využita, je implementace rámcového protokolu. Hlavním využitím a významem tohoto je přidaná hodnota pro zabezpečení a ochranu na každém zařízení.

Například, když dvě zařízení používají stejný rámcový protokol UART, existují tendence, že při připojení ke stejnému UART bez kontroly konfigurace bude zařízení připojeno k různým pinům, což může způsobit poruchy v systému.

Na druhou stranu, implementace tohoto zajišťuje bezpečnost, protože je potřeba analyzovat přijaté informace v souladu s protokolem návrhového rámce. Každý rámcový protokol je speciálně navržen tak, aby byl jedinečný a bezpečný.

Při navrhování rámcového protokolu mohou návrháři nastavit požadovaná záhlaví a přívěsy, včetně CRC, pro různá zařízení. Na obrázku 13 jsou dva (2) bajty nastaveny jako součást záhlaví.

Za druhé: Pod mapou paměti zkontrolujte adresu UART.

Obr. 13. Ukázkový rámcový protokol UART.

Na základě ukázky můžete nastavit záhlaví, upoutávku a CRC, které jsou jedinečné pro vaše zařízení.

Záhlaví 1 (H1 je 0xAB) a Záhlaví 2 (H2 je 0xCD)

Záhlaví je jedinečný identifikátor, který určuje, zda komunikujete se správným zařízením.

Výběr příkazu (CMD).

Příkaz bude záviset na seznamu příkazů určených k vytvoření komunikace mezi dvěma zařízeními.

Délka dat (DL) na příkaz

Délka dat bude záviset na zvoleném příkazu. Délku dat můžete maximalizovat v závislosti na zvoleném příkazu, takže se může lišit v závislosti na výběru. V takovém případě lze upravit délku dat.

Data n (různé údaje)

Data jsou užitečné zatížení, které se má přenášet ze zařízení.

Trailer 1 (T1 je 0xE1) a Trailer 2 (T2 je 0xE2)

Upoutávky jsou data, která se přidávají po ukončení přenosu. Stejně jako záhlaví je lze jednoznačně identifikovat.

Kontrola cyklické redundance (CRC vzorec)

Vzorec pro kontrolu cyklické redundance je přidaný režim detekce chyb pro detekci náhodných změn nezpracovaných dat. Hodnota CRC vysílacího zařízení se musí vždy rovnat výpočtům CRC na straně přijímače.

Je vhodné přidat zabezpečení implementací rámcových protokolů pro každé zařízení UART. Rámcový protokol vyžaduje identické konfigurace na vysílacích i přijímacích zařízeních.

Operace UART

Při použití jakéhokoli hardwarového komunikačního protokolu je nezbytnou podmínkou zkontrolovat datový list a referenční příručku hardwaru.

Zde jsou následující kroky:

Nejprve: Zkontrolujte rozhraní datového listu zařízení.


Obr. 14. Datový list mikrokontroléru.



Obr. 15. Mapa paměti mikrokontroléru.

Za třetí: Zkontrolujte konkrétní podrobnosti pro PORT UART, jako je provozní režim, délka datových bitů, paritní bit a stop bity. Ukázkové podrobnosti o portu UART v datovém listu: Port UART

Ukázkové MCU poskytují plně duplexní port UART, který je plně kompatibilní se standardními UART PC. Port UART poskytuje zjednodušené rozhraní UART k dalším periferním zařízením nebo hostitelům, podporuje plně duplexní, DMA a asynchronní přenos sériových dat. Port UART zahrnuje podporu pro pět až osm datových bitů a žádnou, sudou nebo lichou paritu. Rámec je ukončen jedním a půl nebo dvěma stop bity.

Za čtvrté: Zkontrolujte podrobnosti o provozu UART, včetně výpočtu přenosové rychlosti. Přenosová rychlost se konfiguruje pomocí následujícího vzorového vzorce. Tento vzorec se liší v závislosti na mikrokontroléru.

Ukázkové podrobnosti operací UART:

  • 5 až 8 datových bitů
  • 1, 2 nebo 1 a ½ stop bitů
  • Žádná nebo sudá nebo lichá parita
  • Programovatelná rychlost převzorkování o 4, 8, 16, 32
  • Přenosová rychlost = PCLK/((M + N/2048) × 2 OSR + 2 × DIV

kde,

OSR (převzorkovací frekvence)

UART_LCR2.OSR = 0 až 3

DIV (dělič přenosové rychlosti)

UART_DIV = 1 až 65535

M (DIVM zlomková přenosová rychlost M)

UART_FBR.DIVM = 1 až 3

N (DIVM zlomková přenosová rychlost M)

UART_FBR.DIVN = 0 až 2047

Za páté: Pokud jde o přenosovou rychlost, zkontrolujte, jaké periferní hodiny (PCLK) použít. V tomto příkladu je k dispozici 26 MHz PCLK a 16 MHz PCLK. Všimněte si, že OSR, DIV, DIVM a DIVN se liší podle zařízení.

Tabulka 2. Příklad přenosové rychlosti na základě 26 MHz PCLK

Přenosová rychlost OSR DIV DIVM DIVN
9600 3 24 3 1078
115200 3 4 1 1563

Tabulka 3. Příklad přenosové rychlosti na základě 16 MHz PCLK

Přenosová rychlost OSR DIV DIVM DIVN
9600 3 17 3 1078
115200 3 2 2 348

Za šesté: Další částí je kontrola podrobných registrů pro konfiguraci UART. Podívejte se na parametry při výpočtu přenosové rychlosti, jako jsou UART_LCR2, UART_DIV a UART_FBR. Tabulka 4 povede ke konkrétnímu registru, který je třeba pokrýt.

Tabulka 4. Popisy registrů UART

název Popis
UART_DIV Dělič přenosové rychlosti
UART_FIBR Zlomková přenosová rychlost
UART_LCR2 Ovládání druhé linie

Za sedmé: Pod každým registrem zkontrolujte podrobnosti a nahraďte hodnoty pro výpočet přenosové rychlosti, poté začněte implementovat UART.

Proč je to důležité?

Znalost komunikačního protokolu UART je výhodná při vývoji robustních produktů založených na kvalitě. Znalost toho, jak posílat data pouze pomocí dvou drátů, a také jak přenášet celý balík dat nebo užitečné zatížení, pomůže zajistit, že data budou přenášena a přijímána bez chyb. Protože UART je nejběžněji používaný hardwarový komunikační protokol, mohou tyto znalosti umožnit flexibilitu návrhu v budoucích návrzích.

Případy užití

UART můžete použít pro mnoho aplikací, například:

  • Ladění: Při vývoji je důležité včasné odhalení systémových chyb. Přidání UART může v tomto scénáři pomoci zachycením zpráv ze systému.
  • Sledování na úrovni výrobních funkcí: Protokoly jsou ve výrobě velmi důležité. Určují funkce tím, že upozorňují operátory na to, co se děje na výrobní lince.
  • Aktualizace zákazníka nebo klienta: Aktualizace softwaru jsou velmi důležité. Pro kompletní systém je důležité mít kompletní, dynamický hardware se softwarem schopným aktualizace.
  • Testování/ověření: Ověřování produktů před tím, než opustí výrobní proces, pomáhá zákazníkům dodávat produkty nejvyšší možné kvality.

Literatura

[1] PEÑA, Eric a Mary GRACE LEGASPI. UART: A Hardware Communication Protocol Understanding Universal Asynchronous Receiver/Transmitter. Analog Devices [online]. 2020, 4(54), 5 [cit. 2022-04-11]. Dostupné z: https://www.analog.com/media/en/analog-dialogue/volume-54/number-4/uart-a-hardware-communication-protocol.pdf