Sériový port RS232

Co je to RS232? Jaké používá napěťové úrovně? Jak zapojit konektor RS232? Co je to parita? Co je to handshaking? Jaký je rozdíl mezi synchronním a asynchronním přenosem? Jak dlouhé mít vedení? To vše a další informace se dozvíte v tomto článku...

Co je RS 232?

RS232 je rozhraní pro přenos informací vytvořené původně pro komunikaci dvou zařízení do vzdálenosti 20 m. Pro větší odolnost proti rušení je informace po propojovacích vodičích přenášena větším napětím než je standardních 5V. Přenos informací probíhá asynchronně, pomocí pevně nastavené přenosové rychlosti a synchronizace sestupnou hranou startovacího impulsu.

Napěťové úrovně

RS 232 používá dvě napěťové úrovně. Logickou 1 a 0. Log. 1 je někdy označována jako marking state nebo také klidový stav, Log. 0 se přezdívá space state.
Log. 1 je indikována zápornou úrovní, zatímco logická 0 je přenášena kladnou úrovní výstupních vodičů. Povolené napěťové úrovně jsou uvedeny v tabulce.

Nejběžněji se pro generování napětí používá napěťový zdvojovač z 5V a invertor. Logické úrovně jsou potom přenášeny napětím +10V pro log. 0 a –10V pro log. 1.

Úroveň Vysílač Přijímač
Logická 0 +5 V až +15 V +3 V až +25 V
Logická 1 -5 V až -15 V -3 V až -25 V
Nedefinováno    – -3 V až +3V

Problém napájení propojovaných PC

Pokud propojujete dva počítače pomocí RS 232 a každý z nich je připojen do jiné zásuvky, doporučujeme oměřit napětí mezi jednotlivými zeměmi RS232 před jejich propojením. Pokud je každý počítač připojen na jinou větev i stejné fáze, může být vlivem různých spotřebičů na každé větvi rozdílové napětí až cca 100 V. To je hodnota která jakýkoli RS 232 port spolehlivě zničí.

PARITA

Parita je nejjednodušší způsob, jak bez nároků na výpočetní výkon zabezpečit přenos dat. Ve vysílacím zařízení se sečte počet jedničkových bitů a doplní se paritním bitem tak, aby byla zachována předem dohodnutá podmínka sudého, nebo lichého počtu jedničkových bitů.

SUDÁ PARITA – Počet jedničkových bitů + paritní bit = SUDÉ ČÍSLO
LICHÁ PARITA – Počet jedničkových bitů + paritní bit = LICHÉ ČÍSLO

SPACE PARITY – Tzv. nulová parita – paritní bit je vždy v log. 0, používá se například při komunikaci s 7-bitového zařízení s 8-bitovým, kdy paritní bit nahrazuje tvrdou log. 0 poslední bit v byte, tím je zachována kompatibilita s 8-bitovým přenosem.

MARK PARITY - Paritní bit je nastaven tvrdě na log. 1, při kompenzaci 7-bitového provozu je třeba jej na přijímací straně nulovat, inak není kompatibilní s ASCII.

7-bitový / 8-bitový formát 

Na starých terminálech IBM, které se používaly pouze jako textové konzole, ušetřili návrháři jeden bit přenosu a používaly pouze 7-bitový přenos, který umožňoval 128 kombinací. Dnes se v praxi prakticky nepoužívá, ale stal se standardem.

Stop bit / bity

STOP BIT – definuje ukončení rámce. Zároveň zajišťuje určitou prodlevu pro přijímač. Právě v době příjmu STOP bitu většina zařízení zpracovává přijatý BYTE.

ZDVOJENÝ STOPBIT – Požívá se u pomalejších zařízení pro doběh zpracování přijatého znaku. Jedná se o standard na 110 Bd .

Handshaking

Potvrzení příjmu a zahájení přenosu na úrovni hardwarového nebo softwarového rozhraní.

Hardwarový handshaking:

  • Přenos od vysílače k přijímači, že vysílač má připravena platná data k odeslání.
  • Přenos od přijímače k vysílači, že přijímač je schopen data zpracovávat.

