URZĄDZENIA
SZEREGOWE
Większość portów szeregowych jest zgodna z jednym z wariantów standardu znanego jako RS - 232
Standard ten określa charakterystyki elektryczne sygnałów znaczenie każdego przewodu wraz z rozmieszczeniem końcówek w tradycyjnym łączu 25 - stykowym, tzw. DB - 25
Dla wielu zastosowań pełny protokół RS - 232 okazuje się zbyt obszerny
Definiuje on sygnały zupełnie zbędne w prostej komunikacji
Łącze DB-25 również jest nieprzyjemnie duże szczególnie w takich zastosowaniach jak krosownica ( tablica połączeń) czy laptop
Dlatego stosuje się wiele innych odmian łączy szeregowych
Łącze DB - 25 występuje w odmianie męskiej (DB25P) oraz żeńskiej (DB25s)
Sprzęt komputerowy wyposaż się w łącza żeńskie, a kable są wyposażone w męskie wtyczki
Rysunek przedstawia męski wtyk DB - 25 ; widać, że wykorzystano tylko 7 końcówek - często tak właśnie jest
Odmiana łącza szeregowego DIN-8 jest powszechnie używana w komputerach Macintosh, niektórych komputerach i stacjach roboczych - łącze korzysta z 7 końcówek.
Nazwy sygnałów protokołu RS - 232 oraz przypisane im końcówki łącza DB - 25
KOŃCÓWKA NAZWA FUNKCJA
1 | FG | UZIEMIENIE | frame ground |
2 | TD | DANE NADAWANE | transmitted data |
3 | RD | DANE ODBIERANE | received data |
4 | RTS | ŻĄDANIE TRANSMISJI | request to send |
5 | CTS | GOTOWOŚĆ NADAWCZA | clear to send |
6 | DSR | STAN GOTOWOŚCI MODEMU | data set read |
7 | SG | ZEROWANIE | signal ground |
8 | DCD | WYKRYCIE NOŚNIKA DANYCH | data carrier detect |
9 | - | NAPIĘCIE DODATNIE | positive voltage |
10 | - | NAPIĘCIE UJEMNE | negative voltage |
11 | - | NIE UŻYWANE | not assigned |
12 | SDCD | WTÓRNY SYGNAŁ DCD | secondary DCD |
13 | SCTS | WTÓRNY SYGNAŁ CTS | secondary CTS |
14 | STD | WTÓRNY SYGNAŁ TD | secondary TD |
15 | TC | ZEGAR NADAWANIA | transmit clock |
16 | SRD | WTÓRNY SYGNAŁ RD | secondary RD |
17 | RC | ZEGAR ODBIORU | receive clock |
18 | - | NIE UŻYWANE | not assigned |
19 | SRTS | WTÓRNY SYGNAŁ RTS | secondary RTS |
20 | DTR | GOTOWOŚĆ DO TRANSMISJI | data terminal ready |
21 | SQ | JAKOŚĆ ODBIORU | signal qualitydetector |
22 | RI | DZWONEK | ring indicator |
23 | DRS | WYBÓR SZYBKOŚCI TRANSMISJI | data rate selector |
24 | SCTE | ZEWNĘTRZNY ZEGAR NADAWANIA | clock transmit external |
25 | BUSY | SYGNAŁ ZAJĘTOŚCI | busy |
istnieją dwa rodzaje konfiguracji połączeń t transmisji szeregowej, w zależności od rodzaju urządzenia; urządzenie może być dołączone jako
urządzenie końcowe transmisji danych (DTE - Data Terminal Equipment) - zazwyczaj komputery, terminale, drukarki
urządzenie komunikacyjne transmisji danych danych (DCE - Data Communications Equipment), np modemy
WARIANTY ŁĄCZY SZEREGOWYCH
wariant din - 8 (patrz wyżej)
wariant db - 9; bardzo powszechne w komputerach PC 9 - stykowe łącze
wygląda jak młodszy brat DB - 25
umożliwia przesyłanie 9 najpowszechniej używanych sygnałów transmisji szeregowej
wariant RJ - 45 - 8 stykowe stykowe łącze telefoniczne
# istnieją kable przejściowe od DB - 25 do DIN 8, od DB 9 do DB 25, istnieją standardy łączenia DB - 25 z końcówkami RJ - 45 (najlepszy to tzw. standard Yosta)
interfejs równoległy służy do przesyłania kilku bitów jednocześnie, przy użyciu oddzielnej linii danych dla każdego bitu
interfejs szeregowy służy do przesyłania bitów danych po jednym w danej chwili przez pojedyńczą linię danyc
ponieważ komputery i urządzenia zewnętrzne przetwarzają dane równolegle, więc szeregowy interfejs wejścia - wyjścia musi umożliwiać konwersję danych równoległych na szeregowe przy wysyłaniu i z szeregowych na równoległe przy odbieraniu
po równoległym załadowaniu wysyłającego rejestru przesuwającego, bity są przesuwane jeden za drugim na linię danych przez zegar nadajnika; po stronie odbiornika bity są próbkowane i przesuwane w rejestrze po każdym cyklu zegara odbierającego.
przy asynchronicznej transmisji szeregowej dane są przesyłane jako serie znaków, z których każdy umieszczony jest w ramce (frame)
ramka znaku zaczyna się bitem startu i kończy się jednym lub kilkoma bitami stopu, każdy znak zajmuje od pięciu do ośmiu bitów
ramka zawiera także opcjonalny bit parzystości (parity bit) - do wykrywania błędów
ponieważ zegar odbiornika pracuje niezależnie od nadajnika, to możliwy jest dryft - sygnał nie będzie próbkowany (↑) na środku.
Adres ≡ adres portu (max. 4)
A2A1A0 ≡ adresy rejestrów
szyna I/O ≡ mówi o kierunku transmisji (umożliwia rozróżnienie buforu odbiornika/nadajnika )
Przyporządkowanie portom szeregowym dresów w przestrzeni WE/WY IBM PC
COM1 | 03F8 - 03FF |
COM2 | 02F8 -02FF |
COM3 | 03E8 - 03EF |
COM4 | 02E8 - 02EF |
Zestawienie rejestrów obsługujących łącza RS232C i ich adresy
A2 | A1 | A0 | Nazwa rejestru | Uwagi |
0 | 0 | 0 | bufor nadajnika | tylko zapis LCR7 =0 |
0 | 0 | 0 | bufor odbiornika | tylko odczyt LCR7 =0 |
0 | 0 | 0 | młodszy bajt dzielnika | LCR7 = 1 |
0 | 0 | 1 | rejestr aktywacji przerwań | LCR = 0 |
0 | 0 | 1 | starszy bajt dzielnika | LCR = 1 |
0 | 1 | 0 | rejestr identyfikacji przerwań | tylko do odczytu |
0 | 1 | 1 | rejestr parametrów transmisji | (LCR) |
1 | 0 | 0 | rejestr sterowania modemu | (MCR) |
1 | 0 | 1 | rejestr stanu transmisji | (LSR) |
1 | 1 | 0 | rejestr stanu modemu | (MSR) |
przykłady przesyłania do rejestrów portu
outportb (port +3, 128) /* lcr7 = 1 */
outportb (port+1, 0x01) /*st bajt dzielnika*/
outportb (port, x) /*???*/
przykłady wysłania z rejestrów portu
y= inportb (port +5)
x= inportb (port)
REJESTR PARAMETRÓW TRANSMISJI
Nr bitu | Funkcja | Wartość | Znaczenie |
1,0 | długość | 00 | 5 bitów/słowo |
słowa | 01 | 6 bitów/słowo | |
10 | 7 bitów/słowo | ||
11 | 8 bitów/słowo | ||
2 | bity stopu | 0 | 1 bit stopu |
1 | 1,5 bitu, gdy słowo 5-bit | ||
2 bity w innym przypadku | |||
4,3 | parzystość | X0 | bez parzystości |
01 | bit nieparzystości | ||
11 | bit parzystości | ||
5 | odwrócenie | 0 | normalna parzystość |
parzystości | 1 | zanegowana parzystośc | |
6 | sygnał | 1 | wymuszenie stanu 0 na |
przerwania | wyjściu szeregowym | ||
transmisji ( break ) | |||
7 | rozszerzenie adresu | zob. LCR7 |
jakie parametry transmisji zostaną ustawione jeżeli wykonane zostanie polecenie:
outportb (port +3, 0x1F)
REJESTR STANU TRANSMISJI
Nr bitu | Znaczenie dla "1" |
0 | skompletowana dana w buforze odbiornika |
1 | błąd nieodebrania danej |
2 | błąd parzystości |
3 | błąd ramki |
4 | sygnał przerwania odebrany na wejściu szeregowym |
5 | bufor nadajnika pusty |
6 | rejestr szeregujący opróżniony |
7 | zawsze wartość "0" |
oznaczają następujące linie kodu:
if (inportb (port +5 ) & 1 ){
x=inportb (port)
}
lub
if (inportb (port +5 ) & 32 ){
x=getche();
}
poszczególne kroki w programie realizującym transmisję:
zadeklarować zmienne oraz ustalić adresy portów
ustalić szybkość transmisji, ten młodszy i starszy bajt dzielnika*
ustalić parametry transmisji: rejestr LCR
realizować transmisję (programowo) korzystając w szczególności z rejestru LSR
*patrz, tablica Ustawienia Szybkości Transmisji
(USTAWIENIA SZYBKOŚCI TRANSMISJI)
Szybkość transmisji (w bodach) | Wartość dzielnika (dziesiętnie) | Starszy bajt dzielnika (szesnastkowo) | Młodszy bajt dzielnika (szesnastkowo) | Błąd względny w % |
50 | 2304 | 09 | 00 | 0 |
110 | 1047 | 04 | 17 | 0,026 |
150 | 768 | 03 | 00 | 0 |
300 | 384 | 01 | 80 | 0 |
600 | 192 | 00 | C0 | 0 |
1200 | 96 | 00 | 60 | 0 |
2000 | 58 | 00 | 3A | 0,69 |
2400 | 48 | 00 | 30 | 0 |
3600 | 32 | 00 | 20 | 0 |
4800 | 24 | 00 | 18 | 0 |
7200 | 16 | 00 | 10 | 0 |
9600 | 12 | 00 | 0C | 0 |
19200 | 6 | 00 | 06 | 0 |
38400 | 3 | 00 | 03 | 0 |
56000 | 2 | 00 | 02 | 2,86 |
115000 | 1 | 00 | 01 | 0,17 |
38400 | 3 | 00 | 03 | 0 |
56000 | 2 | 00 | 02 | 2,86 |
15000 | 1 | 00 | 01 | 0,17 |
TOPOGRAFIA WPROWADZEŃ SYGNAŁÓW DLA RS - 232C
Nr styku | Nazwa sygnału | **w nawiasach wartości dla gniazda 9 - cio pinowego ** |
1 | Masa ochronna | |
2(3) | TxD Transmit Data | |
3(2) | RxD Receive Data | |
4(7) | RTS Request To Send | |
5(8) | CTS Clear To Send | |
6(6) | DSR Data Set Ready | |
7(5) | SG Signal Ground | |
8(1) | RLSD Rec. Line Sig. Select | |
20(4) | DTR Data Termiminal Ready | |
22(9) | RI Ring Indicator |
REJESTR AKTYWACJI PRZERWAŃ
Nr bitu | Funkcja | ** wpisanie wartości zero do odpowiedniego bitu blokuje związane z nim przerwanie lub grupę przerwań, 1-aktyw.** |
0 | dana skompletowana w buforze odbiornika | |
1 | bufor nadajnika pusty | |
2 | błędy: parzystości, ramki, nałożenia, kolejnych danych sygnał przerwania transmisji | |
3 | zmiany stnów sygnałów CTS, DSR, RI, RLSD | |
4,5,6,7 | nie używane |
REJESTR IDENTYFIKACJI PRZERWAŃ
Nr bitu | Wartość | Znaczenie |
0 | 0 | istnieje aktywne przerwanie |
1 | nie istnieje przerwanie wymagające obsługi | |
2,1 | 00 | jedno z czterech przerwań rejestru stanu modemu (najniższy priorytet) |
01 | pusty bufor nadajnika | |
10 | skompletowana dana w buforze odbiornika | |
11 | jedno z czterech przerwań w rejestrze stanu transmisji (najwyższy priorytet) | |
REJESTR STEROWANIA MODEMU (MCR)
Nr bitu | Funkcja |
0 | pozycja logiczna na wyjściu DTR (negacja) |
1 | pozycja logiczna na wyjściu RTS (negacja) |
2 | wyjście OUT1 (negacja) |
3 | wyjście OUT (negacja) |
4 | 0 - normalne działanie |
1 - zamknięcie pętli wewnętrznego sprzężenia (w celu samotestowania) | |
5,6,7 | ustawione na zero |
REJESTR STANU MODEMU (MSR)
Nr bitu | Znaczenie |
0 | 1 - gdy linia CTS zmienia stan logiczny |
1 | 1 - gdy linia DSR zmienia stan logiczny |
2 | 1 - gdy stan linii RI zmienia sie z 1 na 0 |
3 | 1 - gey linia RLSD zmienia stan logiczny |
4 | stan linii CTS (negacja) |
5 | stan linii DSR (negacja) |
6 | stan linii RI (negacja) |
7 | stan linii RLSD (negacja) |
INTERFEJSY SZEREGOWE
Wymagania stawiane obwodom transmisyjnym
Parametr | RS - 232C | RS - 423A | RS - 422A | RS - 485 |
Rodzaj transmisji | Niesymetryczna | Niesymetryczna | Różnicowa | Różnicowa |
Dozwolona ilość nadajników i odbiorników | 1/1 | 1/10 | 1/10 | 32/32 |
Maksymalna długość kabla [bps] | 15 | 1200 | 1200 | 1200 |
Maksymalne napięcie wspólne | 20k. | 100k. | 10M | 10m. |
Wyjście nadajnika | ą25V | ą6V | ą6V -0,25V |
+12V -7V |
Obciążenie nadajnika | ą5V min ą15V max |
ą3,6V ą6,0V |
ą2V min | ą1,5 V min |
Ograniczenie prądu zwarciowego nadajnika | 3kΩ do 7kΩ | 450Ω min | 100Ω min | 60Ω min |
Rezystancja wejściowa odbiornika | 500mA przy zwarciu do Vcc lub GND | 150mA przy zwarciu do GND | 150mA przy zwarciu do GND | 150mA przy zwarciu do GND. 250mA do-8V lub 12V |
Czułość odbiornika | ą3V | ą200mV | ą200mV | ą200mV |