Sommario:

Come creare un driver LCD statico con interfaccia I²C: 12 passaggi
Come creare un driver LCD statico con interfaccia I²C: 12 passaggi

Video: Come creare un driver LCD statico con interfaccia I²C: 12 passaggi

Video: Come creare un driver LCD statico con interfaccia I²C: 12 passaggi
Video: MINI PC INTEL NUC, DAPHILE O VOLUMIO ? QUALE SCEGLIERE ? 2024, Dicembre
Anonim
Come creare un driver LCD statico con interfaccia I²C
Come creare un driver LCD statico con interfaccia I²C

I display a cristalli liquidi (LCD) sono ampiamente utilizzati per applicazioni commerciali e industriali grazie alle loro buone proprietà visive, al basso costo e al basso consumo energetico. Queste proprietà rendono l'LCD la soluzione standard per dispositivi a batteria, come strumenti portatili, calcolatrici, orologi, radio, ecc.

Tuttavia, per controllare correttamente ciò che mostra l'LCD, il driver elettronico dell'LCD deve generare forme d'onda di tensione appropriate ai pin dell'LCD. Le forme d'onda dovrebbero essere di natura CA (corrente alternata) perché le tensioni CC (corrente continua) danneggeranno in modo permanente il dispositivo. Il driver appropriato dovrebbe fornire questi segnali all'LCD con un consumo energetico minimo.

Esistono due tipi di LCD, lo Static, con un solo backplane e un pin per il controllo del singolo segmento e, il Multiplex, con più backplane e più segmenti collegati per ciascun pin.

Questo Instructable presenterà il design di un driver LCD statico con il dispositivo SLG46537V GreenPAK™. Il driver LCD progettato pilota fino a 15 segmenti LCD, utilizzando pochi microampere di corrente dall'alimentatore e offre un'interfaccia I²C per il controllo.

Nelle sezioni seguenti verranno mostrati:

● informazioni di base sugli LCD;

● il design del driver LCD SLG46537V GreenPAK in dettaglio;

● come pilotare un LCD statico a sette segmenti e 4 cifre con due dispositivi GreenPAK.

Di seguito abbiamo descritto i passaggi necessari per capire come è stata programmata la soluzione per creare il driver LCD statico con interfaccia I²C. Tuttavia, se desideri solo ottenere il risultato della programmazione, scarica il software GreenPAK per visualizzare il file di progettazione GreenPAK già completato. Collega il kit di sviluppo GreenPAK al tuo computer e premi il programma per creare il driver LCD statico con interfaccia I²C.

Passaggio 1: nozioni di base sui display a cristalli liquidi

Nozioni di base sui display a cristalli liquidi
Nozioni di base sui display a cristalli liquidi
Nozioni di base sui display a cristalli liquidi
Nozioni di base sui display a cristalli liquidi

I display a cristalli liquidi (LCD) sono una tecnologia che non emette luce, ma controlla solo il passaggio di una fonte di luce esterna. Questa fonte di luce esterna potrebbe essere la luce ambientale disponibile, nel tipo di display riflettente, o la luce di un led o lampada retroilluminata, nel tipo di display trasmissivo. Gli LCD sono costruiti con due lastre di vetro (superiore e inferiore), un sottile strato di cristalli liquidi (LC) tra di loro e due polarizzatori di luce (Nota applicativa AN-001 – Nozioni di base sulla tecnologia LCD, Hitachi, Nota applicativa AN-005 – Display Modes, Hitachi). Il polarizzatore è un filtro di luce per il campo elettromagnetico leggero. Solo le componenti luminose nella giusta direzione del campo elettromagnetico passano attraverso il polarizzatore, mentre le altre componenti sono bloccate.

