Dans l'un des articles précédents, nous avons déjà brièvement évoqué l'utilisation d'un registre à décalage, notamment le 74HC595. Examinons de plus près les capacités et la procédure de travail avec ce microcircuit.
Nécessaire
- -Arduino;
- - registre à décalage 74HC595;
- - les fils de connexion.
Instructions
Étape 1
Le registre à décalage 74HC595 et similaires sont utilisés comme dispositifs pour convertir des données série en parallèle, et peuvent également être utilisés comme un "verrou" pour les données, maintenant l'état transféré.
Le brochage (brochage) est indiqué sur la figure de gauche. Leur objectif est le suivant.
Q0… Q7 - sorties de données parallèles;
GND - masse (0 V);
Q7 '- sortie de données série;
^ MR - réinitialiser le maître (actif bas);
SHcp - entrée d'horloge de registre à décalage;
STcp - entrée d'impulsion d'horloge « verrou »;
^ OE - sortie activée (actif bas);
Ds - entrée de données en série;
Vcc - alimentation +5 V.
Structurellement, le microcircuit est réalisé dans plusieurs types de boîtiers; Je vais utiliser celui montré dans la figure de droite - la sortie - car il est plus facile à utiliser avec une planche à pain.
Étape 2
Permettez-moi de rappeler brièvement l'interface série SPI, que nous utiliserons pour transférer des données vers le registre à décalage.
SPI est une interface série bidirectionnelle à quatre fils à laquelle participent un maître et un esclave. Le maître dans notre cas sera l'Arduino, l'esclave sera le registre 74HC595.
L'environnement de développement pour Arduino dispose d'une bibliothèque intégrée pour travailler sur l'interface SPI. Lors de son application, les conclusions sont utilisées qui sont marquées dans la figure:
SCLK - sortie d'horloge SPI;
MOSI - données du maître à l'esclave;
MISO - données de l'esclave au maître;
SS - sélection esclave.
Étape 3
Montons le circuit comme sur la photo.
Je vais également connecter un analyseur logique à toutes les broches du microcircuit du registre à décalage. Avec l'aide de celui-ci, nous verrons ce qui se passe au niveau physique, quels signaux vont où, et nous comprendrons ce qu'ils signifient. Cela devrait ressembler à la photo.
Étape 4
Écrivons un croquis comme celui-ci et chargeons-le dans la mémoire Arduino.
La variable PIN_SPI_SS est une constante standard interne qui correspond à la broche "10" de l'Arduino lorsqu'elle est utilisée comme maître de l'interface SPI que nous utilisons ici. En principe, nous pourrions tout aussi bien utiliser n'importe quelle autre broche numérique sur l'Arduino; il faudrait alors le déclarer et définir son mode de fonctionnement.
En alimentant cette broche LOW, nous activons notre registre à décalage pour l'émission/réception. Après la transmission, nous élevons à nouveau la tension à HAUT et l'échange se termine.
Étape 5
Transformons notre circuit en travail et voyons ce que l'analyseur logique nous montre. La vue générale du chronogramme est représentée sur la figure.
La ligne pointillée bleue montre 4 lignes SPI, la ligne pointillée rouge montre 8 canaux de données parallèles du registre à décalage.
Le point A sur l'échelle de temps est le moment où le nombre "210" est transféré au registre à décalage, B est le moment où le nombre "0" est écrit, C est le cycle qui se répète depuis le début.
Comme vous pouvez le voir, de A à B - 10,03 millisecondes, et de B à C - 90,12 millisecondes, presque comme nous l'avons demandé dans le croquis. Un petit ajout en 0, 03 et 0, 12 ms est le temps de transfert des données série depuis l'Arduino, nous n'avons donc pas exactement 10 et 90 ms ici.
Étape 6
Regardons de plus près la section A.
Tout en haut se trouve une longue impulsion avec laquelle l'Arduino initie la transmission sur la ligne SPI-ENABLE - sélection de l'esclave. A ce moment, les impulsions d'horloge SPI-CLOCK commencent à être générées (deuxième ligne à partir du haut), 8 morceaux (pour transférer 1 octet).
La ligne suivante à partir du haut est SPI-MOSI - les données que nous transférons de l'Arduino au registre à décalage. C'est notre nombre "210" en binaire - "11010010".
Après l'achèvement du transfert, à la fin de l'impulsion SPI-ENABLE, nous voyons que le registre à décalage a mis la même valeur sur ses 8 jambes. J'ai souligné cela avec une ligne pointillée bleue et étiqueté les valeurs pour plus de clarté.
Étape 7
Tournons maintenant notre attention vers la section B.
Encore une fois, tout commence par le choix d'un esclave et la génération de 8 impulsions d'horloge.
La donnée sur la ligne SPI-MOSI est maintenant "0". C'est-à-dire qu'à ce moment, nous écrivons le nombre "0" dans le registre.
Mais jusqu'à ce que le transfert soit terminé, le registre mémorise la valeur "11010010". Il est émis vers les broches parallèles Q0.. Q7 et est émis lorsqu'il y a des impulsions d'horloge dans la ligne allant de la sortie parallèle Q7' à la ligne SPI-MISO, que nous voyons ici.
Étape 8
Ainsi, nous avons étudié en détail la question de l'échange d'informations entre le dispositif maître, qui était l'Arduino, et le registre à décalage 74HC595. Nous avons appris à connecter un registre à décalage, à y écrire des données et à y lire des données.