Display touch per Arduino – Parte 2

In questa seconda parte della serie "Display touch per Arduino" analizziamo il display. Si tratta di un display a colori che, anche se molto economico, fornisce delle ottime prestazioni, come avremo modo di verificare con gli esempi applicativi che verranno introdotti a breve.

Caratteristiche tecniche

Le principali caratteristiche tecniche del componente, visibile in Figura 1, sono le seguenti:

  • compatibilità, a livello hardware, con entrambe le tensioni di alimentazione a 5V e a 3,3V. Questa caratteristica è molto importante, in quanto consente di collegare il display, indifferentemente, a schede con livelli di tensione sui GPIO pari a 5V (come Arduino Uno R3 o Arduino Mega 2560) oppure a schede con livelli di tensione sui GPIO pari a 3,3V (ad esempio il Raspberry Pi). Non è necessario, quindi, ricorrere all’utilizzo di resistenze di limitazione o di circuiti traslatori di livello. Questa funzionalità è resa possibile dalla presenza, sul PCB del display, di un regolatore di tensione da 5V (ingresso) a 3,3V (uscita);
  • interfaccia dati parallela a 8 oppure 16 bit. L’utilizzo di un’interfaccia parallela ha indubbiamente lo svantaggio di richiedere un numero maggiore di collegamenti (cavetti da “tirare” tra i connettori della scheda Arduino e il connettore del modulo display) rispetto a un’interfaccia seriale (come ad esempio SPI oppure I2C). Per contro, il display può essere facilmente controllato da una vasta gamma di microcontrollori o microprocessori, a condizione che dispongano del numero di GPIO richiesti. Il motivo per cui è prevista una doppia interfaccia (8 bit oppure 16 bit) è legato alle dimensioni del bus del display controller, il chip ILI9325;
  • presenza di uno slot per ospitare una scheda di memoria SD;
  • compatibilità con le librerie grafiche UTFT (torneremo su questo punto quando analizzeremo la componente software del progetto).

Figura 1

In Tabella 1 è riportata la descrizione dei segnali presenti sul connettore a 40 pin del display.

Pin Tipo Descrizione
GND G Ground
Vcc P Alimentazione 5V
NC - Non collegato
RS I Selezione Dati / Comando
WR I Segnale di abilitazione scrittura, attivo basso
RD I Segnale di abilitazione lettura, attivo basso
DB8 I Bus Dati
DB9 I Bus Dati
DB10 I Bus Dati
DB11 I Bus Dati
DB12 I Bus Dati
DB13 I Bus Dati
DB14 I Bus Dati
DB15 I Bus Dati
CS I Chip Selection, attivo basso
LED_A P Retroilluminazione
DB0 - Non collegato (modalità a 8 bit)
I Bus Dati
DB1 - Non collegato (modalità a 8 bit)
I Bus Dati
DB2 - Non collegato (modalità a 8 bit)
I Bus Dati
DB3 - Non collegato (modalità a 8 bit)
I Bus Dati
DB4 - Non collegato (modalità a 8 bit)
I Bus Dati
DB5 - Non collegato (modalità a 8 bit)
I Bus Dati
DB6 - Non collegato (modalità a 8 bit)
I Bus Dati
DB7 - Non collegato (modalità a 8 bit)
I Bus Dati
T_CLK I Touch Clock
T_CS I Touch Chip Selection
T_DIN I Touch Data Input
T_DO O Touch Data Output
T_IRQ O Touch Interrupt
SD_DO O SD Data Output
SD_DIN I SD Data Input
SD_CLK I SD Clock
SD_CS I SD Chip select
REST I Reset

Tabella 1: Layout del connettore a 40 pin del modulo display

Legenda: I=input, O=output, P=alimentazione positiva, G=ground

Il display controller

