PROTOCOLLO RS232

Il protocollo RS232 è uno standard di trasmissione seriale, molto usato nei computer o da apparecchiature collegate ad esso.
Le porte utilizzate sono principalmente due, la prima a 25 poli (simile alla parallela) chiamata anche DB-25 maschio DTE, e la seconda a 9 poli di tipo maschio DE9P.
Il connettore maschio è riferito al lato computer.

La porta a 25 poli (prima foto) veniva usata in passato ed ora è in disuso, mentre la porta a 9 poli (seconda foto) la potete trovare dietro il vostro computer o in qualche apparecchiatura, tipo le casse dei negozi o le apparecchiature meccaniche presenti nei laboratori di ricerche etc.
Il protocollo si divide in due principali tipi di trasmissione, sincrona e asincrona.

SINCRONA
La trasmissione sincrona prevede 2 canali, uno per la trasmissione dati ed uno per la trasmissione del clock (o frequenza di lavoro).

Il dispositivo che trasmette le informazioni è chiamato master, mentre il dispositivo che le riceve slave.
Il dispositivo si setta automaticamente su master o su slave a seconda dell'operazione che sta facendo, quindi se deve trasmettere i dati si posiziona su master e genera la frequenza di clock, mentre se non deve trasmettere i dati si posiziona su slave e si sincronizza sulla frequenza del master.
Per una trasmissione corretta tra master e slave, la velocità dei dati e la lunghezza degli stessi deve essere identica in tutte e due gli apparati.
Supponiamo di dover inviare il numero 3 alla porta seriale di un computer, e che la sua porta seriale sia settata con una lunghezza d'informazione di 8 bit ed una frequenza di 9600 bit per secondo (chiamati anche baud).
Il nostro master dovrà trasmettere il numero 3 rispettando tutti i parametri dello slave, quindi velocità e lunghezza di dati.
Il numero 3 convertito in binario da 8 bit (perchè 8 è la lunghezza dei dati scelta) è così composto 00000011, quindi la trasmissione del numero sarà come in foto.

Ad ogni clock viene inviato un singolo bit, nel primo tempo viene inviato un bit di sincronizzazione che permette allo slave di capire che sta per ricevere un informazione dal master (Sync).
Nei tempo che vanno dal 2 fino al 9 viene spedita l'informazione, in questo caso il numero 3 trasformato in binario 00000011.
Come vedete ad ogni durata di clock dura il bit da trasmettere e questo dato è di vitale importanza altrimenti lo slave non riuscirebbe a sincronizzarsi con il master e quindi l'invio delle informazioni fallirebbe.


ASINCRONA
La trasmissione asincrona prevede un canale per la trasmissione e un canale per la ricezione, questi canali sono incrociati, ovvero il canale di trasmissione di uno va nel canale di ricezione dell'altro, come in foto.

I dati da inviare questa volta subiscono un trattamento più complesso rispetto alla trasmissione sincrona.
I settaggi da usare sono: la velocità di trasmissione, la lunghezza dell'informazione da inviare, il bit di parità.
Riprendendo l'esempio precedente, ovvero l'invio del numero 3 ad un computer tramite porta seriale, l'informazione inviata sarà la seguente:

Nel primo tempo abbiamo un bit di start  che identifica l'inizio del byte da inviare, dal tempo 2 al tempo 9 il numero 3 convertito in binario ed alla fine un bit di stop che identifica la fine del byte inviato.
Grazie al bit di start e di stop il ricevitore sa quando inizia e quando finisce un informazione inviata dal trasmettitore.
Il bit di stop può durare un tempo, un tempo e mezzo o due tempi di clock, nei settaggi troverete 1 - 1,5 - 2.
Ma supponiamo di inviare il numero tre (00000011), e che per colpa di disturbi od interferenze si riceverà 00000111 e quindi il numero 7, come possiamo risolvere il problema?
A questo pacchetto si può aggiungere il bit di parità che serve a controllare se l'informazione inviata è arrivata corretta od errata e quindi bisogna scartala.


BIT DI PARITA' PARI (even)
Il bit di parità pari porta a paro il numero di bit settati a uno, supponendo di inviare il numero 00000011, sarà aggiunto un bit a zero (bit rosso) perchè il totale dei bit a uno è pari, quindi sarà 000000011.
Se dovevamo inviare il numero 00000111 il bit di parità sarebbe stato uno perchè il numero di bit ad uno è dispari, quindi 100000111.
In questo modo se l'informazione inviata è 000000011 e l'informazione ricevuta è 000000111, c'è un errore, perchè il bit di parità deve essere ad uno e non a zero e quindi il byte viene scartato.

