EO 515

COMM SERIAL BUSES Il bus SPI è un bus a 4 fili che può essere considerato come un buffer circolare, poiché i dati vengono tra- smessi e ricevuti simultaneamente sia dal master sia dal dispositivo slave e sincronizzati da un segnale di clock, mentre i singoli dispositivi vengono selezionati da un pin aggiuntivo. La figura 1 mostra un tipico si- stema SPI. Il bus SPI ha tipicamente un unico bus master che ge- stisce tutti i trasferimenti del bus. Sono possibili più bus master, ma ciò comporta un notevole aumento del- la complessità del sistema. Il bus è composto da almeno 4 segnali: CLK: Serial Clock che viene emesso dal master MOSI: Master Out Slave In dove i dati vengono emessi dal master MISO: Master In Slave Out dove i dati vengono emessi da un dispositivo slave CS/SS: Chip o Slave Select che viene emesso dal master e viene utilizzato per selezionare un particolare dispo- sitivo slave e per indicare l’invio dei dati. Anche se SPI utilizza molti pin per il bus, questa è co- munque in grado di funzionare a velocità elevate e al- cuni dispositivi supportano velocità di trasferimen- to fino a 60 MHz o anche superiori. Recentemente, le specifiche sono state ulteriormente ampliate in termi- ni di numero di linee dati, con il bus Quad SPI (QSPI) che è diventato una periferica comune. Esso prevede funzionalità avanzate come Execute in Place (XiP) per consentire alle applicazioni di essere eseguite diretta- mente dalla memoria seriale e prelevare (fetch) i dati a velocità estremamente elevate. SPI presenta numerosi vantaggi, tra cui il supporto per le comunicazioni full duplex, alta velocità e un mecca- nismo di comunicazione semplice che richiede un dri- ver software semplice e facile da sviluppare. Nel dia- gramma a blocchi di una tipica applicazione SPI nella figura 1, è chiaro che sono necessari molti pin di I/O per supportare il trasferimento dati, soprattutto quan- do vengono utilizzate più periferiche. Nel tempo sono apparse differenti versioni di SPI, e questo ha contribuito a complicare la scelta di periferi- che specifiche, per le differenze introdotte nei fronti e nella polarità del clock. Bus I 2 C Un altro bus seriale molto diffuso è I 2 C (Inter Integrated Circuit), sviluppato per la prima volta da Philips negli anni 80. Il bus I 2 C utilizza due segnali bidirezionali open drain, la linea dati seriale (SDA) e la linea di clock seriale (SCL) per trasmettere clock e dati. Ciascuna li- nea di segnale è collegata a una resistenza pull-up. I 2 C supporta un protocollo in cui nel messaggio sono codificati un indirizzo a 7 bit del dispositivo slave e in- formazioni di registro aggiuntive. Grazie alla configu- razione del bus con l’uso di uscite open drain, è possibile supportare facilmente il funzionamento multi-master. I 2 C ha subito numerose revisioni nel corso degli anni. Le versioni iniziali supportavano solamente velocità di trasferimento dati fino a 100 kbps, mentre le versioni più recenti supportano velocità più elevate – fino a 3,4 Mbps in modalità ad alta velocità, oltre a funzionalità aggiuntive come l’indirizzamento a 10 bit. La figura 2 illustra una tipica configurazione del bus I 2 C. Il bus I 2 C è stato sottoposto a numerose revisioni da quando è stato inizialmente rilasciato. Ora può suppor- tare velocità di trasferimento dati fino a 5 Mbps. L’uso di un protocollo più complesso consente agli utenti di creare sistemi più complessi con più bus master uti- lizzando solo due pin; tuttavia, i driver software per i dispositivi I 2 C tendono ad essere più complicati. Un altro grande svantaggio dei bus SPI e I 2 C è che nes- suno dei due può implementare gli interrupt all’interno delle proprie strutture di bus; quindi, se le periferiche seriali previste devono generare interrupt, è necessa- rio il collegamento a pin aggiuntivi sul microcontrol- lore, con il ricorso a un ulteriore segnale di I/O esterno sia nella figura 1 che nella figura 2. Fig. 2 - Tipica configurazione del bus I 2 C ELETTRONICA OGGI 515 - GENNAIO/FEBBRAIO 2024 52

RkJQdWJsaXNoZXIy Mzg4NjYz