V jednom z předchozích článků jsme se již krátce dotkli použití posuvného registru, zejména modelu 74HC595. Pojďme se blíže podívat na možnosti a postup pro práci s tímto mikroobvodem.
Nezbytné
- - Arduino;
- - posuvný registr 74HC595;
- - připojení vodičů.
Instrukce
Krok 1
Posuvný registr 74HC595 a podobně se používají jako zařízení pro převod sériových dat na paralelní a lze je také použít jako "západku" pro data, která drží přenesený stav.
Pinout (pinout) je zobrazen na obrázku vlevo. Jejich účel je následující.
Q0… Q7 - paralelní datové výstupy;
GND - zem (0 V);
Q7 '- sériový datový výstup;
^ MR - reset master (aktivní nízká);
SHcp - vstup hodin posuvného registru;
STcp - "západkový" hodinový pulzní vstup;
^ OE - povolení výstupu (aktivní nízká);
DS - vstup sériových dat;
Vcc - napájecí zdroj +5 V.
Strukturálně je mikroobvod vyroben v několika typech případů; Použiji ten, který je zobrazen na obrázku vpravo - výstup - protože s prkénkem na prkénko je jednodušší
Krok 2
Krátce si připomeňme sériové rozhraní SPI, které použijeme k přenosu dat do posuvného registru.
SPI je čtyřvodičové obousměrné sériové rozhraní, na kterém se účastní master a slave. Pánem v našem případě bude Arduino, otrokem bude registr 74HC595.
Vývojové prostředí pro Arduino má vestavěnou knihovnu pro práci na rozhraní SPI. Při jeho použití se použijí závěry, které jsou vyznačeny na obrázku:
SCLK - SPI výstup hodin;
MOSI - data od nadřízeného k podřízenému;
MISO - data od slave k masteru;
SS - výběr otroka.
Krok 3
Spojme obvod jako na obrázku.
Připojím také logický analyzátor ke všem vývodům mikroobvodu posuvného registru. S pomocí toho uvidíme, co se děje na fyzické úrovni, jaké signály směřují kam a zjistíme, co to znamená. Mělo by to vypadat jako fotka.
Krok 4
Napíšeme si takovou skicu a nahrajeme ji do paměti Arduino.
Proměnná PIN_SPI_SS je interní standardní konstanta, která odpovídá pinu „10“Arduina, pokud je použita jako hlavní rozhraní SPI, které zde používáme. V zásadě můžeme stejně dobře použít jakýkoli jiný digitální pin na Arduinu; pak bychom to museli deklarovat a nastavit jeho provozní režim.
Napájením tohoto kolíku LOW aktivujeme náš posuvný registr pro vysílání / příjem. Po přenosu opět zvýšíme napětí na VYSOKÉ a výměna končí.
Krok 5
Pojďme proměnit náš obvod v práci a uvidíme, co nám ukazuje logický analyzátor. Celkový pohled na časový diagram je znázorněn na obrázku.
Modrá přerušovaná čára zobrazuje 4 čáry SPI, červená přerušovaná čára zobrazuje 8 kanálů paralelních dat posuvného registru.
Bod A na časové stupnici je okamžik, kdy je číslo „210“přeneseno do posuvného registru, B je okamžik, kdy je zapsáno číslo „0“, C je cyklus opakující se od začátku.
Jak vidíte, od A do B - 10,03 milisekund, a od B do C - 90,12 milisekund, téměř tak, jak jsme požadovali na náčrtu. Malý přírůstek za 0, 03 a 0, 12 ms je čas pro přenos sériových dat z Arduina, takže zde nemáme přesně 10 a 90 ms.
Krok 6
Podívejme se blíže na sekci A.
Na samém vrcholu je dlouhý puls, kterým Arduino iniciuje přenos na lince SPI-ENABLE - výběr slave. V tuto chvíli se začnou generovat hodinové impulsy SPI-CLOCK (druhý řádek shora), 8 kusů (pro přenos 1 bajtu).
Další řádek shora je SPI-MOSI - data, která přenášíme z Arduina do posuvného registru. Toto je naše číslo „210“v binárním formátu - „11010010“.
Po dokončení přenosu na konci pulzu SPI-ENABLE vidíme, že posuvný registr nastavil stejnou hodnotu na svých 8 ramenech. Zvýraznil jsem to modrou tečkovanou čarou a pro přehlednost jsem označil hodnoty.
Krok 7
Nyní se zaměřme na část B.
Opět vše začíná výběrem otroka a generováním 8 hodinových pulzů.
Data na lince SPI-MOSI jsou nyní „0“. To znamená, že v tuto chvíli zapíšeme do registru číslo „0“.
Ale dokud není přenos dokončen, registr uloží hodnotu „11010010“. Je výstupem na paralelní piny Q0.. Q7 a je výstupem, pokud jsou v řádku hodinové impulsy z paralelního výstupu Q7 'na linku SPI-MISO, kterou zde vidíme.
Krok 8
Podrobně jsme tedy studovali problematiku výměny informací mezi hlavním zařízením, kterým bylo Arduino, a posuvným registrem 74HC595. Naučili jsme se, jak připojit posuvný registr, zapisovat do něj data a číst z něj data.