Il cristallo liquido è un materiale organico che ruota il campo elettromagnetico della luce di 90 gradi o più. Tuttavia, quando un campo elettrico viene applicato all'LC, non fa più ruotare la luce. Con l'aggiunta di elettrodi trasparenti nel vetro del display superiore e inferiore, è possibile controllare quando la luce passa attraverso, e quando no, con una sorgente esterna del campo elettrico. La Figura 1 (vedere la nota applicativa AN-001 – Nozioni di base sulla tecnologia LCD, Hitachi) illustra questo controllo operativo. Nella Figura 1, il display è scuro quando non c'è un campo elettrico. Questo perché entrambi i polarizzatori filtrano la luce nella stessa direzione. Se i polarizzatori sono ortogonali, il display sarà scuro quando è presente il campo elettrico. Questa è la situazione più comune per i display riflettenti.

Il campo elettrico minimo, o tensione, per controllare l'LCD è chiamato soglia ON. L'LC è influenzato solo dalla tensione e non c'è quasi nessuna corrente nel materiale LC. Gli elettrodi nell'LCD formano una piccola capacità e questo è l'unico carico per un driver. Questa è la ragione per cui un LCD è un dispositivo a bassa potenza per mostrare informazioni visive.

Tuttavia, è importante notare che l'LCD non può funzionare con una sorgente di tensione in corrente continua (CC) per troppo tempo. L'applicazione di una tensione CC provocherà reazioni chimiche nel materiale LC, danneggiandolo in modo permanente (Nota applicativa AN-001 – Fondamenti della tecnologia LCD, Hitachi). La soluzione è applicare una tensione alternata (AC) negli elettrodi degli LCD.

Negli LCD statici, un elettrodo del backplane è incorporato in un vetro e i singoli segmenti, o pixel, di LCD vengono inseriti nell'altro vetro. Questo è uno dei tipi di LCD più semplici e quello con il miglior rapporto di contrasto. Tuttavia, questo tipo di display di solito richiede troppi pin per controllare ogni singolo segmento.

In generale, un controller del driver genera insieme un segnale di clock ad onda quadra per il backplane e un segnale di clock per i segmenti nel piano anteriore. Quando l'orologio del backplane è in fase con l'orologio del segmento, la tensione quadratica media (RMS) tra entrambi i piani è zero e il segmento è trasparente. Altrimenti, se la tensione RMS è superiore alla soglia LCD ON, il segmento diventa scuro. Le forme d'onda per il backplane, il segmento on e off sono mostrate nella Figura 2. Come si può vedere nella figura, il segmento ON è fuori fase rispetto al segnale del backplane. Il segmento off è in fase rispetto al segnale del backplane. La tensione applicata potrebbe essere compresa tra 3 e 5 volt per display a basso costo e bassa potenza.

Il segnale di clock per il backplane e i segmenti dell'LCD di solito è compreso tra 30 e 100 Hz, la frequenza minima per evitare un effetto di sfarfallio visivo sull'LCD. Si evitano frequenze più alte per ridurre il consumo energetico dell'intero sistema. Il sistema composto da LCD e driver consumerebbe poca corrente, nell'ordine dei microampere. Questo li rende perfettamente adatti per applicazioni a bassa potenza e alimentazione a batteria.

Nelle sezioni seguenti viene presentato in dettaglio il progetto di un driver statico LCD con dispositivo GreenPAK in grado di generare il segnale di clock del backplane e il segnale di clock del singolo segmento per un LCD commerciale.

Fase 2: Schema a blocchi di base della progettazione GreenPAK

Schema a blocchi di base di GreenPAK Design
Schema a blocchi di base di GreenPAK Design
Schema a blocchi di base di GreenPAK Design
Schema a blocchi di base di GreenPAK Design

Un diagramma a blocchi che illustra il progetto GreenPAK è mostrato nella Figura 3. I blocchi di base del progetto sono l'interfaccia I²C, il driver del segmento di uscita, l'oscillatore interno e il selettore della sorgente di clock del backplane.

Il blocco di interfaccia I²C controlla ogni singolo segmento di uscita e la sorgente di clock del backplane dell'LCD. Il blocco di interfaccia I²C è l'unico ingresso di sistema per il controllo dell'uscita del segmento.

Quando la linea di controllo del segmento interno è impostata (livello alto) il rispettivo segmento LCD è scuro opaco. Quando la linea di controllo del segmento interno viene ripristinata (livello basso) il rispettivo segmento LCD è trasparente.

