Serial Communication | Cerca per titolo, autore, parola chiave | ||||||||
Serial Communication sparkfun.com. L'elettronica embedded consiste nel connettere circuiti (processori o altri circuiti integrati) per creare un sistema simbiotico. Affinché questi circuiti possano scambiarsi informazioni, è necessario che condividano un protocollo di comunicazione comune. Sono stati definiti centinaia di protocolli, a questo scopo, e, in generale, ciascuno di essi rientra in una delle due grandi categorie: parallelo o seriale. Un'interfaccia parallela trasferisce più bit contemporaneamente (nello stesso istante). Normalmente, si serve di bus (piste) di dati - composti da otto, sedici o più cavi. I dati vengono trasmessi attraverso onde di 1 e di 0. Questo è un bus di dati, controllato da un clock, che trasmette un byte ad ogni impulso del clock. Utilizza 9 cavi:
Le interfacce seriali, invece, trasportano i dati un bit alla volta. Possono utilizzare un solo cavo, pur arrivamdo ad utilizzarne anche fino a quattro, normalmente.
Questa è un'interfaccia seriale che trasmette un bit ad ogni impulso di clock. Richiede solo 2 cavi! Pensate ad un'autostrada a otto corsie e ad una a due corsie: la prima, in un determinato intervallo di tempo, trasporterà certamente più macchine, ma la seconda svolgerà egregiamente il suo compito ad un costo di produzione e di mantenimento molto più basso. Nel corso degli anni, sono stati creati diversi protocolli seriali: USB (Universal Serial Bus), Ethernet, sono le interfacce seriali più note. Interfacce seriali diffuse sono anche SPI (Serial Peripheral Interface) e I2C (Inter Integrated Circuit). Le interfacce seriali possono essere:
I meccanismi utilizzati per escludere il segnale esterno di clock sono:
Esistono diversi meccanismi di signaling: quindi, esistono più modi per inviare dati su una linea seriale. Il protocollo è altamente configurabile: la parte critica è assicurarsi che entrambe le periferiche su una linea seriale abbiano adottato esattamente gli stessi protocolli. Ciascun blocco di dati trasmesso (normalmente, un byte) viene inviato in un pacchetto (packet o frame) di bit. Le frame vengono create aggiungendo ai nostri dati i bit di sincronizzazione e di parity. Naturalmente, la polpa di ogni pacchetto seriale è l'insieme dei dati che trasporta. Noi chiamiamo questo blocco di dati chunk, semplicemente perché le sue dimensioni non sono definite. La quantità di dati contenuti in un pacchetto può variare dai 5 ai 9 bit. Naturalmente, la dimensione standard dovrebbe essere il byte (8-bit), ma vengono usate anche altre dimensioni. Un chunk di 7-bit potrebbe essere più efficiente degli otto bit, soprattutto se stiamo trasferendo caratteri ASCII a sette bit. Una volta accordatisi sulla lunghezza dei caratteri, le due periferiche dovranno accordarsi anche sull'endianness dei loro dati. I dati verranno inviati con il bit più significativo (most-significant bit, o msb) per primo o viceversa? Se non altrimenti specificato, dovrete assumere che i dati verranno trasmessi inviando, per primo, il bit meno significativo (least-significant bit o lsb).
Uno dei protocolli seriali più comuni è 9600 8N1: 9600 baud, 8 data bit, no parity, 1 stop bit. Per trasmettere i caratteri ASCII O (01001111) e K (01001011), il protocollo creerà due pacchetti di dati. Visto che stiamo trasmettendo a 9600 bps, il tempo necessario per tenere ciascuno di quei bit high o low è 1/(9600 bps) o 104 µs per bit. Per ciascun byte di dati trasmesso, vengono inviati 10 bit: uno start bit, 8 data bit, uno stop bit. A 9600 bps, trasmetteremo 9600 bit al secondo o 960 (9600/10) byte al secondo. Ora che conosciamo i pacchetti seriali di dati, affrontiamo la parte hardware.
Un bus seriale è fatto da soli due cavi - uno per inviare i dati, l'altro per ricevere i dati. Quindi, le periferiche seriali devono avere due pin seriali: il ricevente (receiver), RX, il trasmittente (transmitter), TX. Da notare che il pin RX di una periferica è collegato al pin TX dell'altra, e viceversa, perché l'apparato trasmittente di una periferica deve parlare con l'apparato ricevente dell'altra periferica, non con quello trasmittente. Un'interfaccia seriale in cui entrambe le periferiche devono inviare e ricevere dati può essere full-duplex o half-duplex. Full-duplex significa che le due periferiche possono inviare e ricevere dati simultaneamente. Half-duplex significa che le due periferiche devono inviare o ricevere a turno.
|
|||||||||
Serial Communication | Disclaimer: questo è un link a contenuti ospitati su server esterni. |