In uno dei precedenti articoli abbiamo già brevemente accennato all'utilizzo di un registro a scorrimento, in particolare il 74HC595. Diamo un'occhiata più da vicino alle capacità e alla procedura per lavorare con questo microcircuito.
Necessario
- -Arduino;
- - registro a scorrimento 74HC595;
- - fili di collegamento.
Istruzioni
Passo 1
Il registro a scorrimento 74HC595 e simili vengono utilizzati come dispositivi per convertire i dati seriali in paralleli e possono anche essere utilizzati come "latch" per i dati, mantenendo lo stato trasferito.
Il pinout (pinout) è mostrato nella figura a sinistra. Il loro scopo è il seguente.
Q0… Q7 - uscite dati parallele;
GND - massa (0 V);
Q7' - uscita dati seriale;
^ MR - reset master (attivo basso);
SHcp - ingresso dell'orologio del registro a scorrimento;
STcp - ingresso a impulsi di clock "latch";
^ OE - abilitazione uscita (attivo basso);
Ds - ingresso dati seriale;
Vcc - alimentazione +5 V.
Strutturalmente, il microcircuito è realizzato in diversi tipi di casi; Userò quello mostrato nella figura a destra - l'output - perché è più facile da usare con una breadboard.
Passo 2
Vorrei ricordare brevemente l'interfaccia seriale SPI, che utilizzeremo per trasferire i dati al registro a scorrimento.
SPI è un'interfaccia seriale bidirezionale a quattro fili alla quale partecipano un master e uno slave. Il master nel nostro caso sarà Arduino, lo slave sarà il registro 74HC595.
L'ambiente di sviluppo per Arduino ha una libreria integrata per lavorare sull'interfaccia SPI. Quando lo si applica, vengono utilizzate le conclusioni contrassegnate nella figura:
SCLK - Uscita orologio SPI;
MOSI - dati da master a slave;
MISO - dati da slave a master;
SS - selezione dello schiavo.

Passaggio 3
Mettiamo insieme il circuito come in foto.
Collegherò anche un analizzatore logico a tutti i pin del microcircuito del registro a scorrimento. Con l'aiuto di esso, vedremo cosa sta succedendo a livello fisico, quali segnali stanno andando dove e capiremo cosa significano. Dovrebbe assomigliare alla foto.

Passaggio 4
Scriviamo uno schizzo come questo e carichiamolo nella memoria di Arduino.
La variabile PIN_SPI_SS è una costante standard interna che corrisponde al pin "10" di Arduino quando viene utilizzata come master dell'interfaccia SPI che stiamo usando qui. In linea di principio, potremmo anche usare qualsiasi altro pin digitale su Arduino; quindi dovremmo dichiararlo e impostarne la modalità operativa.
Alimentando questo pin LOW, attiviamo il nostro registro a scorrimento per la trasmissione/ricezione. Dopo la trasmissione, aumentiamo nuovamente la tensione su HIGH e lo scambio termina.

Passaggio 5
Mettiamo in funzione il nostro circuito e vediamo cosa ci mostra l'analizzatore logico. La vista generale del diagramma di temporizzazione è mostrata in figura.
La linea tratteggiata blu mostra 4 linee SPI, la linea tratteggiata rossa mostra 8 canali di dati paralleli del registro a scorrimento.
Il punto A sulla scala temporale è il momento in cui il numero "210" viene trasferito al registro a scorrimento, B è il momento in cui viene scritto il numero "0", C è il ciclo che si ripete dall'inizio.
Come puoi vedere, da A a B - 10,03 millisecondi e da B a C - 90,12 millisecondi, quasi come abbiamo chiesto nello schizzo. Una piccola aggiunta in 0, 03 e 0, 12 ms è il tempo per il trasferimento dei dati seriali da Arduino, quindi non abbiamo esattamente 10 e 90 ms qui.

Passaggio 6
Diamo un'occhiata più da vicino alla sezione A.
In cima c'è un lungo impulso con cui Arduino avvia la trasmissione sulla linea SPI-ENABLE - selezione dello slave. A questo punto iniziano a essere generati gli impulsi di clock SPI-CLOCK (seconda riga dall'alto), 8 pezzi (per il trasferimento di 1 byte).
La riga successiva dall'alto è SPI-MOSI, i dati che trasferiamo da Arduino al registro a scorrimento. Questo è il nostro numero "210" in binario - "11010010".
Dopo il completamento del trasferimento, al termine dell'impulso SPI-ENABLE, vediamo che il registro a scorrimento ha impostato lo stesso valore sulle sue 8 gambe. L'ho evidenziato con una linea tratteggiata blu e ho etichettato i valori per chiarezza.

Passaggio 7
Ora rivolgiamo la nostra attenzione alla sezione B.
Ancora una volta, tutto inizia con la scelta di uno slave e la generazione di 8 impulsi di clock.
I dati sulla linea SPI-MOSI sono ora "0". Cioè, in questo momento scriviamo il numero "0" nel registro.
Ma fino al completamento del trasferimento, il registro memorizza il valore "11010010". Viene emesso ai pin paralleli Q0.. Q7 e viene emesso quando ci sono impulsi di clock nella linea dall'uscita parallela Q7 'alla linea SPI-MISO, che vediamo qui.

Passaggio 8
Abbiamo quindi studiato in dettaglio il problema dello scambio di informazioni tra il dispositivo master, che era l'Arduino, e il registro a scorrimento 74HC595. Abbiamo imparato come collegare un registro a scorrimento, scrivere dati in esso e leggere dati da esso.