Obvody rozhraní UART (RS232)

Obvody  rozhraní  USART (RS232)

Základní technický popis

Standard definuje asynchronní sériovou komunikaci pro přenos dat. Pořadí přenosu datových bitů je od nejméně významného bitu (LSB) po bit nejvýznamnější (MSB). Počet datových bitů je volitelný, obvykle se používá 8 bitů, lze se také setkat se 7 nebo 9 bity. Logický stav „0“/„1“ přenášených dat je reprezentován pomocí dvou možných úrovní napětí, které jsou bipolární a dle zařízení mohou nabývat hodnot ±5 V, ±10 V, ±12 V nebo ±15 V. Nejčastěji se používá varianta při které logické hodnotě 1 odpovídá napětí −12 V a logické hodnotě 0 pak +12 V. Základní tři vodiče rozhraní (příjem RxD, vysílání TxD a společná zem GND) jsou doplněny ještě dalšími vodiči sloužícími k řízení přenosu (vstupy DCD, DSR, CTS, RI, výstupy DTR, RTS). Ty mohou a nemusí být používány (zapojeny), nebo mohou být použity pro napájení elektronických obvodů v zařízení, jako je například počítačová myš. Výstupní elektronika je vybavena ochranou proti zkratu, kdy po překročení proudu 20 mA proud již dále neroste.


Asynchronní komunikace

I když komunikující zařízení znají rychlost, jakou se data přenášejí, musí přijímač začít přijímat ve správný okamžik, tedy musí proběhnout synchronizace. V případě synchronní komunikace souběžně s datovým vodičem existuje i synchronizační vodič, na kterém vysílač oznamuje přijímači „teď jsem poslal data“, viz LPT a signál STROBE. Naopak u asynchronní komunikace se synchronizační vodič nepoužívá, pouze vysílač pošle nějaká definovaná data po datovém vodiči, po jejichž přijetí se přijímač zasynchronizuje. V případě RS232 každé sekvenci datových bitů předchází jeden start bit, kterým se logická hodnota na lince přepne (původně v klidovém stavu) do opačného stavu. Po datových bitech následuje paritní bit a za ním jeden nebo více stop bitů, během kterých je linka opět v klidovém stavu. Je tak možné pro komunikaci použít méně vodičů na úkor určitého snížení rychlosti způsobeného synchronizací. K podobné synchronizaci dochází i u Ethernetu, kde na začátku každého rámce vyšle vysílač několik bajtů, ve kterých se střídají bity 0 a 1.

 

Obr. 1: Průběh signálu při přenosu znaku „K“ (ASCII kód 75, binárně 01001011) bez parity a s jedním stopbitem

 

Popis obvodu USART mikrořadiče AVR

Obvod USART mikrořadiů AVR používá jiné napěťové úrovně než výše popsané rozhrnní RS232  U mikrořadičů AVR se pro obvod USART používají napěťové úrovně stejné jako u logiky TTL. Proto se musí zařadit mezi rozhranní RS232 a obvod USART mikrořadiče  vhodný převodník napěťových úrovní ( např. s IO MAX232).

Základní vlastnosti obvodu USART (Univerzální synchronní a asynchronní příjímač a vysílač):

  • Možnost výběru mezi synchronním a asynchronním režimem;
  • Plně duplxní funkce činnosti, sériová sběrnice můýe současně příjímat i vysílat;
  • Variabilní generátor pro stanovení přenosové rychlosti, tento má velmi jemné nastavení;
  • Podpora různé šířky přenášených datových bitů, lze vybrat 5, 6, 7, 8, a 9 bitový datový přenos;
  • Lze konfigurovat v přenosovém protokolu nastavení jednoho nebo dvou stop bitů;
  • Obsahuje obvody pro zjišťování přenosových chyb, když vysílač i přijímač je vybaven obvody pro kontrolu parity;
  • Obvod přijímače  obsahuje obvod pro detekci nekorektního startbitu a obvody pro filtraci zákmitů datových bitů;
  • Obvod USART disponuje třemi nezávislými zdroji přerušení, jsou to přerušení při ukončení odvysílání znaku, vyprázdnění vysílacího registru a ukončení příjmu znaku;
  • Obvod USART lze použít pro multiprocesorovou komunikaci;
  • V asynchronním režimu lze přenosová rychlost sériového rozhranní zdvojnásobit.

 