BIT DI PARITA' DISPARI (odd)
Il bit di parità dispari porta a dispari il numero di bit settati a uno, supponendo di inviare il numero 00000011, sarà aggiunto un bit a uno perchè il totale dei bit a uno compreso il bit di parità e dispari , quindi sarà 100000011.
Se dovevamo inviare il numero 00000111 il bit di parità sarebbe stato zero perchè il numero di bit ad uno è dispari, quindi 000000111.
In questo modo se l'informazione inviata è 000000011 e l'informazione ricevuta è 000000111, c'è un errore, perchè il bit di parità deve essere a zero e non a uno, quindi il byte viene scartato.

LIVELLI ALIMENTAZIONE
I livelli di alimentazione sono diversi, nello standard si prevedono i seguenti livelli:

- 5 V -----+ 5V
-10 V ---- +10V
-12 V ---- +12V
-15 V ---- +15V

Questo indica che il livello più basso del segnale si trova a una tensione negativa e non zero.
Questi livello è utilizzato in tutti i computer, vecchi e moderni e in tutti i circuito elettronici di vecchio tipo, (di solito i nuovi utilizzano i livelli TTL).
La massima tensione applicabile è di 25 Volt e la commutazione avviene a -3V e +3V.
Altri sistemi utilizzano i livelli TTL ovvero da 0 volt a 5 volt, quindi tutte tensioni positive.
Il sistema TTL è molto usato per adattatori seriali o piccole schede di conversione, ultimamante è molto usato a livello amatoriale e non.

VELOCITA' DI TRASMISSIONE
La velocità di trasmisione si misura in bps (bit per secondo ) o in baud (baud rate),in questo caso coincidono, essendo una trasmissione binaria.
Le velocità permesse sono le seguenti:
50
75
110
134
150
200
300
600
1200
1800
2400
4800
9600
19200
38400
57600
115200
230400
460800
500000
576000
921600
1000000
1152000
1500000
2000000
2500000
3000000
3500000
4000000

Attenzione, perchè non tutte le schede supportano le velocità indicate, fate riferimento alle specifiche del costruttore.

NUMERO DI BIT
Il numero di bit che si possono trasmettere possono essere:
6 bit
7 bit
8 bit

Il numero di bit più comune è a 8 bit.

SPECIFICHE PIU' UTILIZZATE
Le specifiche più utilizzate nella trasmissione seriale RS-232 &grave 8N1 9600.
Questa siglia identifica:
8 = 8 bit
N = Nessuna parità
1 = Un bit di stop
9600 = Velocità di trasmissione

PIEDINATURA DELLE PORTE:
Le porte seriali da 25 poli hanno la seguente piedinatura:

PIN 1 Schermatura PIN 2 TD (Trasmissione dati) DTE → DCE
PIN 3 RD (Ricezione dati) DCE → DTE
PIN 4 RTS (Request To Send) DTE → DCE
PIN 5 CTS (Clear To Send) DCE → DTE
PIN 6 DSR (Data Set Ready) DCE → DTE
PIN 7 SG (Signal Ground) Massa dati
PIN 8 DCD (Data Carrier Detect) DCE → DTE
PIN 9 Riservato
PIN 10 Riservato
PIN 11 Non Assegnato
PIN 12 SDCD (Secondary Carrier Detect) DCD canale secondario
PIN 13 SCTS Secondary Clear To Send) CTS canale secondario
PIN 14 STD (Trasmissione dati secondario) TD canale secondario
PIN 15 TC (Trasmitting Clock) DTE → DCE (temporizzazione generata da DCE)
PIN 16 SRD (Ricezione dati secondario) RD canale secondario
PIN 17 RC (Receiving Clock) DCE → DTE (temporizzazione generata da DCE)
PIN 18 LL (Local Loopback) DTE → DCE
PIN 19 SRTS (Secondary Request To Send) RTS canale secondario
PIN 20 DTR (Data Terminal Ready) DTE → DCE
PIN 21 RL (Remote Loopback) DTE → DCE
PIN 22 RI (Ring Indicator) DCE → DTE
PIN 23 Data Signal Rate Selector
PIN 24 TC (Trasmitting Clock) DTE → DCE (temporizzazione generata da DTE)
PIN 25 Test Mode

Lo schermo è collegato corpo metallico del connettore.

Mentre le porte seriali a 9 poli hanno la seguente piedinatura:

PIN 1 Data Carrier Detect DCD
PIN 2 RD (Ricezione dati) DCE → DTE
PIN 3 TD (Trasmissione dati) DTE → DCE
PIN 4 DTR (Data Terminal Ready) DTE → DCE
PIN 5 SG (Signal Ground) Massa dati
PIN 6 DSR (Data Set Ready) DCE → DTE
PIN 7 RTS (Request To Send) DTE → DCE
PIN 8 CTS (Clear To Send) DCE → DTE
PIN 9 RI (Ring Indicator)