Il controller del display grafico è rappresentato dal chip ILI9325, un System on Chip (SoC) in grado di pilotare display a cristalli liquidi di tipo TFT con risoluzione di 240x320 pixel (QVGA) e 262144 colori. Il circuito integrato comprende una memoria RAM per la grafica di 172800 byte e circuito di alimentazione. Il chip ILI9325 è in grado di supportare diverse tipologie di interfacce: parallela a (8-/9-/16-/18-bit), interfaccia VSYNC, interfaccia seriale SPI e interfaccia RGB a 6-/16-/18-bit. Come già anticipato in precedenza, il modulo display utilizzato nell’articolo utilizzerà un’interfaccia di comunicazione di tipo parallelo. L’ILI9325 opera con una tensione di I/O pari a 1,65V ed è dotato internamente di un circuito inseguitore di tensione per generare i livelli richiesti dall’LCD. È inoltre supportata una modalità di funzionamento del display a soli 8 colori, abbinabile alle modalità sleep e standby a basso assorbimento. Queste funzionalità rendono il chipset ILI9325 la soluzione ideale per dispositivi elettronici portatili di piccole e medie dimensioni, dove una lunga durata della batteria è un requisito imprescindibile. In Figura 2 possiamo osservare uno schema a blocchi del chipset ILI9325 con in evidenza le varie funzionalità interne.

Figura 2: Schema a blocchi del display controller ILI9325

Il touch controller

Il touch controller presente nel modulo display è rappresentato dal chipset XPT2046, un controller per touchscreen di tipo resistivo che incorpora un convertitore analogico-digitale ad approssimazioni successive con risoluzione di 12 bit e frequenza operativa di 125 kHz. L’XPT20246 ha una tensione operativa di 2,2V, ma supporta valori di tensione sull’interfaccia di I/O digitale compresi tra 1,5V e VCC, in modo tale da consentire il collegamento con microcontrollori a bassa tensione. Il chipset è in grado di rilevare il punto di touch eseguendo due conversioni A/D; oltre al punto di contatto sul display, viene determinata anche la pressione eseguita sullo stesso. La tensione di riferimento VREF fornita dal chip può essere utilizzata per servire un ingresso ausiliario di tipo analogico, oppure per monitorare la temperatura (tramite il sensore integrato) o la tensione di una batteria. L’XPT2046 è disponibile in package QFN a 16 pin e basso profilo, con range di temperature compreso tra -40°C e +85°C. Lo schema a blocchi dell’integrato XPT2046 è visibile in Figura 3. Le due coppie di pin (XN, YN) e (XP, YP) sono i segnali utilizzati per la gestione del touch.

Figura 3: Schema a blocchi del touch controller XPT2046

Cablaggio

Possiamo ora analizzare i cablaggi richiesti per il collegamento con la scheda Arduino Mega 2560, dei pin relativi al display e di quelli relativi all’interfaccia touch. Verrà ignorato in questa sede il collegamento dei pin relativi alla scheda di memoria SD, in quanto non utilizzata in questa sede. Per comodità, in Tabella 2 sono riassunti i collegamenti relativi al display, mentre in Tabella 3 i collegamenti richiesti dalla funzionalità touch.

Pin modulo display Pin scheda Arduino Mega 2560
LED_A 5V
VCC 5V
RD 3,3V
GND GND
da DB0 a DB7 (1) da D37 a D30 (1)
da DB8 a DB15 (1) da D22 a D29 (1)
RS D38
WR D39
CS D40
REST D41

Tabella 2: Elenco dei collegamenti tra scheda Arduino Mega 2560 e connettore display

Nota: relativamente al cablaggio dei 16 pin che compongono il data bus, occorre fare un’importante osservazione. Se si vogliono utilizzare tutti e 16 i pin del data bus (opzione che offre i tempi di aggiornamento del display più rapidi), occorre eseguire tutti i cablaggi dei pin da DB0 a DB15 come indicato in Tabella 2. Se invece ci si accontenta di utilizzare soltanto 8 pin del bus dati (opzione leggermente meno performante rispetto alla precedente, ma che semplifica enormemente il cablaggio) occorrerà collegare soltanto i pin da DB8 a DB15 come indicato in Tabella 2. Dalle informazioni riportate in Tabella 1 sappiamo infatti che i pin da DB8 a DB15 sono sempre utilizzati (in entrambe le modalità a 8 e a 16 bit), mentre i pin da DB0 a DB7 sono utilizzati solo nella modalità a 16 bit.

Pin modulo display Pin scheda Arduino Mega 2560
T_CLK D6
T_CS D5
T_DIN D4
T_DO D3
T_IRQ D2

Tabella 3: Elenco dei collegamenti tra scheda Arduino Mega 2560 e connettore display (relativamente alla funzionalità touch)

 

 

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend