USART je synchronní a asynchronní sériové rozhraní pro přenos dat mezi zařízeními v obou směrech (plný duplex). Používá se pro komunikaci mezi mikrokontroléry, počítači a dalšími zařízeními podporující tento standard.
Pro přenos se používají rámce, které mohou mít 5 až 9 bitů a jsou od sebe odděleny jedním start bitem a jedním nebo dvěma stop bity (obr. 1). Každý rámec může obsahovat ještě paritní bit pro kontrolu rámce. Dále je možné nastavit rychlost přenosu dat od 1 200 bps až do 250 kbps.

Některé vlastnosti USART u mikrokontroléru ATmega32
- Plný duplex (může současně přijímat i vysílat).
- Synchronní nebo asynchronní režim.
- Možnost nastavení přenosové rychlosti v rozsahu 1 200 bps až 250 kbps.
- Podpora rámců délky 5 až 9 datových bitů a 1 až 2 stop bity.
- Generátor sudé/liché parity pro vysílač a hardwarové testování parity pro přijímač.
- Detekce ztráty znaku (OverRun).
- Detekce chyby rámce (Frame Error).
- Obsahuje digitální dolnofrekvenční propust pro detekci falešného start bitu a filtraci zákmitů datových bitů.
- Tři nezávislá přerušení (odvysílání znaku, vyprázdnění vysílacího registru a příjem znaku).
- Možnost zdvojnásobit přenosovou rychlost v asynchronním režimu.
Nastavení a popis registrů USART u mikrokontroléru ATmega32
Pro používání USART se pro správnou práci používají osmibitové registry. Některé slouží pouze k nastavení, některé k odeslání znaku a některé pro příjem. Tyhle registry jsou popsány zde:
- Aby USART správně fungoval je třeba jej inicializovat a to se řeší pomocí registrů UCSRA, UCSRB a UCSRC, kde každý z bitů těchto registrů má svoji funkci. Jednotlivé bity jsou popsány v tabulce 1.
- Pro příjem a poslání znaku se používá registr UDR.
- Registry UBRRL a UBRRH slouží pro nastavení přenosové rychlosti (hodnotu lze vypočítat podle vzorců (1.1 a 1.2) nebo najít v tabulce 2).
Vzorec na výpočet hodnoty registru UBRR pro klasický režim
BAUD = fOSC/(16*(UBRR+1)) (vzorec 1.1)
UBRR = (fOSC/(16*BAUD))-1
a pro režim dvojnásobné rychlosti
BAUD = fOSC/(8*(UBRR+1)) (vzorec 1.2)
UBRR = (fOSC/(8*BAUD))-1
kde BAUD je přenosová rychlost a fOSC je frekvence krystalu. Vzorec pro synchronní režim zde neuvádím z toho důvodu, že synchronní režim USART ve své práci nevyužívám.
Tabulka 1: Popis jednotlivých bitů registrů UCSRA, UCSRB a UCSRC.
| BIT | UCSRA | |
| 7 | RXC | příjem kompletní |
| 6 | TXC | vysílání kompletní |
| 5 | UDRE | prázdný buffer |
| 4 | FE | chyba rámce |
| 3 | DOR | přetečení bufferu |
| 2 | PE | chyba parity |
| 1 | U2X | dvojnásobná přenosová rychlost |
| 0 | MPCM | multiprocesorový komunikační režim |
| BIT | UCSRB | |
| 7 | RXCIE | povolení přerušení při příjmu |
| 6 | TXCIE | povolení přerušení při odvysílání |
| 5 | UDRIE | povolení přerušení při prázdném bufferu |
| 4 | RXEN | povolení příjmu |
| 3 | TXEN | povolení vysílání |
| 2 | UCSZ2 | určuje počet bitů (viz. tabulka 4) |
| 1 | RXB8 | 9. přijatý bit |
| 0 | TXB8 | 9. odvysílaný bit |
| BIT | UCSRC | |
| 7 | URSEL | určuje přístup k registrům UBRRH a UCSRC |
| 6 | UMSEL | výběr mezi synchronním a asynchronním režimem |
| 5 | UPM1 | parita (viz. tabulka 3) |
| 4 | UPM0 | parita (viz. tabulka 3) |
| 3 | USBS | počet stop bitů |
| 2 | UCSZ1 | určuje počet bitů (viz. tabulka 4) |
| 1 | UCSZ0 | určuje počet bitů (viz. tabulka 4) |
| 0 | UCPOL | polarita dat synchronního režimu |
Tabulka 2: Příklady nastavení registrů UBRRL a UBRRH při frekvenci krystalu 16 MHz
| Baud Rate (bps) | UBRR | |
| U2X = 0 | U2X = 1 | |
| 2400 | 416 |
832 |
| 4800 | 207 | 416 |
| 9600 | 103 | 207 |
| 14 400 | 68 | 138 |
| 19 200 | 51 | 103 |
| 28 800 | 34 | 68 |
| 38 400 | 25 | 51 |
| 57 600 | 16 | 34 |
| 76 800 | 12 | 25 |
| 115 200 | 8 | 16 |
| 230 400 | 3 | 8 |
| 250 000 | 3 | 7 |
Tabulka 3: Nastavení parity
| UPM1 | UPM0 | Režim |
| 0 | 0 | deaktivováno |
| 0 | 1 | vyhrazeno |
| 1 | 0 | sudá parita |
| 1 | 1 | lichá parita |
Tabulka 4: Nastavení počtu bitů rámce
| UCSZ2 | UCSZ1 | UCSZ0 | Počet bitů |
| 0 | 0 | 0 | 5 |
| 0 | 0 | 1 | 6 |
| 0 | 1 | 0 | 7 |
| 0 | 1 | 1 | 8 |
| 1 | 0 | 0 | vyhrazeno |
| 1 | 0 | 1 | vyhrazeno |
| 1 | 1 | 0 | vyhrazeno |
| 1 | 1 | 1 | 9 |
Připravuje se:
- Knihovna I2C ke stažení pro ATMEL AVR
- Knihovna I2C ke stažení pro STM32F4 Discovery













