Standard RS-232
Standard RS-232 opisuje sposób połączenia urządzeń DTE (
urządzeń końcowych danych (np. komputer) oraz urządzeń DCE (
Equipment), czyli urządzeń komunikacji danych (np.
). Standard określa nazwy styków
złącza oraz przypisane im sygnały a także specyfikację elektryczną obwodów wewnętrznych.
Standard ten definiuje normy wtyczek i kabli
typu COM. Standard RS-232
Recommended Standard) opracowano w
roku na zlecenie amerykańskiego
stowarzyszenia producentów urządzeń elektronicznych w celu ujednolicenia parametrów sygnałów
i konstrukcji urządzeń zdolnych do wymiany danych cyfrowych za pomocą sieci telefonicznej.
RS-232 jest magistralą komunikacyjną przeznaczoną do szeregowej
. Najbardziej
popularna wersja tego standardu, RS-232C pozwala na transfer na odległość nie przekraczającą 15
m z szybkością maksymalną 20 kbit/s.
W architekturze PC standardowo przewidziano istnienie 4 portów COM oznaczanych odpowiednio
COM1-COM4. Specjalizowane karty rozszerzeń pozwalały na podłączenie znacznie większej ilości
portów RS-232, jednak nie były one standardowo obsługiwane przez
i wymagały
specjalistycznego oprogramowania.
W przypadku komputerów
porty RS-232 początkowo obsługiwane były przez układy
(PC,
, 80386, pierwsze i486), następnie przez zintegrowane z płytą główną
16550A. Układy te są ze sobą wstecznie zgodne, jednak kolejne wersje posiadają coraz większy
bufor
. Kość 16550A posiada standardowo bufor 2x 16b. Zwiększenie długości kolejki FIFO
skutkowało obniżeniem częstotliwości przerwań generowanych przez port przy przesyłaniu danych.
Na potrzeby zastosowań profesjonalnych (np. równoczesna obsługa wielu szybkich modemów w
systemach typu
) stosowano często specjalizowane karty RS-232 z jeszcze większymi
buforami (np. 16650 czy karty procesorowe). Znane były rozwiązania pozwalające na podłączenie
do 1024 urządzeń RS-232, przy zachowaniu pełnej prędkości per port i buforami rzędu 1024 bajty
na port. Część kart tego typu pozwalała także na ustawianie wyższego zegara wskutek czego bitrate
na wyjściu układu był wyższy niż ustawienia programowe – przy dużej wielkości kolejki FIFO
pozwalało to na uzyskiwanie wysokich (często niestandardowych – jak w przypadku modemów
ZyXel 76800 bps) prędkości. Spotkać można było na rynku modemy komunikujące się z portem
RS-232 z prędkościami do 421 kbit, a nawet 921,6 kbit (np. Yuko, Goramo).
Specyfikacja napięcia definiuje "1" logiczną jako
-3V do -15V, zaś "0" to napięcie +3V do
+15V. Poziom napięcia wyjściowego natomiast może przyjmować wartości -12V, -10V, +10V,
+12V, zaś napięcie na dowolnym styku nie może być większe niż +25V i mniejsze niż -25V. Należy
zaznaczyć przy tym, że zwarcie dwóch styków RS-232 teoretycznie nie powoduje jego
uszkodzenia. W praktyce ten zapis w specyfikacji nie zawsze jest przestrzegany.
•
Widok gniazda PC (męskiego) typu
od strony wtyczki
Numer
Kierunek
Oznaczenie Nazwa angielska
Nazwa polska
9 pin 25 pin
1
8
DCE – > DTE DCD
Data Carrier Detected sygnał wykrycia nośnej
2
3
DCE – > DTE RxD
Receive Data
odbiór danych
3
2
DCE < – DTE TxD
Transmit Data
transmisja danych
4
20
DCE < – DTE DTR
Data Terminal Ready gotowość terminala 1)
5
7
DCE – DTE
GND
Signal Ground
masa
6
6
DCE – > DTE DSR
Data Set Ready
gotowość "modemu" 1)
7
4
DCE < – DTE RTS
Request to Send Data żądanie wysyłania
8
5
DCE – > DTE CTS
Clear to Send Data
gotowość wysyłania
9
22
DCE – > DTE RI
Ring Indicator
wskaźnik dzwonka
9-19; 21; 23-25
NC
nie wykorzystane 2)
1) nazwa sygnału DSR bywa mylnie tłumaczona jako "wypełniony bufor (gotowość transmisji)", a
DTR jako "przetworzono dane (gotowość odbioru)" - w rzeczywistości oznaczają one gotowość
urządzeń do pracy (czyli, że mają włączone zasilanie i wykonały reset po włączeniu) - angielskie
nazwy "Data Set" i "Data Terminal" oznaczają urządzenia, a nie ich stany.
2) sygnały te nie są wykorzystywane przy łączności asynchronicznej (standardowy PC miał tylko
taką) - łączność synchroniczna używała jeszcze innych sygnałów, np. zegarowych do odbioru i
wysyłania danych (RxC i TxC), które przy łączności asynchronicznej są zbędne.
Zworki na wtyku kontrolnym
Podłączenie do PC (lub innego DTE) tak wykonanego wtyku powoduje, że
dostaje on z powrotem wszystkie wysłane dane - taki wtyk służy do testowania
poprawności działania portu RS-232 w DTE.
Protokoły transmisji danych
Asynchroniczny: każdy bajt jest przesyłany niezależnie, i jest poprzedzony bitem START (stan 0),
po którym są przesyłane bity danych od 0 do 7 (lub mniej: stosuje się bajt od 5 do 8 bitów), po nich
opcjonalnie bit parzystości (do wyboru: tak, by łączna liczba jedynek w danych i tym bicie była
parzysta (Even Parity), albo nieparzysta (Odd Parity), albo by miał określoną wartość 0 albo 1
(Stick Parity) - łącznie 4 możliwości), i na koniec bit (lub bity) STOP (stan 1; dla słowa 5-bitowego
1 lub 1.5 bitu, dla dłuższych 1 lub 2; jest to gwarantowany odstęp przed bitem START następnego
bajtu, może on jednak być dowolnie długi); bity mają czas trwania określony przez stronę
9 pin
25 pin
2--3
2--3
7--8
4--5
1--4--6 6--8--20
wysyłającą, strona odbierająca odmierza czas od zbocza 1→0 na początku bitu start i próbkuje stan
w połowie długości bitu; wykrycie wartości '1' w połowie bitu START jest interpretowane jako
"fałszywy start"; wykrycie wystąpienia '0' pół odstępu czasu po rozpoczęciu bitu STOP jest
interpretowane jako "błąd ramki" (framing error).
Synchroniczny: DCE (modem) podaje sygnały TxC (nie musi go podawać, lub może być
nieprawidłowy, kiedy nie daje CTS) i RxC (nie musi go podawać, lub może być nieprawidłowy,
gdy nie daje DCD), a DTE (terminal) wysyła (TxD) lub odbiera (RxD) kolejne bity danych; żeby
ustalić przy odbieraniu, gdzie jest granica bajtów, dane są poprzedzone serią bajtów SYN (0x16 -
DTE musi analizować je i wykryć, o ile bitów trzeba przesunąć dane, by uzyskać taką wartość), po
których następuje znak rozpoczynający pakiet danych (np. SOH - 0x01) i kolejne bajty, bez
możliwości "zaczekania" (najwyżej z możliwością wysłania danych nieznaczących); dane mają
strukturę określającą ich przeznaczenie (np. dane do wyświetlenia, dane do wydrukowania,
sterowanie terminalem - to, co w protokole TCP/IP określa "port"), i gdzie jest ich koniec; zwykle
dla kontroli poprawności transmisji pakiet zawiera dodatkowe dane do jej sprawdzenia, czasem jest
to różnica symetryczna wszystkich bajtów, częściej CRC; z powodu konieczności synchronizacji
przesyłanie danych wyłącznie pakietami; liczba bitów pomiędzy pakietami nie musi być
wielokrotnością bajta.
Modemy half- i full-duplex
Modem full-duplex może jednocześnie odbierać i wysyłać, DTE współpracujący z takim modemem
zwykle włącza na stałe sygnał RTS, aby uniknąć opóźnień na synchronizację modemów.
Modem half-duplex nie może robić obu tych rzeczy naraz - podanie RTS powoduje odczekanie na
przerwę w sygnale nośnym (DCD) i wysłanie sygnału nośnego - po uzyskaniu stabilnego
połączenia do wysyłania z modemem z drugiej strony modem podaje sygnał CTS; po zakończeniu
wysyłania danych (ale nie wcześniej) DTE musi wyłączyć RTS, aby modem przestał wysyłać
sygnał nośny i pozwolił, by modem z drugiej strony mógł rozpocząć wysyłanie.