USART

Zapojení USARTu na PIC16F877

Synchronní / asynchronní sériové rozhraní USART (Universal Synchronous / Asynchronous Receiver and Transmitter). Jde o zařízení pro sériovou komunikaci, které lze nastavit buď pro asynchronní režim (SCI – např. pro linky RS232 resp. RS485), anebo pro synchronní režim (běžně označovaný jako SPI). Rozšířenou implementací byl např. integrovaný obvod USART 8251 firmy Intel, jako jeden ze sériových I/O modulů je USART implementován v některých mikrokontrolérech řady PICmicro® MCU a většině MCU firmy Atmel.

Asynchronní přenos

Asynchronní 8bitový přenos

USART vysílá data na pinu označovaném obvykle jako TX (transmit), přijímá na pinu RX (receive). Klidová úroveň signálu je log. 1 (pokud neprobíhá vysílání ani příjem). Vysílání je zahájeno změnou hodnoty signálu na log. 0 po dobu jednoho bitu (tzv. start-bit). Následovně se posílá nejnižší datový bit, poslední nejvýznamnější datový bit je následován stop bitem, který má opět úroveň log. 1. Po odvysílání stop-bitu může začít přenos dalšího bajtu. Na obrázku je to vyznačeno tečkovaně.

Blok USART v mikrokontrolérech PICmicro®

Nastavení pinů pro vstup a výstup v mikropočítači se provádí prostřednictvím nastavení v registrech SPEN (bit RCSTA<7>) a TRISC<bity 7:6>.

Módy USARTu

USART může být nakonfigurován v následujících módech:

  • Asynchronní (full duplex) – V tomto módu je nakonfigurován jako plně duplexní asynchronní systém, který může komunikovat s periferiemi jako jsou např. CRT terminály, osobní počítače (PC) atd..
  • Synchronní (half duplex) – Druhá možnost je nakonfigurovat USART jako „poloduplexní“ synchronní systém, který může komunikovat např. s perifériemi jako jsou A/D a D/A převodníky, sériová EEPROM atd. Tento synchronní mód můžeme nastavit jako – Master nebo Slave.

Synchronní mód používá hodinovou a datovou linku, ale v asynchronním není tento hodinový signál použit. Jeden pin je použit pro vysílání a jeden pro příjem. Obě operace mohou probíhat nezávisle na sobě. A mohou dokonce probíhat zároveň – proto mluvíme o asynchronním módu jako o plně duplexním. Nejčastější použití USARTu v asynchronním módu je pro komunikaci s PC prostřednictvím sériového portu a protokolu RS-232.
USART můžeme nastavit pro vysílání (transmit), resp. příjem (receive) v osmi nebo devítibitovém režimu v registru TXSTA v bitu TX9, resp. v registru RCSTA v bitu RX9.

Vyslání bajtu

Blokový diagram pro odeslání 8 bitů

Jakmile jsou data zapsána do registru TXREG, všechny bity jsou přepsány do registru pro vysílání (Transmit Shift Register). A odtud jsou dále přeposlány na TX pin, přičemž je jim přiřazen na začátek start a na konec stop bit. Použití speciálního registru pro vysílání umožňuje načítání nových dat do registru TXREG už během vysílání dat předchozích. To maximálně zefektivňuje komunikaci.

Příjem bajtu

Blokový diagram pro příjem 8 bitů

Po detekci start bitu na pinu RX, se další data bit po bitu přesunou do registru pro příjem (receive shift register). Po přesunutí posledního bitu se zkontroluje stop bit a data se pošlou do bufferu, který je předá registru RXREG, pokud je prázdný. Tento buffer a registr RXREG jsou dva elementy FIFO. Separátní použití registru pro příjem a FIFO bufferu poskytuje softwaru bežícímu na PICmicro® MCU čas k přečtení doručených dat bez rizika přepsání těchto dat dalšími doručenými. Je tedy možné obdržet první dva bity a dále přijímat třetí bite ještě předtím, než jsou data „vytažena“ z registru RXREG.

Registry používané pro nastavení USARTu

  • SPBRG registr slouží k nastavení baudové rychlosti přenosu.
  • TXSTA a RCSTA registry se používají ke kontrole vysílání a příjmu.
  • TXREG a RCREG registry jsou pro zápis vysílaných a přijímaných dat.
  • PIR1 a PIE1 registry obsahují bit pro nastavení příznaku přerušení a aktivační bit pro povolení generování interruptu USARTu. Příznak přerušení lze využít také pro určení, zda je linka volná pro příjem / vysílání dat.

Převodníky úrovní

Vstupy a výstupy obvodů USART obvykle používají běžné logické úrovně (typicky 5V nebo 3,3V TTL ). Pro přizpůsobení na standardní úrovně např. pro linku RS232 nebo RS485 existují specializované obvody, např. MAX232 firmy Maxim, nebo TC232 firmy Microchip.

Externí odkazy