Sei sulla pagina 1di 23

Comunicazione UART in TinyOS

Invio e ricezione di pacchetti tramite il protocollo UART


Un po’ di storia…

 Gordon Bell del DEC progettò la prima UART, che occupava un intero circuito
chiamato line unit. Ciò risale al 1969.
 Western Digital lo sviluppò nel primo UART on chip, il WD1402A, intorno al
1971. Questo fu un primo esempio di circuito integrato di media grandezza.
 Un esempio di un UART dei primi anni '80 era il National Semiconductor
8250, usato nella scheda Asynchronous Communications Adapter del PC IBM
originale.
 Negli anni '90, furono sviluppati UART più recenti con buffer on-chip.
 A partire dagli anni 2000, la maggior parte dei computer hanno rimosso le loro
porte COM RS-232 esterne e hanno usato porte USB che possono inviare dati
più velocemente, tuttavia molti chip hanno UART integrati per dare ai
progettisti di hardware la possibilità di interfacciarsi con altri dispositivi
utilizzando questo protocollo.
Caratteristiche

 UART è acronimo di Universal Asynchronous Receiver - Transmitter.


 È un tipo di comunicazione seriale, che avviene mediante due fili (oltre il
GND) ed è quindi meno costosa della trasmissione parallela attraverso più fili.

 La comunicazione può essere simplex, full duplex o half duplex.


Baud rate e parametri

 I due dispositivi non condividono un segnale di temporizzazione, perciò è


necessario che entrambe le estremità trasmettano alla stessa velocità
prestabilita per avere la stessa tempistica dei bit.
 Oltre ad avere lo stesso baud rate, entrambi i lati di una connessione UART
devono utilizzare la stessa struttura del pacchetto, quindi gli stessi parametri.
 I parametri configurabili sono:

Baud rate Parità Lunghezza dati Stop bit


4800, 9600, N = None
19200, 38400, E = Even 5,6,7,8,9. 1,2
57600, 115200. O = Odd
Frame

 Un frame UART è formato da:

 Lo stato di idle, senza dati, è a livello logico alto.


 Ogni frame è formato da un bit di inizio, bit di dati, eventualmente un bit di
parità e uno o più bit di stop.
 Se la linea è tenuta nella condizione logica bassa per più di un tempo di carattere,
si ha una condizione di rottura che può essere rilevata dall'UART.
Hardware

 In generale UART necessita almeno dei seguenti componenti:


 Un generatore di clock (Baud rate)
 Shift registers per RX e TX
 Logica di controllo per RX e TX
 Logica di controllo per lettura e scrittura dei dati
UART su MSP430F1611
UART su TelosB

 Le porte che permettono la comunicazione UART su TelosB sono:


Interface: UartStream/UartByte

 L'interfaccia è divisa in un'interfaccia asincrona di livello multi-byte e


un'interfaccia sincrona di livello single-byte.
 L'interfaccia a livello multi-byte, UartStream, fornisce un'interfaccia split –
phase per inviare e ricevere uno o più byte alla volta.

UartByte
Component: Msp430Uart0C

 Nel percorso tos/chips/msp430/usart troviamo il generic component da


utilizzare, ovvero MSP430Uart0C:

 Le possibili interfacce utilizzabili nella nostra applicazione sono Resource,


ResourceRequested, UartStream e UartByte.
 Bisogna fornire una configurazione tramite l’interfaccia
Msp430UartConfigure.
Configuration: Msp430UartConfigure

 Nello stesso percorso troviamo il command per la configurazione dello UART.

 Di default la configurazione è la seguente:


Configuration: Msp430UartConfigure

 Nel file tos/chips/msp430/usart/msp430usart.h è possibile capire su quali


parametri è possibile agire per cambiare la configurazione.
Esempio di comunicazione

 Nell’esempio faremo comunicare il dato sulla temperatura da TelosB a


Arduino e un generico dato da Arduino a TelosB.
Esempio di comunicazione: TelosB

 La configurazione e i component utilizzati sono i seguenti:


Esempio di comunicazione: TelosB

 Il codice del component creato è il seguente:


Esempio di comunicazione: TelosB

 Il codice del component creato è il seguente:


Esempio di comunicazione: TelosB

 Il codice del component creato è il seguente:


Esempio di comunicazione: TelosB

 Il codice del component creato è il seguente:


Esempio di comunicazione: TelosB

 Il codice del component creato è il seguente:

 E il Makefile…
Esempio di comunicazione: Arduino

 Per implementare la comunicazione seriale su Arduino è stata utilizzata la


libreria SoftwareSerial. Il codice è il seguente:
Esempio di comunicazione: Arduino

 Per implementare la comunicazione seriale su Arduino è stata utilizzata la


libreria SoftwareSerial. Il codice è il seguente:
Esempio di comunicazione: Arduino

 Per implementare la comunicazione seriale su Arduino è stata utilizzata la


libreria SoftwareSerial. Il codice è il seguente:
Grazie per l’attenzione

Potrebbero piacerti anche