En un dels articles anteriors, ja vam parlar breument sobre l’ús d’un registre de torns, en particular, el 74HC595. Vegem de prop les capacitats i el procediment per treballar amb aquest microcircuit.
Necessari
- - Arduino;
- - registre de torns 74HC595;
- - cables de connexió.
Instruccions
Pas 1
El registre de desplaçament 74HC595 i similars s'utilitzen com a dispositius per convertir dades en sèrie en paral·lel, i també es poden utilitzar com a "tancament" de dades, mantenint l'estat transferit.
El pinout (pinout) es mostra a la figura de l'esquerra. El seu propòsit és el següent.
Q0 … Q7: sortides de dades paral·leles;
GND - terra (0 V);
Q7 ': sortida de dades en sèrie;
^ MR - reset master (actiu baix);
SHcp - entrada de rellotge de registre de desplaçament;
STcp: entrada de pols de rellotge "latch";
^ OE - habilitació de sortida (baixa activa);
DS: entrada de dades en sèrie;
Vcc - font d'alimentació +5 V.
Estructuralment, el microcircuit es fabrica en diversos tipus de casos; Utilitzaré el que es mostra a la figura de la dreta - la sortida - perquè és més fàcil d'utilitzar amb una taula de treball.
Pas 2
Deixeu-me recordar breument la interfície sèrie SPI, que utilitzarem per transferir dades al registre de desplaçament.
SPI és una interfície serial bidireccional de quatre fils en què participen un mestre i un esclau. El mestre en el nostre cas serà l’Arduino, l’esclau serà el registre 74HC595.
L’entorn de desenvolupament d’Arduino té una biblioteca integrada per treballar a la interfície SPI. A l’hora d’aplicar-lo, s’utilitzen les conclusions que es marquen a la figura:
SCLK: sortida de rellotge SPI;
MOSI: dades de mestre a esclau;
MISO: dades d'esclau a amo;
SS: selecció d'esclaus.
Pas 3
Muntem el circuit com a la imatge.
També connectaré un analitzador lògic a tots els pins del microcircuit del registre de desplaçament. Amb l’ajut d’això, veurem què passa a nivell físic, quins senyals van cap a on, i descobrirem què volen dir. Ha de tenir un aspecte semblant a la foto.
Pas 4
Escrivim un esbós com aquest i el carreguem a la memòria Arduino.
La variable PIN_SPI_SS és una constant estàndard interna que correspon al pin "10" de l'Arduino quan s'utilitza com a mestre de la interfície SPI que estem utilitzant aquí. En principi, podríem fer servir qualsevol altre pin digital a l'Arduino; llavors hauríem de declarar-lo i establir el seu mode de funcionament.
En alimentar aquest pin BAIX, activem el nostre registre de torns per transmetre / rebre. Després de la transmissió, tornem a elevar el voltatge a HIGH i l’intercanvi finalitza.
Pas 5
Transformem el nostre circuit en treball i vegem què ens mostra l’analitzador lògic. La vista general del diagrama de temps es mostra a la figura.
La línia discontínua blava mostra 4 línies SPI, la línia discontínua vermella mostra 8 canals de dades paral·leles del registre de desplaçament.
El punt A de l'escala de temps és el moment en què el número "210" es transfereix al registre de desplaçament, B és el moment en què s'escriu el número "0", C és el cicle que es repeteix des del principi.
Com podeu veure, de A a B - 10,03 mil·lisegons i de B a C - 90,12 milisegons, gairebé tal com vam demanar a l'esbós. Una petita addició a 0, 03 i 0, 12 ms és el moment de transferir dades de sèrie des de l’Arduino, de manera que no tenim exactament 10 i 90 ms aquí.
Pas 6
Vegem de prop la secció A.
A la part superior hi ha un pols llarg amb el qual l’Arduino inicia la transmissió a la línia SPI-ENABLE - selecció esclava. En aquest moment, es comencen a generar polsos de rellotge SPI-CLOCK (segona línia des de la part superior), de 8 peces (per transferir 1 byte).
La següent línia de la part superior és SPI-MOSI: les dades que transferim des de l’Arduino al registre de desplaçaments. Aquest és el nostre número "210" en binari: "11010010".
Després de completar la transferència, al final del pols SPI-ENABLE, veiem que el registre de desplaçament ha establert el mateix valor a les seves 8 potes. Ho he ressaltat amb una línia de punts blaus i he etiquetat els valors per a més claredat.
Pas 7
Passem ara la nostra atenció a la secció B.
Una vegada més, tot comença triant un esclau i generant 8 impulsos de rellotge.
Les dades de la línia SPI-MOSI ara són "0". És a dir, en aquest moment escrivim el número "0" al registre.
Però fins que no es completi la transferència, el registre emmagatzema el valor "11010010". S’efectua als pins paral·lels Q0.. Q7, i es produeix quan hi ha polsos de rellotge a la línia des de la sortida paral·lela Q7 ’a la línia SPI-MISO, que veiem aquí.
Pas 8
Per tant, hem estudiat amb detall la qüestió de l’intercanvi d’informació entre el dispositiu mestre, que era l’Arduino, i el registre de desplaçament 74HC595. Hem après a connectar un registre de torns, escriure-hi dades i llegir-ne dades.