Come RS232 funziona : RS232 definisce un protocollo che descrive in dettaglio come un flusso di bit di dati issequentially trasmessi su un filo, cioè un flusso di bit. L’ordine andmeaning di ogni bit è definito dal protocollo. La semplice spiegazionebelow è sufficiente per capire RS232-non c’è bisogno di leggere un grande manuale!,
RS232 è uno standard serial information transfer protocol che definisce sia il protocollo (metodo di trasmissione dei dati) che l’hardware fisico per farlo. Questo documento descrive come funziona a livello fisico, quindi saprai quali segnali puoi aspettarti di vedere sui pin del microcontrollore.
Che cosa è RS232?,
Fondamentalmente è un metodo per trasferire dati su un singolo filo (hai bisogno di due fili per recuperare i dati poiché ogni filo trasferisce i dati in una sola direzione):
È un metodo (o protocollo – uno standard concordato) che definisce come trasferire i dati tra due dispositivi utilizzando alcuni fili. Utilizza un metodo serialtransmission in cui byte di dati vengono emessi un bit alla volta su un filo singolo.
I dati sono trasmessi soltanto in un directionfor ogni cavo in modo da per la comunicazione bidirezionale (due direzioni) youneed due cavi., Quindi questo non è un sistema di comunicazione lan multidrop come RS485 ma un protocollo point-to-point.
Questi due insieme a un riferimento di massa (totale: tre fili) costituiscono la configurazione minima con cui è possibile farla franca.
Nota: Per una comunicazione più affidabile su distanze troppo lunghe potrebbe essere necessario utilizzare altre connessioni definite nello standard rs232 come DTR DCT ecc. segnali di stretta di mano ecc.
Fondamentalmente può trasferire un singolo byte di dati su un cavo seriale che ha tra 3 e 22 segnali e funziona a velocità da 100 a 20k baud. Le velocità di trasmissione comuni utilizzate sono 2,4 k, 9,6 k, 19,2 k, la lunghezza del cavo può arrivare fino a 50 piedi. Velocità di trasmissione più elevate sono utilizzati, ma non coperti dallo standard che ancora workthough ad esempio 38400,57600 Baud (bit/s).
Per trasferire un blocco di dati i singoli byte vengono trasmessi uno dopoun altro.,
Questa sezione descrive come funziona RS232 in generale senza descrivere i metodi handshake – viene descritto solo il sistema più semplice – questo è il più utile e il più probabile che funzioni!.
I segnali di handshake necessitano di hardware di traduzione di livello aggiuntivo (un chip rs232 con più I/O) e, sebbene semplici, non sono tipicamente necessari per il funzionamento della scheda di sviluppo PC. Potresti averne bisogno per sistemi che controllano più dispositivi in cui potrebbe essere necessario interrompere temporaneamente i dati da un’unità. C’è una sezione sui segnali di stretta di mano più avanti in questo documento.,
I dati vengono trasmessi in serie in una direzione su una coppia di fili. Datagoing out è etichettato Tx (che indica la trasmissione), mentre i dati in arrivo è etichettato Rx (che indica la ricezione). Per creare un sistema di comunicazione bidirezionale aminimo di tre fili sono necessari Tx, Rx e GND (terra). Attraversare Tx & Rx tra i due sistemi consente a ciascuna unità di parlare con quella opposta.
Ogni byte può essere trasmesso in qualsiasi momento (purché sia stato trasmesso il byte precedente). Il byte trasmesso non è sincronizzato con il ricevitore-è un protocollo asincrono cioè non c’è segnale di clock. Per questo motivo, il software ad ogni estremità del collegamento di comunicazione deve essere impostato esattamente nello stesso modo in cui ogni chip di decodifica seriale può decodificare il flusso di dati seriale.
Nota: Il livello del segnale di inversione (logica 1is-12 V e logica 0 è +12 V).,
Baud Rate
Come funziona RS232 nella relazione tra baud rate e signalfrequency.
La velocità di trasmissione è semplicemente la velocità di trasmissione misurata in bit per second.It definisce la frequenza di ogni periodo di bit.
Per una velocità di trasmissione di 2400 (2400 bps) la frequenza è 2400Hz e il bitperiod è 1/2400 o 416.6 us. Questa è l’informazione che un ricevitore utilizza perrecuperare i bit dal flusso di dati.,
Come funziona RS232-Voltagelevels
Per farlo funzionare su cavi lunghi alte tensioni vengono inviate da eachtransmitter poiché a causa della resistenza del cavo la tensione riduce l’ulteriore thesignal deve viaggiare. La specifica della tensione di uscita va da + 5 V a +25 V (trasmissione di uno zero logico) e da-5 V a-25 V (trasmissione di uno logico).
Nota: tutti i segnali nel cavo devono generare gli stessi livelli di tensione, ad esempio DTR, DSR, RTS, CTS. Quindi hai bisogno di molti chip di traduttore di livello per una fullinterface, ma per distanze molto brevi hai solo bisogno di TX e RX e terra.,
La tensione massima di ±25 V non deve essere utilizzato e un commonvoltage in uso è ±12 V (uscita da MAX232 ricetrasmettitore chip).
Un segno (logico) viene inviato come-12V e uno spazio (zero logico) viene inviato come+12V, cioè il senso logico è invertito.
Nota: il fatto che esistano tensioni elevate sulla porta seriale consentedispositivi di alimentazione che normalmente non ci si aspetterebbe di trovare su di esso. Ma devono attingere pochissima corrente.
Livelli di tensione del ricevitore
Al ricevitore l’ingresso i livelli minimi di tensione sono definiti come ±3V cioè, per ricevere una logica zero la tensione deve essere maggiore di 3V e per riceverne una logica la tensione deve essere inferiore a-3V. Ciò consente perdite in quanto il segnale viaggia lungo il cavo e fornisce immunità al rumore, ovvero qualsiasi rumore spurio fino a un livello di ±3V può essere tollerato senza che abbia alcun effetto sul ricevitore.
Come funziona RS232 – TheRS232 Start Bit
Il protocollo è descritto come asincrono in quanto non vi è alcun orologio trasmittedat tutti. Invece viene utilizzato un diverso metodo di recupero dell’orologio.,
All’inizio di ogni trasmissione viene trasmesso un bit di avvio che indica al ricevitore che un byte di dati sta per seguire. Poiché lo stato di inattività delle linee RS232 è basso (- 12V) per segnalare una condizione di avvio, la linea è impostata su (+12V) per un periodo di 1 bit. Ciò significa che una transizione sulla linea è alwaysgenerated in modo che un ricevitore sappia quando il 1 ° bordo del burstoccurs di dati.
Il bit di avvio consente al ricevitore di sincronizzarsi con i bit di dati poiché può vedere il bordo di salita del segnale sulla linea., Ciò significa che thereceiver può creare il proprio orologio di esempio al centro di ogni bit – per decidere se il bit è in realtà uno zero dati o uno dati.
Una volta trovato il bit di avvio, il ricevitore sa dove saranno i seguenti bit, dato il periodo di campionamento (derivato dalla velocità di trasmissione) come parte del processo di inizializzazione. Questo è il motivo per cui è necessario impostare le stesse impostazioni sia nel ricevitore che nell’hardware del trasmettitore, ad esempio baud rate, numero di bit di stop, numero di bit di dati e bit di parità (on o off)., Se youdon’t poi di solito non accadrà nulla-o vedrete rubbishcharacters al ricevitore.
Come funziona RS232 – I bit di dati
seguono il bit di avvio. Di solito ci saranno sette o otto databit con l’lsb trasmesso per primo. Il motivo per cui puoi scegliere tra sette oreight è che ASCII è costituito dall’alfabeto all’interno dei primi sette bit (così come i caratteri di controllo). L’ottavo bit estende il set di caratteri persimboli grafici.
Se vuoi solo trasmettere il testo, hai solo bisogno di 7 bit., Ciò consente di risparmiare abit e aumenta la velocità di trasmissione quando si trasmettono grandi blocchi di dati.Altre dimensioni dei bit di dati sono 5, 6, 8 e 9 bit. Tuttavia la lunghezza del bit è di solitoset a 8 bit – questo è molto comunemente usato.
Nota: Se si utilizza RS232 per trasmettere dati grezzi (dati binari), saranno necessari 8 bit di dati.,
Come funziona RS232-Il bit di parità
Il bit di parità RS232 è un meccanismo di rilevamento degli errori grezzo.Puoi usare parità dispari o parità pari o nulla (nel diagrammosopra è incluso un bit di parità (tra l’ultimo bit di dati e il bit di stop-Qui la parità è indicata come ‘1’, il che significa che c’è un numero dispari didatabit. Quindi la parità in uso è parità dispari. Lo schema seguente (comunemente usatonel lavoro del microcontrollore) non utilizza un bit di parità.,
Valuta semplicemente tutti i bit di dati e per la parità dispari restituisce una logica se c’è un numero dispari di bit di dati impostati. Per parità pari un numero pari di bit di dati impostati, imposta il bit di parità.
Al ricevitore il bit di parità viene utilizzato per dire se si è verificato un errore durante la trasmissione. È possibile utilizzare questo nel software del ricevitore leggendo una bandiera inil modulo UART.
Il problema con il rilevamento degli errori utilizzando il bit di parità è che se due bit sono in errore, il controllo di parità fallisce., Questo perché ogni errore annullal’effetto dell’altro (in termini di calcolo della parità). Qualsiasi numero pari di errori causa un errore nel rilevamento degli errori.
Non sarà un problema su un sistema basato su banco (che non ha un trasferimento di dati critico). Su un cavo corto, ad esempio 6ft, probabilmente non vedrai alcun errore. Normalmente non uso alcuna parità e non c’è alcun problema.
Per i sistemi in esecuzione su una lunga distanza o in un ambiente rumoroso dovrebbe essere utilizzato un bettersystem, ad esempio Aggiungendo un controllo di ridondanza ciclica al flusso di dati prima e dopo che è stato inviato su RS232., CRC consentono di controllare e correctquite alcuni errori senza ri trasmissione dei dati.
Come funziona RS232-Lo Stopbit
Il bit di arresto RS232 fornisce semplicemente un periodo di tempo prima che il bit di avvio successivo possa essere trasmesso. È il senso opposto al bit di inizioe a causa di questo permette che il bit di inizio sia visto cioè un bit di arresto seguito da un bit di inizio dà sempre un segnale del bordo di salita per rilevazione dal ricevitore.
Se non ci fosse un bit di stop, l’ultimo bit nel flusso di dati sarebbe il bit di parità (o bit di dati se la parità non è attiva)., Questo cambierebbe a seconda dei dati inviati, quindi se avesse lo stesso senso del bit di avvio, lo startbit non potrebbe essere visto!
Il bit di stop può essere impostato scegliendo tra periodi di 1, 1,5 o 2 bit.
A velocità di trasmissione molto elevate il periodo dal bit di stop al bit di avvio(supponendo che i dati vengano inviati continuamente) sarà molto piccolo, ad esempio per una velocità di trasmissione di 115200 baud il timeing a un bit è 1/115200 = 8.26 us quindi usando periodi di 2 bit aumenterai il tempo a 16.5 us., Questo canallow il ricevitore per rilevare il bit di avvio più facilmente dal momento che se c ‘ è capacità sulla linea le forme d’onda esporrà un CR aumento tempo di caduta. L’estensione del periodo di tempo consente un caricamento più capacitivo. Tuttavia, dipende anche dall’hardware del ricevitore utilizzato.
Impostazioni tipiche
Impostazioni tipiche per l’uso sul desktop, ad esempio tra un microcontrollore e un programma emulatore aterminal come “Tera Term”:
Baud | 9600 |
Data bits | 8 |
Parity | None |
Stop bits | 1 |
Flow Control | None |
This can also be compactly written as:
9600 8N1
Hardware Connections 3 (Rx,Tx,GND) – Rx and Tx crossed over.,
“Controllo di flusso” nell’elenco precedente si riferisce a un metodo di segnalazione del controllo di flusso hardware che utilizza i segnali DTR/DSR e RTS/CTS. Vedi qui per ulteriori informazioni su questo.
Come funziona RS232 – Livelli di segnale
Ad un certo punto potresti voler creare un UART software forse per salvare lo spazio di codice nel tuo progetto attuale (forse non hai bisogno della parte di ricezione – dato che stai solo emettendo variabili) o per usare un pin di riserva.
Nota: è possibile trovare ricevere e transmitsoftware USART codice nel 12F675 Tutorialpages.,
Per crearlo hai bisogno dei diagrammi di segnale effettivi che vedi al pin del microcontrollore (stranamente questi sono difficili da trovare sul web).
Il seguente diagramma mostra il flusso di bit 0V e 5V temporizzato al pin di uscita del microcontrollore. Il diagramma inferiore mostra i livelli di segnale tradotti ai driver di uscita RS232 che vengono trasmessi tramite il cavo seriale.
Questi livelli più alti sono generati inviando i livelli logici 0 – 5V al chip atransceiver, ad es., MAX232 che ha un diodo / condensatore boost conveter builtin che aumenta i livelli di segnale per la richiesta RS232 voltageof ±12 volt. Si noti come il livello-12V corrisponde a un ‘ 1 ‘logico e + 12Vlevel corrisponde a un’ 0 ‘ logico.
La forma d’onda in basso nella bove diagramma precedente mostra la RS232signal che si vedrebbero utilizzando un oscilloscopio sull’uscita in auto ofa traduttore chip come il MAX232. Si noti che l’idlevoltage RS232 è-12V,
RS232 Clock
Il diagramma sopra mostra anche il timingdiagram RS232 dove ogni periodo di bit è 1 / frequenza quindi per abaud rate di 9600 bps (bit al secondo) il periodo di ogni bit è 1/9600 o104.,166us questo è effettivamente il periodo di clock RS232 richiesto per la velocità di trasmissione specifica in uso.
Forma d’onda RS232
Nel diagramma sopra la forma d’onda inferiore mostra il segnale di tensione RS232 che ci si può aspettare di vedere all’uscita del pin RS232 TX(anche gli stessi livelli sul pin RX) su un oscilloscopio. In alcuni chip themaximum livello del segnale non può essere ±12V – la tensione massima e minima potrebbe besmaller (come non ci sarà una grande caduta di tensione su brevi distanze)., Le distanze di Forlong queste dovrebbero essere ±12V – all’estremità di un cavo lungo la tensione scenderà giù attraverso la resistenza del cavo ma deve essere più di ±3V all’altra estremità.
La capacità del cavo rallenterà anche i bordi di salita e discesa-arrotondandoli.
Come funziona RS232 – Segnali di Handshake
I segnali di Handshake sono semplicemente un metodo per fermare il flusso dei dati. Se una parte del sistema è occupata, potrebbe non essere in grado di accettare più dati e piuttosto che perderli i segnali vengono utilizzati a ciascuna estremità del collegamento per interrompere la trasmissione dei dati., Esistono due tipi utilizzatiin RS232: stretta di mano hardware e stretta di mano software.
Stretta di mano hardware
- DTR – Terminale dati pronto.
- DSR-Set di dati pronto.
- RTS-Richiesta da inviare.
- CTS-Cancella per inviare.
Se si utilizzano questi segnali, devono essere trasmessi a livelli theRS232 cioè ±25V (o qualsiasi tensione generata dal chip translator, ad esempio ±12V, ovvero lo stesso dell’uscita TX, quindi è necessario un chip RS232 con più traduttori di livello per trasmettere e ricevere i segnali.,
Ricorda che il protocollo era basato su un modem (il DCE o DataCommunication Equipment) seduto su una scrivania e collegato (tramite RS232)al PC (il DTE o Data Terminal Equipment) – il controller. C’è anche un indicatore di anello (RI) che segnala quando il telefono squillava,collegato direttamente alla linea telefonica, che consentirebbe il rilevamento automatico del modemdetection di un flusso di dati in entrata.
Ogni segnale non è ortogonale, il che significa che non c’è un segnale equivalente che risale dall’altra parte., Questa parte del protocollo è cresciuta in modo straordinario, quindi ci sono diversi usi di questi segnali, ma in generale viene utilizzato il seguente:
Per fermare i dati provenienti dal PC, ovvero per fermare la sopraffazione del modem con i dati:
- da RTS (PC) a modem.
- CTS (modem) al PC.
Il PC afferma RTS per indicare che vuole trasmettere dati al modem.
Il modem afferma CTS per ricevere dati dal PC.
Per fermare i dati provenienti dal modem cioè per fermare travolgere il PC con i dati:
- DTR (PC) al modem.
- DSR (modem) al PC.,
Il modem afferma DSR per indicare che vuole trasmettere dati al PC.
Il PC afferma DTR per ricevere dati dal modem.
Handshake software
Se vedi i termini XON e XOFF questo è un metodo di controllo del flusso del software in cui il ricevitore trasmette un carattere speciale (nell’ASCIIset) per dire al trasmettitore di interrompere l’invio dei dati. Quando il ricevitore hasrecovered (un buffer si sta svuotando) allora può trasmettere il segnale XON totell il trasmettitore per riavviare la trasmissione.