Dále si popíšeme činnost obvodu USART podle blokového funkčního zapojení.

 

Obr. 2: Obvodové schéma obvodu rozhranní USART mikrořadiče AVR

 

Popis funkce dle obrázku vnitřního zapojení obvodu  USART:

Obvod USART může pracovat jak v režimu asynchronním, tak i v synchronním. Pro synchronní režim je vývod pouzdra řadiče XCK požíván pro přenos hodinových synchronizačních impulzů na sběrnici. Obvod USART je kompletně řízený pomocí tří I/O registrů mikrořadiče UCSRA, UCSRB a UCSRC. Přenosová rychlost sériového rozhranní se nastavuje v registrovém páru UBRRL a UBRRH. Základem obvodu USART jsou dva samostatné posuvné registry, když ve vysílači posuvný registr převádí pararelní data z registru UDR(transmit) na sériový přenos a současně nezávisle v přijímači  je sériový datový přenos pusuvným registrem převáděn na data pararelní, která jsou zapisována do registru UDR(Receive). Přepínání mezi synchronním a asynchronním režimem je provedeno dvěma samostanými multiplexery. Dále jsou v obvodě obsaženy další kombinační a sekvenční obvody, které vkládají do datového přenosu paritní bity a stop bity, které jsou součástí komunikačního protokolu na sběrnici.

 

Popis konfiguračních a stavových registrů USART mikrořadičů AVR Atmega 16/32:

 

Tab. 1: Význam bitů stavového registru A - UCSRA

Popiis bitů registru UCSRA:

  • RXC - tento bit se nastaví na jedničku při dokončení příjmu znaku ze sběrnice a jeho zápisu do registru UDRR;
  • TXC - tento bit je nastavený na jedničku, pokud byl dokončen přenos znaku na sběrnici z registru UDRT;
  • UDRE - tento bit je nastavený na jedničku, když UART je připraven pro vložení nového znaku pro přenos;
  • FE - tento bit se nastaví na jedničku při detekci chyby komunikačního protokolu;
  • DOR - tento bit se nastaví při ztátě dat, když dojdek přepisu nevyprázdněného datového registru posuvným registrem přijímače;
  • PE - tento bit se nastaví na jedničku, pokud dojde při kontrole přenosu parity;
  • U2X - tento bit nastavením jedničky umožňuje dvojnásobnou přenosovou rychlost;
  • MPCM - tento bit nastavením jedničky umožňuje multiprocesorovou komunikaci.

 

Tab. 2: Význam bitů stavového registru  B - UCSRB

Popis bitů registru B-UCSRB:

  • RXCIE - nastavením tohoto bitu na jedničku povolíme přerušení při příjmu znaku ze zběrnice;
  • TXCIE - nastavením tohoto bitu na jedničku povolíme přerušení při dokončení odvysílání znaku na sběrnici;
  • UDRIE - nastavením tohoto bitu na jedničku povolíme přerušení při vypráznění UDR;
  • RXEN - nastavením na jedničku povolíme přijímač USART;
  • TXEN - nastavením na jedničku povolíme vysílač USART;
  • UCSZ2 - společně s bity UCSZ0 a UCSZ1 z registru C-UCSRC nastavujeme počet sériově přenášených datových  bitů;
  • RXB8 - devátý bit přijmutého znaku;
  • TXB8 - devátý bit vysílaného znaku.

 

Tab. 3: Význam bitů stavového registru C- UCSRC