Ogni linea di controllo del segmento interno è collegata a un driver di uscita. Il blocco driver del segmento di uscita genererà un segnale di clock in fase con relazione con il clock del backplane per i segmenti trasparenti. Per i segmenti scuri, questo segnale è fuori fase rispetto al clock del backplane.

La sorgente di clock del backplane è selezionata anche con l'interfaccia I²C. Quando è selezionata la sorgente di clock del backplane interno, l'oscillatore interno è attivato. L'oscillatore interno genererà una frequenza di clock di 48Hz. Questo segnale verrà utilizzato dal blocco driver del segmento di uscita ed è indirizzato al pin di uscita del clock del backplane (pin 20 GreenPAK).

Quando è selezionata la sorgente di clock del backplane esterno, l'oscillatore interno viene disattivato. Il riferimento del driver del segmento di uscita è l'ingresso del clock del backplane esterno (pin 2 GreenPAK). In questo caso, il pin di uscita del clock del backplane potrebbe essere utilizzato come linea di controllo del segmento aggiuntiva, il segmento OUT15.

È possibile utilizzare più di un dispositivo GreenPAK sulla stessa linea I²C. Per farlo, ogni dispositivo deve essere programmato con un indirizzo I²C diverso. In questo modo è possibile estendere il numero di segmenti LCD pilotati. Un dispositivo è configurato per generare la sorgente di clock del backplane, pilotando 14 segmenti, e gli altri sono configurati per utilizzare una sorgente di clock del backplane esterna. Ogni dispositivo aggiuntivo potrebbe pilotare più 15 segmenti in questo modo. È possibile collegare fino a 16 dispositivi sulla stessa linea I²C e quindi è possibile controllare fino a 239 segmenti di un LCD.

In questo Instructable, questa idea viene utilizzata per controllare 29 segmenti di un LCD con 2 dispositivi GreenPAK. La funzionalità di pinout del dispositivo è riassunta nella Tabella 1.

Passaggio 3: progettare il consumo di corrente

Una preoccupazione importante in questo design è il consumo di corrente, che dovrebbe essere il più basso possibile. La corrente di riposo stimata del dispositivo GreenPAK è 0,75 µA per il funzionamento con alimentazione a 3,3 V e 1,12 µA per il funzionamento con alimentazione a 5 V. Il consumo di corrente dell'oscillatore interno è di 7,6 µA e 8,68 µA rispettivamente per il funzionamento con alimentazione a 3,3 V e 5 V. Non si prevede un aumento significativo del consumo di corrente dovuto alle perdite di commutazione, poiché questo design opera a una bassa frequenza di clock. La corrente massima stimata consumata per questo progetto è inferiore a 15 µA quando l'oscillatore interno è acceso e 10 µA quando l'oscillatore interno è spento. La corrente misurata consumata in entrambe le situazioni è mostrata nella sezione Risultati del test.

Passaggio 4: schema del dispositivo GreenPAK

Schema del dispositivo GreenPAK
Schema del dispositivo GreenPAK

Il progetto progettato nel software GreenPAK è mostrato nella Figura 4. Questo schema sarà descritto utilizzando i diagrammi a blocchi di base come riferimento.

Passaggio 5: interfaccia I²C

Interfaccia I²C
Interfaccia I²C
Interfaccia I²C
Interfaccia I²C

Il blocco di interfaccia I²C viene utilizzato come blocco di controllo principale del controllo del funzionamento del dispositivo. Una vista ravvicinata delle connessioni dei blocchi e delle proprietà configurate è mostrata nella Figura 5.

Questo blocco è collegato al PIN 8 e al PIN 9, che sono rispettivamente i pin I²C SCL e SDA. All'interno del dispositivo, il blocco I²C offre 8 ingressi virtuali. Il valore iniziale per ogni Virtual Input è mostrato nella finestra delle proprietà (vedi Figura 5). Gli ingressi virtuali da OUT0 a OUT6 vengono utilizzati come linee di controllo del segmento. Queste linee di controllo corrispondono all'uscita del segmento 1 all'uscita del segmento 7 e sono collegate al driver dell'uscita del segmento. L'ingresso virtuale OUT7 viene utilizzato come controllo della linea del selettore della sorgente di clock del backplane, con il nome di rete BCKP_SOURCE. Questa rete verrà utilizzata da altri blocchi nel progetto. Il codice di controllo I²C è configurato con un valore diverso per ogni IC nel progetto.

