Nella precedente lezione abbiamo introdotto il modulo SERCOM del SAMD21 e la modalità USART, abbiamo visto cosa sono gli interrupt e come questi vengono gestiti dal NVIC dei processori Cortex-M. In questa lezione continueremo lo studio del modulo SERCOM, introducendo un'altra modalità in cui questo può essere utilizzato: la SPI (Serial Peripheral Interface). Nello specifico utilizzeremo questa interfaccia seriale per comunicare con un display TFT a colori.
L'interfaccia SERCOM SPI - Serial Peripheral Interface: i driver del CMSIS e il framework ASF
Come abbiamo visto nella lezione scorsa il modulo SERCOM (SERial COMmunication) del SAMD21 può essere configurato per essere utilizzato in diverse modalità, ovvero USART, SPI e I2C. I moduli SERCOM presenti nel SAMD21 sono 6 (da SERCOM0 a SERCOM5) e ognuno ha a disposizione 4 pad (da PAD0 a PAD3) per i segnali della periferica (ogni pad può a sua volta essere assegnato a diversi pin di GPIO, rendendo la configurazione dei pin molto flessibile). Come visto, possiamo configurare il modulo SERCOM direttamente utilizzando le definizioni delle strutture messe a disposizione nei driver CMSIS, scrivendo i registri del modulo: le istanze del modulo SERCOM sono definite come puntatori a una union che contiene le diverse strutture che definiscono i register set delle varie modalità in cui può essere configurata la periferica USART, SPI, I2C master e I2C slave (Figura 1).
La struttura dei set di registri è analoga per le diverse modalità in cui può essere configurato il modulo SERCOM (ed è simile per tutte le periferiche del microcontrollore, rendendo facile programmare le diverse periferiche una volta imparata la struttura delle definizioni). Accedere direttamente ai registri ci consente una notevole flessiblità, ma come abbiamo fatto per la USART, è di gran lunga più facile utilizzare le funzioni e le definizioni messe a disposizione dal framework ASF di Atmel per configurare e utilizzare l'interfaccia SPI. Conoscere la struttura del CMSIS ci serve comunque per poter utilizzare le funzioni del framework (ricordiamo che l'ASF si poggia sul CMSIS e sulle sue definizioni per accedere all'hardware, essendo uno strato di astrazione più alto rispetto ad esso), inoltre come abbiamo fatto per la USART, in alcuni casi è più efficiente implementare alcune funzioni sfruttando l'accesso diretto ai registri della periferica. Le funzioni e le strutture definite dal framework per il modulo SERCOM SPI sono elencate qui, e la lettura dell'API del driver è consigliata per capire meglio il resto della lezione.
Colleghiamo un display ad Arduino: il controller ST7735
Utilizzeremo il display 1.8" TFT a colori con micro SD breakout della Adafruit (una guida al display, i pin e il collegamento può essere scaricata qui), basato sul controller ST7735 (il datasheet del controller, che utilizzeremo nel corso della lezione è disponibile qui: tecnicamente è il controller il device con cui si interfaccia Arduino, ma nel corso della lezione utilizzeremo il termine display con significato analogo) e con un pannello display di 128 x 160 pixel. Iniziamo con il configurare la SPI: creiamo un nuovo progetto ASF per il SAMD21G18a in Atmel Studio, una [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2744 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
A proposito di SPI vi segnalo questo interessante articolo http://it.emcelettronica.com/interfacce-seriali-meglio-spi-o-i2c