Yhdessä edellisistä artikkeleista käsittelimme jo lyhyesti siirtorekisterin, erityisesti 74HC595, käyttöä. Katsotaanpa tarkemmin tämän mikropiirin kanssa työskentelemisen ominaisuuksia ja menettelytapoja.
Tarpeellinen
- - Arduino;
- - siirtorekisteri 74HC595;
- - liitäntäjohdot.
Ohjeet
Vaihe 1
Siirtorekisteriä 74HC595 ja vastaavia käytetään laitteina sarjadatan muuntamiseksi rinnakkain, ja niitä voidaan käyttää myös datan "salvana" pitämällä siirrettyä tilaa.
Pinout (pinout) on esitetty vasemmalla olevassa kuvassa. Niiden tarkoitus on seuraava.
Q0… Q7 - rinnakkaiset datalähdöt;
GND - maa (0 V);
Q7 '- sarjatiedot;
^ MR - nollaa isäntä (aktiivinen matala);
SHcp - siirtorekisterin kellotulo;
STcp - "salpa" -kellopulssin tulo;
^ OE - lähdön aktivointi (aktiivinen matala);
Ds - sarjatietojen syöttö;
Vcc - virtalähde +5 V.
Rakenteellisesti mikropiiri valmistetaan monentyyppisissä tapauksissa; Käytän oikealla olevassa kuvassa näkyvää - lähtöä - koska sitä on helpompi käyttää leivän kanssa.
Vaihe 2
Sallikaa minun muistuttaa lyhyesti SPI-sarjaliitäntä, jota käytämme siirtämään tietoja siirtorekisteriin.
SPI on nelijohtiminen kaksisuuntainen sarjaliitäntä, johon isäntä ja orja osallistuvat. Isännämme on tapauksessamme Arduino, orja on rekisteri 74HC595.
Arduinon kehitysympäristössä on sisäänrakennettu kirjasto SPI-käyttöliittymän käsittelyyn. Sitä sovellettaessa käytetään johtopäätöksiä, jotka on merkitty kuvaan:
SCLK - SPI-kellon lähtö;
MOSI - tiedot isännältä orjalle;
MISO - tiedot orjalta isännälle;
SS - orjan valinta.
Vaihe 3
Laaditaan yhteen piiri kuten kuvassa.
Yhdistän myös logiikka-analysaattorin kaikkiin siirtorekisteripiirin nastoihin. Sen avulla näemme, mitä tapahtuu fyysisellä tasolla, mitkä signaalit ovat menossa, ja selvitämme, mitä ne tarkoittavat. Sen pitäisi näyttää jotain valokuvalta.
Vaihe 4
Kirjoitetaan tällainen luonnos ja ladataan se Arduino-muistiin.
Muuttuja PIN_SPI_SS on sisäinen standardivakio, joka vastaa Arduinon nastaa "10", kun sitä käytetään tässä käytetyn SPI-liitännän isäntänä. Periaatteessa voisimme yhtä hyvin käyttää mitä tahansa muuta digitaalista nastaa Arduinossa; sitten meidän olisi ilmoitettava se ja asetettava sen toimintatila.
Syöttämällä tätä tapia LOW, aktivoimme siirtorekisterimme lähetystä / vastaanottoa varten. Lähetyksen jälkeen nostamme jännitteen jälleen HIGH: iin, ja vaihto päättyy.
Vaihe 5
Tehdään piiristämme työ ja katsotaan, mitä logiikan analysaattori näyttää meille. Ajoituskaavion yleiskuva on esitetty kuvassa.
Sininen katkoviiva näyttää 4 SPI-viivaa, punainen katkoviiva näyttää 8 kanavaa rinnakkaista siirtorekisteritietoa.
Aika-asteikko on hetki, jolloin luku "210" siirretään siirtorekisteriin, B on hetki, jolloin luku "0" kirjoitetaan, C on alusta toistuva sykli.
Kuten näette, A: sta B: hen - 10,03 millisekuntia ja B: stä C: hen - 90,12 millisekuntia, melkein kuten pyysimme luonnoksessa. Pieni lisäys 0, 03 ja 0, 12 ms: ssa on aika siirtää sarjatietoja Arduinosta, joten täällä ei ole tarkalleen 10 ja 90 ms.
Vaihe 6
Katsotaanpa tarkemmin osaa A.
Yläosassa on pitkä pulssi, jolla Arduino aloittaa lähetyksen SPI-ENABLE-linjalla - orjavalinta. Tällä hetkellä SPI-CLOCK-kellopulsseja alkaa syntyä (toinen rivi ylhäältä), 8 kappaletta (1 tavun siirtämiseksi).
Seuraava rivi ylhäältä on SPI-MOSI - tiedot, jotka siirrämme Arduinosta siirtorekisteriin. Tämä on numeromme "210" binaarisessa muodossa - "11010010".
Siirron päättymisen jälkeen SPI-ENABLE-pulssin lopussa näemme, että siirtorekisteri on asettanut saman arvon kahdeksalle jalalle. Olen korostanut tämän sinisellä katkoviivalla ja merkinnyt arvot selkeyden vuoksi.
Vaihe 7
Tarkastellaan nyt osiota B.
Jälleen kaikki alkaa orjan valitsemisesta ja 8 kellopulssin tuottamisesta.
SPI-MOSI-linjan tiedot ovat nyt "0". Eli tällä hetkellä kirjoitamme numeron "0" rekisteriin.
Mutta kunnes siirto on valmis, rekisteri tallentaa arvon "11010010". Se lähetetään rinnakkaisnastoille Q0.. Q7, ja se lähetetään, kun rivillä on kellopulsseja rinnakkaislähdöstä Q7 'SPI-MISO-linjalle, jonka näemme täällä.
Vaihe 8
Siksi olemme tutkineet yksityiskohtaisesti tiedonvaihtoa päälaitteen, joka oli Arduino, ja 74HC595-siirtorekisterin välillä. Opimme kuinka yhdistää työvuororekisteri, kirjoittaa siihen tietoja ja lukea tietoja siitä.