Altre 8 linee di controllo del segmento interno sono disponibili nell'output della macchina a stati asincrona (ASM), come mostrato nella Figura 6 sopra. La linea di uscita del segmento 8 (SEG_OUT_8 nella finestra delle proprietà) attraverso la linea di uscita del segmento 15 (SEG_OUT_15) sono controllate dall'uscita ASM sullo stato 0. Non c'è alcuna transizione di stato nel blocco ASM, è sempre nello stato 0. Le uscite di ASM sono collegato ai driver di uscita del segmento.

I driver di uscita del segmento genereranno il segnale di uscita del dispositivo.

Passaggio 6: driver del segmento di output

Il driver del segmento di output è essenzialmente una tabella di ricerca (LUT) configurata come porta logica XOR. Per ogni segmento di uscita, deve essere una porta XOR collegata alla linea di controllo del segmento e al clock del backplane (BCKP_CLOCK). La porta XOR è responsabile della generazione del segnale in fase e fuori fase al segmento di uscita. Quando la linea di controllo del segmento è a un livello alto, l'uscita della porta XOR invertirà il segnale di clock del backplane e genererà un segnale fuori fase al pin del segmento. La differenza di tensione tra il backplane LCD e il segmento LCD, in questo caso, imposterà il segmento LCD come segmento scuro. Quando la linea di controllo del segmento è a un livello basso, l'uscita della porta XOR seguirà il segnale di clock del backplane e quindi genererà un segnale in fase al pin del segmento. Poiché in questo caso non viene applicata alcuna tensione tra il backplane LCD e il segmento, il segmento è trasparente alla luce.

Passaggio 7: controllo della sorgente dell'oscillatore interno e del clock del backplane

Oscillatore interno e controllo della sorgente del clock del backplane
Oscillatore interno e controllo della sorgente del clock del backplane

L'oscillatore interno viene utilizzato quando il segnale BCKP_CLOCK dall'interfaccia I²C è impostato su un livello alto. Una vista ravvicinata del diagramma di controllo della sorgente di clock è mostrata nella Figura 7 sopra.

L'oscillatore è configurato come frequenza RC di 25 kHz, con il divisore di uscita più alto disponibile sull'oscillatore OUT0 (8/64). L'intera configurazione è visibile nella finestra delle proprietà mostrata in Figura 7. In questo modo l'oscillatore interno genererà una frequenza di clock di 48 Hz.

L'oscillatore è attivo solo quando il segnale BCKP_SOURCE è a livello alto insieme al segnale POR. Questo controllo viene effettuato collegando questi due segnali alla porta NAND della 4-L1 LUT. L'uscita della NAND viene quindi collegata all'ingresso del pin di controllo di spegnimento dell'oscillatore.

Il segnale BCKP_SOURCE controlla il MUX costruito con 3-L10 LUT. Quando il segnale BCKP_SOURCE è a un livello basso, la sorgente di clock del backplane proviene dal PIN2. Quando questo segnale è ad un livello alto, la sorgente di clock del backplane proviene dall'oscillatore interno.

Passaggio 8: uscita del clock del backplane o controllo del pin di uscita del segmento 15

Uscita clock backplane o controllo pin uscita segmento 15
Uscita clock backplane o controllo pin uscita segmento 15

