Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
UART
La UART (Universal Asynchronous Receiver-Transmitter) è un'interfaccia usata per mettere in comunicazione microcontrollori e altri dispositivi di calcolo, spesso può essere presente anche come USART (Universal Synchronous-Asynchronous Receiver-Transmitter). Questa interfaccia è in grado di implementare questa comunicazione tramite una coppia di conversioni basate su shift registers: TX (parallelo → seriale) e RX (seriale → parallelo). Il protocollo UART è asincrono, quindi non esiste tra i dispositivi comunicanti un clock condiviso, e si prevede quindi che le periferiche in questione lavorino alla stessa frequenza nella loro interfaccia UART. A tale scopo sono definite alcune frequenze standardizzate baudrates utili per la comunicazione. La mancanza di un clock condiviso porta a difficoltà nell'individuare aree di campionamento per il dato. Un enorme vantaggio di questa interfaccia è la sua alta configurabilità.identificabile in:
- Presenza o assenza di parity bit
- Comunicazione di tipo simplex, half-duplex o full-duplex
- Data framing
Si hanno diverse fasi di trasferimento di un dato tra microcontrollore e periferica slave:
- IDLE: fase in cui non avviene ancora nessun trasferimento. La linea di trasmissione è pilotata a '1'
- Inizio del trasferimento con uno start bit, in particolare la linea di trasmissione è portata a '0' per indicare l'avvio del trasferimento. Una volta trasmesso lo start bit viene mandato un simbolo di numero di bit variabile (da 5 a 9, solitamente 8 bit perché rappresenta un carattere ASCII) rappresentante il dato da trasmettere, si tratta dei data bits
- Uno dei data bits potrebbe essere usato come parity bit (o bit di parità), utile a verificare la corretta esecuzione della trasmissione. Il bit di parità può essere calcolato tramite uno XOR dei data bits
(odd parity o dispari) oppure tramite uno XNOR (even parity o pari), esso viene poi confrontato dal ricevitore con la stringa ricevuta e, in caso di incongruenza, si ha un errore di trasmissione.
4. Il trasferimento termina alla ricezione di 1 o 2 stop bits (a seconda dell'applicazione), in questa circostanza la linea di trasmissione viene riportata a '1'
Il protocollo UART include anche un handshake fra trasmettitore e ricevitore, in tal caso sono previsti due diversi segnali: RTS (Request To Send. Mandato dal microcontrollore al dispositivo per segnalare la possibilità di accettare nuovi dati da parte del microcontrollore) e CTS (Clear To Send. Mandato dal dispositivo al microcontrollore per segnalare la possibilità di inviare nuovi dati da parte del dispositivo), ovviamente i segnali possono essere visti in significato duale se trasmettitore e ricevitore hanno ruoli invertiti. La USART è la versione sincrona della UART e può operare in
modosincrono o asincrono, risolve il problema della lentezza ma ovviamente viene utilizzato un pin in più del microcontrollore per implementarla (oltre al dato viene passato anche un clock), vengono eliminati start bit, stop bit e parity bit (per interrompere la trasmissione basta inviare uno ‘0’ sul clock), vengono trasmessi un numero arbitrario di bit a frequenze in generale più elevate. Unico svantaggio è la possibilità di comunicare solo in modo half-duplex, mentre nella UART si ha anche una comunicazione di tipo full-duplex in caso di necessità.
I2C
La I2C (si pronuncia I-quadro-C. Inter-Integrated Circuit Bus) è un’interfaccia molto vecchia usata per comunicare con periferiche a bassa banda, essa è particolarmente utile per la possibilità di connettere più dispositivi molto lenti tra loro, infatti la I2C supporta una modalità multi-master di interessante applicazione nel caso di presenza di più dispositivi.
microcontrollori all'interno dello stesso sistema. Tale interfaccia ha tre diverse modalità di funzionamento relative alla velocità:
- Slow (sotto i 100 Kbps)
- Fast (circa 400 Kbps)
- High-speed (circa 3.4 Mbps), disponibile solo dalla versione 2.0
In generale la velocità della I2C dipende dalla lunghezza dei collegamenti (aumenta la lunghezza e diminuisce la velocità), la quale ha un valore massimo standardizzato di 3 metri. La comunicazione su questa interfaccia è di tipo half-duplex (transito dei dati da master a slave o viceversa, ma non in parallelo) e sincrona, essa si basa su due linee: SCL (clock) e SDA (dato). Una delle peculiarità di questo bus è la sola presenza dello stadio di pull-down composto da driver open-drain, mentre lo stadio di pull-up è composto di soli resistori, tale configurazione vale sia per slave che per master.
Le fasi di trasferimento di un dato tramite I2C (in scrittura) sono:
- IDLE:
- MISO (Master-In, Slave-Out data)
- MOSI (Master-Out, Slave In data)
- SCK (clock)
- CSN (chip select, ogni slave ne ha uno ed è attivo basso)
- TCK: si tratta del Test Clock, utile a sincronizzare la trasmissione e le operazioni
- TMS: si tratta del Test Mode Select, definisce la modalità di funzionamento in uno specifico istante (modalità test o modalità functional)
- TDI: si tratta del Test Data In, rappresenta i dati inseriti nel dispositivo (tipicamente è campionato al fronte di salita del TCK)
- TDO: si tratta del Test Data Out, rappresenta i dati che escono dal dispositivo, ovvero i dati letti (tipicamente
entrambe le linee (SCL e SDA) sono pilotate a '1'.
La comunicazione viene inizializzata dal master, il quale porta la SDA a '0' (mantenendo SCL a '1'), a questo punto viene generato il clock sulla SCL.
Figura 30 - I2C interface protocol
la SDA torna a 0. Tutti gli slave simettono in ascolto 243.
Il master trasmette un indirizzo a variabile numero di bit (da 7 a 10) corrispondente allo slave target che eseguirà l'operazione richiesta tramite la SDA.
Il master trasmette un direction bit di valore '0' se il trasferimento prevede una scrittura da master a slave, o '1' se il trasferimento prevede una lettura da slave a master.
Lo slave manda un segnale di acknowledgement al master portando a '0' la SDA e notificando la ricezione del suo indirizzo, in caso di mancanza di questo segnale il master deve ripetere la transizione.
Il master trasmette i dati allo slave in pacchetti da 8 bit e lo slave notifica la
La ricezione tramite il bit di acknowledgement (uno per ogni pacchetto di dati).
Alla fine del trasferimento il master trasmette uno stop bit portando SDA a '0', rilasciando la SCL (che torna a valore costante '1') e rilasciando la SDA (che torna a valore costante '1').
La lettura è similare ma con lo slave che pilota il SDA in trasmissione e il master che notifica la ricezione tramite il bit di acknowledgement. In caso di necessità, il protocollo I2C consente allo slave di chiedere più tempo per processare un singolo bit tramite la clock stretching, ovvero la SCL viene pilotata dallo slave a '0' per il tempo necessario al processo. È evidente notare che il bit di acknowledgement sia pilotato a '0'.
SPI
La SPI (Serial Peripheral Interface) è un'interfaccia datata con caratteristica fondamentale la velocità, quindi conseguentemente la minima lunghezza dei wires e la sua implementazione su
Questa interfaccia non è standard per quanto riguarda i nomi ed altri aspetti, da molta autonomia al progettista quindi generando anche confusione però. La presenza del segnale di clock consente a questa periferica di essere più veloce della UART e i driver consentono ad essa di essere più veloce della I2C (sono driver push-pull). La SPI non definisce un protocollo di alto livello come accadeva per UART e I2C, ma solo come comunicare i dati, infatti vi sono 4 possibili modalità di
Il funzionamento in base alla polarità del clock (CPOL) e alla sua fase (CPHA) nella interfaccia SPI è il seguente: - CPOL=0 e CPHA=0 - CPOL=0 e CPHA=1 - CPOL=1 e CPHA=0 - CPOL=1 e CPHA=1 Nell'interfaccia SPI è possibile collegare più periferiche al bus tramite due diverse modalità: - Daisy-chain: è presente un solo slave select attivo basso e propagato a tutti gli slave. La catena di passaggio dei dati vede il MOSI del master collegarsi al MOSI del primo slave, successivamente il MISO del primo slave collegarsi al MOSI del secondo e così via a catena. Conseguentemente, la presenza di un unico slave select riduce di molto l'overhead, ma la latenza è molto alta visto che il master per scrivere su uno slave deve prima shiftare tutti i precedenti. - Independent: ogni periferica ha il proprio slave select indipendente, quindi il master può selezionare direttamente la periferica con cui vuole comunicare. Questa modalità permette una latenza più bassa rispetto alla modalità Daisy-chain, ma richiede più linee di controllo. Figura 31 - SPI interface protocol Figura 32 - Daisy-chainconfiguration: è presente uno slave select diverso per ogni slave e quindi l'overhead aumenta sicuramente, ma migliora la latenza. Occorre prestare attenzione in questo caso a non pilotare più di uno slave contemporaneamente al fine di evitare conflitti elettrici e dissipazioni aggiuntive.
JTAG
Il JTAG (Join Test Action Group) è un protocollo usato fondamentalmente per il debug delle periferiche, composto di 5 segnali:
è campionato al fronte di discesa del TCK)
TRST: si tratta del Test Reset, segnale facoltativo che resetta la macchina a stati
Il JTAG viene utilizzato solo in fase di test e non nel funzionamento reale del microcontrollore
all’interno delle sue applicazioni, quindi viene solitamente disabilitato per motivi di sicurezza prima
dell’installazione del microcontrollore sui sistemi embedded.
OTTAVO BLOCCO DI SLIDE (09-ADC)
ADC INTERFACES
In introduzione ai convertitori di segnale occorre definire la netta distinzione tra segnali analogici e
segnali digitali:
• Segnali analogici: sono segnali continui nel tempo e nello spazio i cui valori rappresentativi
sono nel tempo in funzione di altri, misurano quindi una quantità in funzione di un’altra
• Segnali digitali: sono segnali binari, dunque che consistono nella presenza di due soli stati.
Sono gli unici segnali che il microprocessore e i computer in generale sono in grado di
process