Softwarový handshaking probíhá na úrovni komunikačních protokolů (ZMODEM, KERMIT...) pomocí běžného datového kanálu si přijímač vysílači sdělí, zda je schopen data přijímat a zpracovávat data. Dos/BIOS v počítačích PC používá pro SW handshaking znaky v Ascii tabulce XON/XOF. Je-li však potřeba v toku dat znaky XON/XOF vyslat, je nutné vyslat speciální sekvenci znaků, což samozřejmě přenos dat obsahujících převážně tyto znaku značně zpomalí.

Synchronní x asynchronní přenos

SYCHRONNÍ přenos informací znamená, že na nějakém vodiči, nebo vodičích se nastaví určitá úroveň, která přenáší informaci a validita informace se potvrdí impulsem, nebo změnou úrovně synchronizačního signálu. Synchronizačním signálem se tedy informace kvantují.

Základní vlastnosti SYCHRONNÍHO přenosu:

  • Výhodné pro velké objemy dat, přenášené po více vodičích.
  • Nutno jednoznačně určit, kdo vysílá synchronizační impulsy
  • Možno použít spojitě proměnnou rychlost přenosu, například podle poměru chybovosti.
  • Nutnost synchronizačního vodiče "navíc" – v podstatě "nepřenáší žádnou informaci"
  • Na straně zařízení nepotřebuje nijak složitou elektroniku.

ASYNCHRONNÍ přenos dat přenáší data v určitých sekvencích. Data jsou přenášena přesně danou rychlostí a uvozena startovací sekvencí, na kterou se synchronizují všechna přijímací zařízení. Všechny strany obsahují vlastní přesný oscilátor, díky kterém odečítají data v přesně definovaných intervalech. Po ukončení sekvence je další příjem opět synchronizován startovní sekvencí.

Základní vlastnosti ASYNCHRONNÍHO přenosu:

  • Nevýhodné pro velké objemy dat, ale vhodné pro dlouhá vedení, na nichž by synchronizační vodič činil nezanedbatelné finanční náklady. Lze použít pro komunikaci mezi mnoha zařízeními.
  • Nutno definovat jednoznačně přenosové rychlosti, změnu rychlosti je třeba ošetřit softwarovou sekvencí, která přiměje počítač změnit hardwarově přenosovou rychlost.
  • Celkem složitá a drahá, nutno použít krystalové oscilátory.
  • Až o 20% menší přenosová rychlost užitečných dat při stejné rychlosti komunikace, vzhledem k nutnosti startovacích a paritních bitů. 

Přenosový rámec

Kompletní přenosová skupina = přenášená DATA (7/8 bitová) doplněná o START BIT, STOP BIT a PARITU.. Přenosový rámec je tedy minimální přenášená skupina dat.

Dočasné zastavení přenosu dat

Pokud je třeba upozornit zařízení na dočasné zastavení vysílání, vygeneruje vysílač nepřetržitý impuls v log. 0 po dobu 100 – 600 ms. (maximální doba linky v nepřerušené log. 0 je na nejnižší rychlosti kdy se vysílá 8 x log. 0 je 66,6 ms).

Délka vedení RS 232

Standard RS 232 uvádí jako maximální možnou délku vodičů 15 metrů, nebo délku vodiče o kapacitě 2500 pF. To znamená, že při použití kvalitních vodičů lze dodržet standard a při zachování jmenovité kapacity prodloužit vzdálenost až na cca 50 metrů.
Kabel lze také prodlužovat při snížení přenosové rychlosti, protože potom bude přenos odolnější vůči velké kapacitě vedení. Uvedené parametry počítají s přenosovou rychlostí 19200 bd.
Texas Instruments uvádí jako výsledek pokusných měření následující délky vodičů / přenocovým rychlostem. Vzhledem k "laboratorním" podmínkách tohoto měření je třeba brát tyto údaje pouze jako orientační. V praxi je třeba počítat s rušením atd.

Přenosová rychlost (Bd) Maximální délka (ft) Maximální délka (m)
 
19 200 50 15
9 600 500 150
4 800 1 000 300
2 400 3 000 900

Obsluha portů BIOSem

INT 14H ROM-BIOSu bude fungovat se všemi čtyřmi porty, jestliže uložíte bázové adresy těchto portů do tabulky COM portů začínající na adrese 0:0400. Je třeba, aby žádné dva adaptéry nesdílely tutéž adresu, nebo ani jeden z nich nebude fungovat. BIOS ale podporuje jen poměrně primitivní komunikaci využívající stavové dotazy (polling), což je pro složitější aplikace téměř nepoužitelné. Adaptér je však schopen vyvolat hardwarové přerušení na základě mnoha různých podmínek v závislosti na hodnotách registru povolení přerušení (3f9H nebo 2f9H).

Port I/O adresa IRQ INT vektor
 
COM1 3f8H až 3ffH 4 0ch
COM2 2f8H až 2ffH 3 0bh

Připojení RS 232 na TTL

Používáte-li v zařízení TTL nebo CMOS obvody, budete muset jejich logickou RS232 linku napěťově upravit před připojením do PC.

Pro toto upravení se standardně používaly obvody 1488 a 1489, které ale potřebovaly +12V a –12 pro vytvoření výstupních úrovní. To bylo mimochodem jedním z důvodů, proč je v klasickém PC ze zdroje vyvedeno i –12V a –5V (dalším důvodem byla potřeba většího rozdílového napětí u historických dynamických pamětí pro zvýšení jejich rychlosti).

Průlom v tomto směru udělala firma MAXIM svým obvodem MAX 232. Využila totiž svých znalostí ve vývoji spínaných nábojových měničů napětí a vyvinula obvod, který vystačil s +5V a potřebné napětí si samostatně vyrobil pomocí 4 externích kondenzátorů.

Obvod samozřejmě konvertuje log. 0 na +3..15V a log. 1 na –3..15V jak je popsáno výše.

MAX232 se stal neuvěřitelným šlágrem a dnes jeho obdobu najdete téměř ve všech komerčních zařízeních připojovaných k RS232.

MAX 232

Jedná se o převodník TTL na RS232. Obsahuje dvě dvojice oddělovačů konvertujících napěťové úrovně. Napětí pro RS232 se získává pomocí nábojové pumpy a výstupní napětí proto značně závisí na kvalitě použitých kondenzátorů, která u elektrolytických kondenzátorů časem značně klesá. Napětí je možno získat na pinech 2 a 6 a použít pro další obvody.

Obvod funguje vždy na první zapojení. Maxim vyrábí i verze s minimální externí kapacitou – (MAX 232A – 0,1 uF) nebo verze pracující v rozsahu 7,5 – 13 V (určeno pro bateriové aplikace) – MAX 201 a MAX 231.
Specialitou firmy MAXIM jsou obvody MAX 203 a MAX 233 které dokáží pracovat úplně bez potřeby vnějších kondenzátorů.

UPOZORNĚNÍ:

Vzhledem k úspěšnosti MAX232 začalo mnoho firem vyrábět obvody pinově kompatibilní v nižší cenové hladině. U jednoho z těchto výrobců (tuším AD232), které u nás svého času prodávalo GM je potřeba opačně polarizovat jeden z elektrolytů, tak uvádí firemní katalogový list. Vzhledem k předpokládané kompatibilitě to však mnoho vývojářů neověřuje a potom vznikají časem velmi komplikované závady.
Doporučujeme proto používat buď originální obvody MAXIM nebo dobře prostudovat "substituční" obvody, vzhledem k předpokládaným odlišnostem.

Loopback 25 pinů

rs232.loopback_25.gif
Zapojení LOOPBACKU
 
TD (2) --- (3) RD
RTS (4) --- (5) CTS
DSR (6) --- (8) CD
DSR (6) --- (20) DTR
CD (8) --- (22) RI

Loopback 9 pinů

rs232.loopback_9.gif
Zapojení LOOPBACKU
 
CD 1) --- (6) DSR
CD (1) --- (9) RI
RD (2) --- (3) TD
DTR (4) --- (6) DSR
RST (7) --- (8) CTS

Synchronizace RS232

rs232.rs232_synchronizace.gif

RS232 Používá asynchronní přenos informací. Každý přenesený byte konstantní rychlostí je proto třeba synchronizovat. K synchronizaci se používá sestupná hrana tzv. Start bitu. Za ní již následují posílaná data.