Il pin 20 in questo design ha una doppia funzione, che dipende dalla sorgente di clock del backplane selezionata. Il funzionamento di questo pin è controllato da una LUT a 4 ingressi, come mostrato in Figura 8. Con una LUT a 4 bit è possibile associare il funzionamento della porta XOR ad un MUX di uscita. Quando il segnale BCKP_SOURCE è ad un livello alto, l'uscita LUT seguirà il clock dell'oscillatore interno. Quindi il pin 20 funziona come uscita di clock del backplane. Quando il segnale BCKP_SOURCE è a un livello basso, l'uscita LUT sarà l'operazione XOR tra SEG_OUT_15, dall'uscita ASM e il segnale di clock del backplane. La configurazione LUT a 4 bit per eseguire questa operazione è mostrata nella Figura 8.

Passaggio 9: prototipo del sistema LCD

Prototipo di sistema LCD
Prototipo di sistema LCD
Prototipo di sistema LCD
Prototipo di sistema LCD

Per dimostrare l'uso della soluzione di progettazione GreenPAK, è stato assemblato un prototipo di sistema LCD su una breadboard. Per il prototipo, un LCD statico a sette segmenti e 4 cifre è guidato da due dispositivi GreenPAK sulla scheda DIP. Un dispositivo (IC1) utilizza l'oscillatore interno per pilotare il backplane LCD e l'altro dispositivo (IC2) utilizza questo segnale come riferimento di ingresso del backplane. Entrambi i circuiti integrati sono controllati tramite l'interfaccia I²C da un microcontrollore STM32F103C8T6 (MCU) in una scheda di sviluppo minima.

La Figura 9 mostra lo schema delle connessioni tra i due circuiti integrati GreenPAK, il display LCD e la scheda MCU. Nello schema, il dispositivo GreenPAK con riferimento U1 (IC1) pilota le cifre uno e due dell'LCD (lato sinistro dell'LCD). Il dispositivo GreenPAK con riferimento U2 (IC2) pilota le cifre tre e quattro dell'LCD, più il segmento COL (lato destro dell'LCD). L'alimentazione per entrambi i dispositivi proviene dal regolatore nella scheda di sviluppo del microcontrollore. Vengono aggiunti due ponticelli rimovibili tra l'alimentatore e i pin VDD di ciascun dispositivo GreenPAK per la misurazione della corrente con un multimetro.

Un'immagine del prototipo assemblato è mostrata in Figura 10.

Passaggio 10: comandi I²C per il controllo LCD

Comandi I²C per il controllo LCD
Comandi I²C per il controllo LCD
Comandi I²C per il controllo LCD
Comandi I²C per il controllo LCD
Comandi I²C per il controllo LCD
Comandi I²C per il controllo LCD

I due dispositivi GreenPAK sulla breadboard sono programmati con lo stesso design, tranne che per il valore di Control Byte. Il byte di controllo di IC1 è 0 (indirizzo I²C 0x00), mentre il byte di controllo I²C è 1 (indirizzo I²C 0x10). Le connessioni tra i segmenti del display ei driver di dispositivo sono riepilogate nella tabella sopra.

Le connessioni sono state selezionate in questo modo per creare uno schema più chiaro e per semplificare l'assemblaggio delle connessioni breadboard.

Il controllo dell'uscita del segmento viene eseguito dai comandi di scrittura I²C sugli ingressi virtuali I²C e sui registri di uscita ASM. Come descritto nella nota applicativa AN-1090 Simple I²C IO Controllers con SLG46531V (vedi Application Note AN-1090 Simple I²C Controllers with SLG46531V, Dialog Semiconductor), il comando di scrittura I²C è strutturato come segue:

● Inizio;

● Byte di controllo (il bit R/W è 0);

● Indirizzo word;

● Dati;

fermare.

Tutti i comandi di scrittura I²C vengono effettuati all'indirizzo Word 0xF4 (I²C Virtual Inputs) e 0xD0 (ASM Output per lo stato 0). I comandi da scrivere in IC1 e le cifre 1 e 2 dell'LCD di controllo sono riepilogati nella Tabella 3. Nella rappresentazione della sequenza di comandi, la parentesi aperta "[" indica il segnale di Start e la parentesi chiusa "]" indica il segnale di Stop.