Popis bitů stavového registru C-UCSRC:

  • URSEL - nastavením logické jedničky povolujeme změnu v registru UCSRC;
  • UMSEL - nastavením logické jedničky konfigurujeme synchronní režim;
  • UPM1 , UPM0  -  nastavení generátoru parity podle tabulky viiz. katalogový list;
  • USBS - nastení stopbitu přenosu, 0 = 1 stopbit, 1 = 2 stop bity;
  • UCSAZ1,UCSZ0 -  nastavení počtu sériově přenášených bitů, viz. katalogový list;
  • UCPOL - nastavení polarity hodinových impulzů pro synchronní přenos na výstupu XCK mikrořadiče.

 

Tab. 4: Význam bitů registrů UBRRL a UBRRH pro nastavení přenosové rychlosti

Popis bitů registrů UBRRl a UBRRH:

  • URSEL - nastavením logické nuly povolujeme změnu v registru UBRRH;
  • Bity 0 až 11 tvoří binární číslo pro nastavení děličky kmitočtu.

Výpočet  obsahu registru UBRR pro přenosovou rychlost v Baudech:
 

f osc  - kmitočet hodinového oscilátoru

BAUD  - přenosová rychlost zadaná v Baudech

Poznámka:  Vypočítanou hodnotu UBRR je nutné převést do binární soustavy a rozepsat do registrů UBRRH a UBRRL.

Zdroje
  • HRBÁČEK, Jiří. Komunikace mikrokontroléru s okolím. 1. vyd. Praha: BEN - technická literatura, 1999, 159 s. ISBN 80-86056-42-21.
  • MATOUŠEK, David. Práce s mikrokontroléry ATMEL AVR ATmega16. 1. vyd. Praha: BEN - technická literatura, 2006, 319 s. μC. ISBN 80-730-0174-8.
  • VÁŇA, Vladimír. Mikrokontroléry ATMEL AVR: programování v jazyce C : popis a práce ve vývojovém prostředí CodeVisionAVR C. 1. vyd. Praha: BEN - technická literatura, 2003, 215 s. ISBN 80-730-0102-0.
  • [online]. [cit. 2015-01-30]. Dostupné z: http://www.atmel.com/images/doc2503.pdf

Obrázky a tabulky

  • Obr. 1: [online]. [cit. 2015-01-30]. Dostupné z: http://cs.wikipedia.org/wiki/RS-232#mediaviewer/File:Rs232_oscilloscope_trace.jpg
  • Obr. 2: [online]. [cit. 2015-01-30]. Dostupné z: http://www.atmel.com/images/doc2503.pdf
  • Tab. 1, 2, 3, 4: [online]. [cit. 2015-01-30]. Dostupné z: http://www.atmel.com/images/doc2503.pdf
 
Zapamatuj si
  • Mezi rozhraní RS232 a UART mikrořadiče je nutné zapojit převodník logických napěťových úrovní, naříklad s integrovaným obvodem MAX232.
  • Pin XCK mikrořadiče se používá pro synchronní komunikaci.
Příklad

Konfigurace obvodu USART

USART_Init:

; Nastavní přenosové rychlosti
out UBRgdRH, r17
out UBRRL, r16
; Povolení přijímače a vysílače v konfiguračním registru, nastavení RXEN aTXEN
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB,r16
; Nastavení přenosového formátu: 8 data, 2 stop bit
ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC,r16
ret

Příklad

Vysílání dat portem USART

USART_Transmit:
; Čekací cyklus pro vyprázdnění vysílací vyrovnávací paměti
sbis UCSRA,UDRE
rjmp USART_Transmit
; Uložení dat z R16 vysílacího registru a jejich odeslání portem USART
out UDR,r16
ret

 

Příklad

Příjem dat portem UART

USART_Receive:
;Čekací cyklus pro úplný příjem dat rozhraním USART
sbis UCSRA, RXC
rjmp USART_Receive
; Přepis přijmutých dat do R16
in R16, UDR
ret