Differenza tra UART e RS-232?


80

Il più delle volte RS-232 e UART si fondono in teorie della comunicazione seriale. Sono entrambi uguali? Dalle mie letture ho concluso che UART è una forma hardware del protocollo RS-232. Ho ragione?


1
Le risposte di cui sopra hanno fornito approfondimenti sulle differenze. Ma vorrei aggiungere a quelle risposte aggiungendo un link di National Instruments che discute questo argomento in modo dettagliato. Di seguito è riportato il collegamento: RS-232, RS-422, RS-485 Concetti generali sulla comunicazione seriale
devangmotwani,

Risposte:


80

No, UART e RS-232 non sono uguali.

UART è responsabile dell'invio e della ricezione di una sequenza di bit. All'uscita di un UART questi bit sono generalmente rappresentati da tensioni di livello logico. Questi bit possono diventare RS-232, RS-422, RS-485 o forse alcune specifiche proprietarie.

RS-232 specifica i livelli di tensione . Si noti che alcuni di questi livelli di tensione sono negativi e possono anche raggiungere ± 15 V. Un'oscillazione di tensione maggiore rende RS-232 più resistente alle interferenze (anche se solo in una certa misura).

Un microcontrollore UART non può generare tali livelli di tensione da solo. Questo viene fatto con l'aiuto di un componente aggiuntivo: il driver di linea RS-232. Un classico esempio di un driver di linea RS-232 è MAX232 . Se si passa attraverso la scheda tecnica, si noterà che questo IC ha una pompa di carica, che genera ± 10 V da + 5 V.

inserisci qui la descrizione dell'immagine ( fonte )


4
La definizione RS-232 che ho letto non parla affatto di una sequenza di bit o temporizzazione. In realtà non ho mai trovato uno standard ufficiale che descriva il protocollo start-stop NRZ asincrono.
Wouter van Ooijen,

1
RS-232 non specifica la sequenza di bit.
slebetman,

Apparentemente, lo sviluppo del formato dei caratteri UART è stato così dominato dalla compagnia telefonica Bell che non sono nate varianti. Di conseguenza, il formato dei bit di avvio / dati / parità / stop non è mai stato oggetto di uno standard indipendente. L'uso nel settore era così uniforme che non era richiesta una definizione "ufficiale". Questo non era vero per i collegamenti fisici, quindi è stato sviluppato RS-232.
WhatRoughBeast

3
I formati dei caratteri UART precedono i modem di Bell, era in hardware Teletype (a otto bit con parità) in ASCII e Baudot prima.
3

34

UART (o USART) - Ricevitore / trasmettitore asincrono universale (sincrono)

Questa è, essenzialmente, un'interfaccia di comunicazione seriale. La parte "universale" significa che può essere configurata per supportare molti protocolli seriali specifici diversi. Il termine è generico e non rappresenta uno standard specifico. Almeno significa che ha una TXe una RXlinea, che invia un flusso di dati seriali e riceve un flusso di dati seriali.

RS-232 - Uno standard che definisce i segnali tra due dispositivi, definendo i nomi dei segnali, il loro scopo, i livelli di tensione, i connettori e le piedinature.

Questo è uno standard di interfaccia specifico che consente l'interoperabilità delle apparecchiature. Mentre due componenti hardware possono avere UART, non sai che si collegheranno senza danni o comunicheranno correttamente a meno che tu non sappia che hanno gli stessi standard di pinout e voltaggio, o includono un convertitore o un cavo appositamente cablato specifico per l'interconnessione di questi due dispositivi specifici. Per evitare la necessità di convertitori o cavi speciali, i produttori possono scegliere di seguire lo standard RS-232. Sai, quindi, che un cavo RS-232 standard collegherà i due.

Tuttavia, né l'UART, né lo standard RS-232 definiscono ciò che viene inviato sulle linee TXe RX. Generalmente, quando le persone usano RS-232, usano una semplice codifica NRZ a 8 bit con un bit di avvio e un bit di stop. La maggior parte delle apparecchiature prodotte oggi utilizza questa codifica, ma non è necessario farlo. È possibile trovare apparecchiature meno recenti che includono bit di parità o che utilizzano 7 o 9 bit. L'UART può essere configurato per supportare questi vari protocolli su di esso TXe RXlinee.

Gli UART in genere non si interfacciano direttamente con RS-232. Sarà necessario convertire l'uscita dell'UART nello standard +/- 12V richiesto da RS-232. Un'interfaccia RS-232 completa coinvolge in genere sia un convertitore di livello UART che un convertitore RS-232. Inoltre, lo standard RS-232 comprende la definizione di diversi altri segnalazione spilli oltre TXe RXche potrebbe essere necessario utilizzare a seconda delle attrezzature necessarie per connettersi. Questi dovranno anche essere convertiti a livello e l'UART potrebbe o meno supportare questi segnali. In caso contrario, dovrai controllarli direttamente con il tuo software / firmware.

Pertanto, mentre un UART può aiutarti a implementare un'interfaccia RS-232, non è un'interfaccia RS-232 stessa.


Cavo RS-232 standard? Non esiste nulla del genere. Nella borsa del mio equipaggiamento ho una dozzina di adattatori per RS-232. RS-232 specifica un connettore DB-25, ma ho visto DD-9, RJ45, din8 e altri connettori, e oltre a collegare un modem a un PC non sono mai stato in grado di utilizzare un cavo COTS per qualsiasi progetto RS232. Fortunatamente il 90% delle volte che fanno un paio di adattatori o un cavo personalizzato, sono facili da realizzare.
hildred,

Solo per la cronaca: penso che la "S" di USART sia "Synchronous", non "Serial". Vedi qui . Gli USART sono "estensioni" sui chip UART più vecchi che consentono anche modalità di comunicazione sincrone.
Lorenzo Donati,

14

Le funzioni UART consentono di convertire i dati paralleli dalle linee del bus PC in dati seriali per la trasmissione tramite driver di linea ai dispositivi RS-232, RS-422 e RS-485 . Il pin del clock del chip UART è alimentato da una sorgente di clock programmabile. La velocità di clock è determinata dalla configurazione della velocità di trasmissione che il dispositivo utilizzerà. La velocità di clock è 16 volte la velocità di trasmissione. Posizionare una sonda dell'oscilloscopio sul pin di un chip UART e determinare la frequenza, quindi dividere per 16 è un modo per determinare una velocità di trasmissione sconosciuta.


5
+1 per "convertire dati paralleli in dati seriali", nessun'altra risposta qui menziona questo.
TisteAndii,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.