I due byte sopra controllano i segmenti della cifra 1 e della cifra 2 dell'LCD insieme. Qui, l'approccio consiste nell'utilizzare una singola tabella di ricerca (LUT) nel software per ogni cifra, considerando i segmenti in entrambi i byte. I valori dei byte dalla tabella di ricerca devono essere mischiati utilizzando un'operazione OR bit per bit e quindi inviati all'IC. La Tabella 4 mostra il valore Byte0 e Byte1 per ogni valore numerico che dovrebbe essere scritto in ogni cifra del display.

Ad esempio, per scrivere nel Digit 1 il numero 3, e nel Digit 2 il numero 4, Byte0 è 0xBD (0x8D OR bit a bit con 0xB0) e Byte 1 è 0x33 (0x30 OR bit a bit con 0x03).

Il comando per scrivere in IC2 e controlla le cifre 3 e 4, sono descritti nella Tabella 5.

La logica di controllo delle cifre 3 e 4 è come il controllo delle cifre 1 e 2. La tabella 6 mostra la LUT per queste due cifre.

La differenza in IC2 è il segmento COL. Questo segmento è controllato da Byte1. Per impostare questo segmento scuro, dovrebbe essere eseguita un'operazione OR bit per bit tra il Byte1 e il valore 0x40.

Passaggio 11: comandi I²C per test LCD

Comandi I²C per test LCD
Comandi I²C per test LCD

Per il test LCD è stato sviluppato un firmware in linguaggio C per la scheda MCU. Questo firmware invierà una sequenza di comandi a entrambi i circuiti integrati sulla breadboard. Il codice sorgente per questo firmware è nella sezione Appendice. L'intera soluzione è stata sviluppata utilizzando Atollic TrueStudio per STM32 9.0.1 IDE.

La sequenza dei comandi ed i rispettivi valori mostrati sul display sono riassunti nella Tabella 7 sopra.

Passaggio 12: risultati del test

Risultati del test
Risultati del test
Risultati del test
Risultati del test

Il test del prototipo consiste nel verificare i valori di visualizzazione dopo un comando MCU e misurare l'assorbimento di corrente da parte di ciascun IC durante il funzionamento.

Le immagini dell'LCD per ciascun valore di comando sono mostrate nella Tabella 8 sopra.

L'assorbimento di corrente per ciascun dispositivo è stato misurato con un multimetro, nel suo intervallo di corrente più basso di 200 µA. Le immagini della corrente misurata per ciascun dispositivo, durante l'avvio e il normale funzionamento, sono mostrate nella Tabella 9 sopra.

Conclusione e discussione dei risultati

È stato presentato il progetto di un driver LCD statico a bassa potenza con dispositivo GreenPAK. Questo design mostra chiaramente una delle maggiori caratteristiche dei dispositivi GreenPAK: la loro bassa corrente di riposo. Poiché i dispositivi GreenPAK sono una soluzione basata su hardware, è possibile lavorare con un funzionamento a bassa frequenza, in questo caso 48 Hz. Una soluzione basata su MCU richiederà una frequenza operativa più elevata, anche per periodi di tempo periodicamente brevi, e quindi consumerà più energia. E, confrontando il dispositivo GreenPAK con un CPLD (Complex Programmable Logic Device), è chiaro che di solito un CPLD ha una corrente di riposo superiore a 20 µA.

È interessante notare che questo design potrebbe essere facilmente modificato per adattarsi meglio ai requisiti di un progetto specifico. Un buon esempio è il pinout dei controlli di segmento. Potrebbero essere facilmente modificati per semplificare allo stesso tempo il circuito stampato e lo sviluppo del software. Questa è una caratteristica interessante quando il dispositivo viene confrontato con un ASIC (Application Specific Integrated Circuit) standard. Di solito, gli ASIC sono progettati per adattarsi a un'ampia gamma di applicazioni e una routine software iniziale dovrebbe essere scritta per configurare correttamente l'IC prima dell'operazione. Un dispositivo configurabile potrebbe essere progettato per essere pronto per l'uso dopo l'accensione. In questo modo è possibile ridurre i tempi di sviluppo del software per la configurazione iniziale del circuito integrato.

Il codice sorgente dell'applicazione può essere trovato qui nell'Appendice A.

Consigliato: