Voglio fare una comunicazione tra il mio PIC18F4550 e il mio PC, ma mi sto bloccando se dovrei usare UART o USART per lunghe distanze. Quando è più vantaggioso usare l'uno invece dell'altro?
Voglio fare una comunicazione tra il mio PIC18F4550 e il mio PC, ma mi sto bloccando se dovrei usare UART o USART per lunghe distanze. Quando è più vantaggioso usare l'uno invece dell'altro?
Risposte:
Per i tuoi scopi, UART e USART sono la stessa cosa. UART è sinonimo di ricevitore / trasmettitore asincrono universale . La S aggiuntiva in USART sta per sincrono . È solo una piccola aggiunta di Microchip al modulo per renderlo più utile in alcuni casi. Quella capacità extra non si applica al tuo caso.
La porta COM del PC richiede solo un UART con cui parlare. Il fatto che USART avrebbe potuto essere utilizzato in un modo diverso è irrilevante per te, tranne che forse hai alcuni bit di configurazione aggiuntivi che devono essere impostati nel modo giusto.
Risposta breve: utilizzare quello che ha il chip
Per esaminare a fondo la domanda, è necessario decodificare gli acronimi:
Un U niversal Un sincrono R eceiver T rasmettitore è proprio tradizionale "porta seriale". È asincrono nel senso che è coinvolto un solo segnale: non viene trasmesso alcun orologio e invece il ricevitore deve recuperare un orologio, in genere mediante sovracampionamento.
Al contrario, un U niversal S ynchronous Un sincrono R eceiver T rasmettitore è un dispositivo più versatile con stile UART asincrone modi, ma che può anche essere configurata per operare in sincrono modi in cui un orologio viene inviato insieme ai dati. A seconda della capacità, ciò potrebbe includere l'interoperabilità con formati seriali sincroni noti, ad esempio SPI o I2S.
Alcune MCU possono offrire entrambi i tipi di periferiche. Per un'esigenza seriale asincrona di base è possibile scegliere uno dei due. Tuttavia, la scelta potrebbe essere influenzata dai pin su cui può funzionare una determinata periferica, da altre esigenze del sistema, ecc. Un bootloader ROM di fabbrica potrebbe funzionare solo su alcune periferiche e non su altre. Potrebbero inoltre esserci differenze nel supporto del buffer, nella lunghezza delle parole, nel supporto di parità, nei segnali di controllo associati, ecc. E l'interfaccia del software potrebbe essere completamente diversa tra i due.
Sono sostanzialmente la stessa cosa per il tuo microcontrollore.
USART sta per ricevitore / trasmettitore universale asincrono e sincrono. UART è sinonimo di ricevitore / trasmettitore asincrono universale.
La trasmissione asincrona dei dati verrebbe utilizzata nella maggior parte dei casi in questo protocollo di comunicazione. La trasmissione di dati sincroni viene utilizzata raramente perché si dispone di un protocollo di comunicazione sincrona molto migliore come SPI e I2C.
Il microcontrollore (MCU) ha al suo interno un ricevitore / trasmettitore sincrono / asincrono universale (USART). Questa unità funzionale supporta una modalità di comunicazione sincrona e una modalità di comunicazione asincrona.
In modalità sincrona, il trasmettitore Tx è collegato al ricevitore Rx tramite un cavo CLOCK e un cavo DATA. Una volta per periodo di CLOCK, Tx invia un altro bit su DATA e Rx prende un altro bit da DATA. I tempi di trasferimento sono regolati da CLOCK e quindi noti sia a Tx che a Rx. Quindi sia Tx che Rx possono usare bit rate più alti rispetto alla modalità asincrona.
Tuttavia, sono necessari due fili / pin del connettore anziché uno e un'eccessiva inclinazione o jitter tra CLOCK e DATA comporta la ricezione di dati danneggiati. I tempi all'interno dei driver di linea e dei ricevitori di linea che trasportano CLOCK e DATA devono essere strettamente abbinati per ridurre l'inclinazione. Sia l'interfaccia che i fattori a due fili diventano più importanti su distanze più lunghe, con cavi lunghi e / o luppoli di connessione multipli.
In modalità asincrona, il trasmettitore Tx è collegato al ricevitore Rx tramite un filo DATA. Una volta per periodo di bit temporizzato, Tx invia un altro bit su DATA e Rx prende un altro bit da DATA. I tempi di trasferimento sono regolati dagli oscillatori separati di frequenza in Tx e Rx, ognuno dei quali è sconosciuto all'altro e sarà leggermente diverso. Pertanto la velocità di trasmissione massima affidabile è inferiore rispetto alla modalità sincrona.
All'inizio di ogni nuovo byte, Rx utilizza la transizione di bit STOP-START iniziale per risincronizzarsi con il timing della sequenza di bit in arrivo. Ciò rende i ritardi da driver / ricevitori di linea, cavi e connettori irrilevanti per la tempistica del periodo di bit, sebbene non per la qualità dei bit. È necessario un solo filo per segnale di comunicazione anziché due, riducendo il costo in cavi, connettori e driver / ricevitori di linea.
Quindi dipende dai costi accettabili, dalle distanze percorse e dalle capacità di Tx e Rx. È probabile che il tuo PC supporti la modalità asincrona solo su una porta COM standard, che richiede una porta speciale (PCIe o USB, probabilmente USB) per la modalità sincrona.