Myš a její parametry

Klasická Sériová myš se připojuje na RS232. Hardwarový protokol však není úplně standardní a liší se podle toho, jestli používáte 3-tlačítkovou myš - Mouse System Mouse nebo myš Microsoft, která umí obsluhovat pouze 2 tlačítka a používá 3-bytový přenos dat, zatímco 3-tlačítková myš používá obecný 5-bytový.

Řadiče portů

Seznam v BIOSu obsahuje seznam až čtyř bázových adres COM portů. Během POST BIOS testuje a inicializuje COM1 a COM2. Tyto porty jsou tvořeny obvody 8250 u PC/XT nebo 16450 u PC/AT (zcela programově i vývodově kompatibilní verze). Nevýhodou těchto obvodů je, že jsou schopny si zapamatovat pouze jeden přijatý znak, takže může hlavně při vyšších přenosových rychlostech dojít ke ztrátě dat (overrun), když počítač nestihne včas odebrat přijatý znak před příchodem dalšího. Z tohoto důvodu byl vyvinut obvod 16550, opět vývodově i programově kompatibilní, který však má 14-znakovou přijímací vyrovnávací paměť. Tato paměť však musí být programově zapnuta, jinak se obvod chová jako zcela standardní 16450. Je tedy možno jej v komunikačních kartách vyměnit, standardně je použit v systémech PS/2 a v portech osazených na MB. Umí jej obsluhovat např. známý komunikační program Telix nebo Terminate, stejně jako WINDOWS (možno vypnout).

3f8H - Obsluha UARTu

Používá se pro běžné čtení a příjem znaků ze sériového kanálu.

Pokud je nastaven port 3FB, bit 7=1 (OUT 3fbH,80H) přečtete na tomto portu dolní byte dělitele který společně s horním bytem (port 3f9H) tvoří 16-bitovou hodnotu, která určuje přenosovou rychlost podle tabulky:

                                          
RYCHLOST konstanta 3F9 3F8
 
110 1040 04 17
150 768 03 00
300 384 01 80
600 192 00 c0
1200 96 00 60
2400 48 00 30
4800 24 00 18
9600 12 00 0c
19200 6 00 6
115200 0 00 00

3fcH - Řízení modemu

7
MSB
6 5 4 3 2 1 0
LSB
SET - nastaví do log. 1
CLR - nastaví do log. 0
Log. 1 = -3..15V na pinu
Log. 0 = -3..15V na pinu
  • Bit 0:1=SET DTR (data terminal ready)
  • Bit 1: 1=SET RTS (request to send)
  • Bit 2:1=SET OUT1 (uživatelský výstup)
  • Bit 3:1=SET OUT2
  • Bit 4:1=aktivace zpětné vazby pro diagnostické účely

Bity OUT1 a OUT2 jsou z hlediska výrobce příslušného  integrovaného obvodu vývody na pouzdře, jejichž funkce je k dispozici návrháři systému (prostě 2 programem snadno ovladatelné bity pro libovolné upotřebení). Ovšem návrháři IBM PC využili bit OUT2, který přivedli na vstup povolení přerušení obvodu. Jelikož v klidovém stavu je v bitu OUT2 zapsána 0, je přerušení ZAKÁZÁNO (blokováním na úrovni hardware), i když správně naprogramujete registr povolení přerušení a všechno ostatní.
Pokud chcete používat přerušení, musíte OUT2 nastavit na 1.

3feH - Registr stavu modemu

BIT zkratka popis
 
0 DCTS Delta Clear To Send - CTS změnil stav
1 DDSR Delta Data Set Ready - DSR změnil stav
2 TERI Trailing Edge Ring Indicator - vzestupná hrana indikátoru vyzvánění
3 DDCD Delta Data Carrier Detect - DCD změnil stav
4 CTS Clear To Send (CTS) je aktivní
5 DSR Data Set Ready (DSR) je aktivní
6 RI Ring Indicator (RI) je aktivní
7 DCD Data Carrier Detect (DCD) je aktivní
Vytvořeno17. 2. 2003
Sériový port RS232