Sériový kanál



Sériový kanál ,který mikroprocesor 8051 obsahuje, má v současné době velký význam. V době uvedení 8051 na trh tomu možná tak nebylo, ale teď je situace jiná - pomocí sériového kanálu lze mikroprocesor 8051 velmi jednoduše spojit s osobním počítačem PC. A toho lze velmi efektivně využít k nejrůznějším účelům. Kromě spojení s PC lze dnes využít sériový kanál v mnoha dalších aplikacích pro komunikaci se zařízeními komunikujících sériovou linkou.

Sériový kanál je u 8051 plně duplexní (dokáže tedy současně data vysílat i přijímat), umožňuje komunikovat ve standardním 8- a 9-bitovém asynchronním režimu nebo 8-bitovém synchronním režimu.

Komunikační rozhraní tvoří 3 vodiče - RxD,TxD a zem.

Přijímací část sériového kanálu je vybavena vyrovnávacím registrem (bufferem), do kterého je uložena právě přijatá hodnota, čímž je umožněn okamžitý příjem další hodnoty. Přijatá hodnota však musí být z vyrovnávacího registru převzata dříve, než je dokončen příjem následující hodnoty, který by způsobil přepsání původní hodnoty. Mikroprocesor není vybaven příznaky, které indikují ztrátu přijaté hodnoty (chyba vzniklá přeplněním vyrovnávacího registru), chybu rámce a parity nebo indikaci přerušení, které jsou obvyklé u specializovaných obvodů.

Sériový kanál je tvořen dvěma registry, a to registrem SBUF a SCON.

SBUF - Registr sériového kanálu (Serial Data Buffer) Představuje vysílací i přijímací registr (není tedy vyhražen jeden registr pro vysílání a druhý pro příjem, ale existuje pouze jeden společný pro příjem i vysílání). Zápisem hodnoty do SBUF se naplňuje vysílací registr, čtením z SBUF se přečte hodnota z vyrovnávacího registru, do kterého byla přepsána z přijímacího registru po přijetí celého bytu.

Sériový kanál může pracovat ve čtyřech různých módech, které lze zvolit nastavením příslušných bitů v registru SCON a nejvyššího bitu v registru PCON.


SCON -Registr módu a řízení sériového kanálu (Serial Control)



Popis jednotlivých bitů registru SCON:

SM0, SM1 -režim sériového kanálu

SM0
0
0
1
1
SM1
0
1
0
1
Nastavený mód
mód 0
mód 1
mód 2
mód 3
Režim
8bitový synchronní přenos
8bitový asynchronní přenos
9bitový asynchronní přenos
9bitový asynchronní přenos
Přenosová rychlost
OSC/12
čítač/časovač 1
OSC/64 neboOSC/32
čítač/časovač 1

SM2 - povolení víceprocesorové komunikace

REN - povolení příjmu

TB8 - vysílaný 9.bit (v režimech 2,3)

RB8 - přijímaný 9.bit (v režimech 2,3)

TI - indikace vyprázdnění vysílacího registru
v režimu 0 je aktivován na konci vysílání 8.bitu
v režimech 1,2,3 je aktivován na začátku STOP-bitu
tento bit se nastaví hardwarově, nuluje se programově

RI - indikace naplnění přijímacího registru
v režimu 0 je aktivován po přijetí 8.bitu
v režimech 1,2,3 je aktivován uprostřed STOP-bitu
tento bit se nastaví hardwarově, nuluje se programově

Mód 0 -8.bitový synchronní přenos s pevnou přenosovou rychlostí - data se vysílají nebo přijímají vstupem RxD (P3.0) synchronně s hodinovým signálem, vysílaným na výstupu TxD (P3.1). Přenášená 8-bitová informace se vysílá počínaje bitem s nejnižší váhou. Přenosová rychlost (v bitech za sekundu) je pevná a rovna 1/12 kmitočtu oscilátoru. Maximální přenosová rychlost je tedy 1Mbit/s při 12MHz krystalu. Protože je výstup TxD využit pro vysílání synchronizačního signálu, nelze v tomto módu uskutečnit plně duplexní přenos. Někdy bývá tento mód označován jako posuvný registr, protože takto tento mód vlastně pracuje.



Sériový kanál v módu 0 - časové průběhy




Mód 1 - 8.bitový asynchronní přenos s programovatelnou přenosovou rychlostí - data se vysílají výstupem TxD, přijímají se vstupem RxD - celkem se vysílá nebo přijímá 10 bitů, z toho je první bit vždy nulový - ten představuje start bit. Po něm následuje 8 datových bitů, přičemž první bit je bit s nejnižší váhou. Poslední (desátý) přenášený bit je vždy jedničkový - ten představuje stop bit. Při příjmu se stop bit ukládá do bitu RB8 v registru SCON. Přenosová rychlost je v tomto módu programovatelná a je určena četností (periodou) přetečení čítače/časovače 1 a hodnotou bitu SMOD v registru PCON.




Sériový kanál v módu 1 - časové průběhy




Mód 2 - 9.bitový asynchronní přenos s volitelnou přenosovou rychlostí - přijímá se (na vstupu RxD) nebo vysílá se (na výstupu TxD) celkem 11 bitů, přičemž první bit je START bit (vždy log.0), následuje 8 datových bitů , 9.datový bit a posledním přenášeným bitem je STOP bit (vždy log.1). Při vysílání je do 9.datového bitu uložena hodnota bitu TB8, při příjímání se získaný 9.datový bit ukládá do bitu RB8 přičemž stop bit se ignoruje. Oba bity RB8 a TB8 se nacházejí v registru SCON. Devátý datový bit může být při vysílání využit jako další, normální datový bit nebo se může použít k přenosu paritního bitu příslušejícímu předchozím 8 bitům. Hodnotu paritního bitu získáme jednoduše tak, že vysílaný byte před samotným přenosem uložíme do akumulátoru, čímž se v registru PSW aktualizuje hodnota paritního bitu P. Obsah bitu P, který je přímo adresovatelný, pak před začátkem vysílání uložíme do bitu TB8. Přenosovou rychlost v tomto módu můžeme volit nastavením bitu SMOD v registru PCON. Je-li SMOD=1, pak je přenosová rychlost rovna 1/32 frekvence oscilátoru; je-li SMOD=0, pak je přenosová rychlost rovna 1/64 frekvence oscilátoru.

Sériový kanál v módu 2 a 3 - časové průběhy




Mód 3 - 9.bitový asynchronní přenos s programovatelnou přenosovou rychlostí - příjem i vysílání dat probíhá stejně jako v módu 2 s tím rozdílem, že v tomto módu je přenosová rychlost určena četností (periodou) přetečení čítače/časovače 1 a hodnotou bitu SMOD v registru PCON.
Vztahy pro výpočet přenosové rychlosti v módu 3 jsou shodné se vztahy pro mód 1.