Σε ένα από τα προηγούμενα άρθρα, έχουμε ήδη αναφερθεί εν συντομία στη χρήση ενός μηχανισμού αλλαγής ταχυτήτων, ιδίως του 74HC595. Ας ρίξουμε μια πιο προσεκτική ματιά στις δυνατότητες και τη διαδικασία εργασίας με αυτό το μικροκύκλωμα.
Απαραίτητη
- - Arduino;
- - καταχωρητής μετατόπισης 74HC595 ·
- - καλώδια σύνδεσης.
Οδηγίες
Βήμα 1
Ο καταχωρητής μετατόπισης 74HC595 και τα παρόμοια χρησιμοποιούνται ως συσκευές για τη μετατροπή σειριακών δεδομένων σε παράλληλα, και μπορούν επίσης να χρησιμοποιηθούν ως "μανδάλωση" για δεδομένα, διατηρώντας την κατάσταση μεταφοράς.
Το pinout (pinout) εμφανίζεται στην εικόνα στα αριστερά. Ο σκοπός τους έχει ως εξής.
Q0… Q7 - παράλληλες έξοδοι δεδομένων.
GND - γείωση (0 V);
Q7 '- παραγωγή σειριακών δεδομένων.
^ MR - επαναφορά κύριου (ενεργό χαμηλό).
SHcp - είσοδος ρολογιού αλλαγής ταχυτήτων.
STcp - είσοδος παλμού ρολογιού "μανδάλωσης".
^ OE - ενεργοποίηση εξόδου (ενεργή χαμηλή).
Ds - εισαγωγή σειριακών δεδομένων.
Vcc - τροφοδοσία +5 V.
Δομικά, το μικροκύκλωμα κατασκευάζεται σε διάφορους τύπους περιπτώσεων. Θα χρησιμοποιήσω αυτό που φαίνεται στο σχήμα στα δεξιά - την έξοδο - γιατί είναι ευκολότερο στη χρήση με ένα breadboard.
Βήμα 2
Επιτρέψτε μου να θυμηθώ εν συντομία τη σειριακή διεπαφή SPI, την οποία θα χρησιμοποιήσουμε για τη μεταφορά δεδομένων στον καταχωρητή shift.
Το SPI είναι μια τετρασύρματη σειριακή διεπαφή στην οποία συμμετέχουν ένας κύριος και ένας σκλάβος. Ο κύριος στην περίπτωσή μας θα είναι ο Arduino, ο σκλάβος θα είναι εγγεγραμμένος 74HC595.
Το περιβάλλον ανάπτυξης για το Arduino διαθέτει μια ενσωματωμένη βιβλιοθήκη για εργασία στη διεπαφή SPI. Κατά την εφαρμογή του, χρησιμοποιούνται τα συμπεράσματα που σημειώνονται στο σχήμα:
SCLK - Έξοδος ρολογιού SPI.
MOSI - δεδομένα από master σε slave;
MISO - δεδομένα από σκλάβο σε πλοίαρχο.
SS - επιλογή σκλάβων.
Βήμα 3
Ας βάλουμε μαζί το κύκλωμα όπως στην εικόνα.
Θα συνδέσω επίσης έναν λογικό αναλυτή σε όλες τις ακίδες του μικροκυκλώματος του καταχωρητή αλλαγής ταχυτήτων. Με τη βοήθεια αυτού, θα δούμε τι συμβαίνει σε φυσικό επίπεδο, ποια σήματα πηγαίνουν πού και θα καταλάβουμε τι σημαίνουν. Θα πρέπει να μοιάζει με τη φωτογραφία.
Βήμα 4
Ας γράψουμε ένα σκίτσο σαν αυτό και να το φορτώσουμε στη μνήμη του Arduino.
Η μεταβλητή PIN_SPI_SS είναι μια εσωτερική τυπική σταθερά που αντιστοιχεί στην καρφίτσα "10" του Arduino όταν χρησιμοποιείται ως ο κύριος της διεπαφής SPI που χρησιμοποιούμε εδώ. Κατ 'αρχήν, θα μπορούσαμε να χρησιμοποιήσουμε οποιοδήποτε άλλο ψηφιακό πείρο στο Arduino. τότε θα πρέπει να το δηλώσουμε και να ορίσουμε τον τρόπο λειτουργίας του.
Τροφοδοτώντας αυτόν τον πείρο LOW, ενεργοποιούμε τον καταχωρητή shift για μετάδοση / λήψη. Μετά τη μετάδοση, ανεβάζουμε ξανά την τάση στο HIGH και η ανταλλαγή τελειώνει.
Βήμα 5
Ας μετατρέψουμε το κύκλωμά μας σε λειτουργία και ας δούμε τι μας δείχνει ο λογικός αναλυτής. Η γενική προβολή του διαγράμματος χρονισμού φαίνεται στο σχήμα.
Η μπλε διακεκομμένη γραμμή δείχνει 4 γραμμές SPI, η κόκκινη διακεκομμένη γραμμή δείχνει 8 κανάλια παράλληλων δεδομένων του καταχωρητή μετατόπισης.
Το σημείο Α στη χρονική κλίμακα είναι η στιγμή κατά την οποία ο αριθμός "210" μεταφέρεται στον καταχωρητή βάρδιας, το Β είναι η στιγμή κατά την οποία γράφεται ο αριθμός "0", το C είναι ο κύκλος που επαναλαμβάνεται από την αρχή.
Όπως μπορείτε να δείτε, από το Α έως το Β - 10,03 χιλιοστά του δευτερολέπτου και από το Β έως το C - 90,12 χιλιοστά του δευτερολέπτου, σχεδόν όπως ρωτήσαμε στο σκίτσο. Μια μικρή προσθήκη στα 0, 03 και 0, 12 ms είναι η ώρα για τη μεταφορά σειριακών δεδομένων από το Arduino, οπότε δεν έχουμε ακριβώς 10 και 90 ms εδώ.
Βήμα 6
Ας ρίξουμε μια πιο προσεκτική ματιά στην ενότητα Α.
Στην κορυφή είναι ένας μακρύς παλμός με τον οποίο το Arduino ξεκινά μετάδοση στη γραμμή SPI-ENABLE - επιλογή σκλάβων. Αυτή τη στιγμή, οι παλμοί ρολογιού SPI-CLOCK αρχίζουν να παράγονται (δεύτερη γραμμή από την κορυφή), 8 τεμάχια (για μεταφορά 1 byte).
Η επόμενη γραμμή από την κορυφή είναι SPI-MOSI - τα δεδομένα που μεταφέρουμε από το Arduino στον καταχωρητή shift. Αυτός είναι ο αριθμός μας "210" σε δυαδικό - "11010010".
Μετά την ολοκλήρωση της μεταφοράς, στο τέλος του παλμού SPI-ENABLE, βλέπουμε ότι ο καταχωρητής αλλαγής έχει θέσει την ίδια τιμή στα 8 σκέλη του. Το έχω επισημάνει με μια μπλε διακεκομμένη γραμμή και έχω επισημάνει τις τιμές για σαφήνεια.
Βήμα 7
Τώρα ας στρέψουμε την προσοχή μας στην ενότητα Β.
Και πάλι, όλα ξεκινούν με την επιλογή ενός σκλάβου και την παραγωγή 8 παλμών ρολογιού.
Τα δεδομένα στη γραμμή SPI-MOSI είναι τώρα "0". Δηλαδή, αυτή τη στιγμή γράφουμε τον αριθμό "0" στο μητρώο.
Αλλά έως ότου ολοκληρωθεί η μεταφορά, το μητρώο αποθηκεύει την τιμή "11010010". Έξοδος στους παράλληλους ακροδέκτες Q0.. Q7 και εξέρχεται όταν υπάρχουν παλμοί ρολογιού στη γραμμή από την παράλληλη έξοδο Q7 'έως τη γραμμή SPI-MISO, την οποία βλέπουμε εδώ.
Βήμα 8
Έτσι, μελετήσαμε λεπτομερώς το ζήτημα της ανταλλαγής πληροφοριών μεταξύ της κύριας συσκευής, η οποία ήταν το Arduino, και το 74HC595 shift register. Μάθαμε πώς να συνδέουμε έναν καταχωρητή βάρδιας, να γράφουμε δεδομένα σε αυτό και να διαβάζουμε δεδομένα από αυτόν.