Διασύνδεση RTC (DS1307) με μικροελεγκτή και τον προγραμματισμό του

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Το RTC είναι μια ηλεκτρονική συσκευή που παίζει ουσιαστικό ρόλο σχεδιασμός ενσωματωμένου συστήματος σε πραγματικό χρόνο . Παρέχει μια ακριβή ώρα και ημερομηνία σε διάφορες εφαρμογές όπως ρολόι συστήματος, σύστημα παρακολούθησης φοιτητών και συναγερμό κ.λπ., που παρακολουθούν την τρέχουσα ώρα και παρέχουν συνεπές αποτέλεσμα στην αντίστοιχη εργασία. Αυτό το άρθρο παρουσιάζει RTC διασύνδεση με 8051 μικροελεγκτή και βασική πρόσβαση σε εσωτερικούς καταχωρητές.

RTC Interfacing με 8051 μικροελεγκτή

RTC Interfacing με 8051 μικροελεγκτή



Προγραμματισμός και διασύνδεση RTC

Η διασύνδεση RTC με 8051 μικροελεγκτή είναι παρόμοια με όλα τα άλλα είδη 'Ρολόι πραγματικού χρόνου' που συνδέονται σε αυτό. Ας δούμε λοιπόν την απλή διασύνδεση RTC με 8051 μικροελεγκτής και διαδικασία προγραμματισμού που περιλαμβάνει.


Βήμα 1: Επιλέξτε συσκευή RTC

Τα διάφορα είδη τσιπ RTC είναι διαθέσιμα στον ενσωματωμένο κόσμο σε πραγματικό χρόνο, τα οποία ταξινομούνται με βάση διάφορα κριτήρια, όπως τύπος πακέτου, τάση τροφοδοσίας και διαμόρφωση ακίδων κ.λπ. Μερικοί τύποι συσκευών RTC είναι



  • Σειριακή διεπαφή δύο καλωδίων (Δίαυλος I2C)
  • Σειριακή διασύνδεση τριών καλωδίων (USB BUS)
  • Σειριακή διασύνδεση τεσσάρων καλωδίων (SPI BUS)

Πρώτον, πρέπει να επιλέξουμε τον τύπο της συσκευής RTC ανά κατηγορία με βάση την απαίτηση, όπως I2C Bus RTC ή SPI Bus RTC ή άλλη, η οποία ταιριάζει για διασύνδεση με τον αντίστοιχο μικροελεγκτή. Στη συνέχεια, μπορούμε να επιλέξουμε χαρακτηριστικά της συσκευής RTC ανάλογα με την απαίτηση εφαρμογής, όπως διάρκεια ζωής μπαταρίας, κατάλληλο πακέτο και συχνότητα ρολογιού. Ας εξετάσουμε τη διεπαφή δύο καλωδίων RTC με 8051 μικροελεγκτή, όπως DS1307 .

Βήμα 2: Εσωτερικό μητρώο και διεύθυνση της συσκευής RTC

Το RTC σημαίνει ρολόι πραγματικού χρόνου που παρέχει έτη, μήνες, εβδομάδες, ημέρες, ώρες, λεπτά και δευτερόλεπτα με βάση τη συχνότητα κρυστάλλου. Το RTC αποτελείται από ενσωματωμένο Μνήμη RAM για αποθήκευση δεδομένων . Θα παρέχεται αντίγραφο ασφαλείας της μπαταρίας σε περίπτωση διακοπής της κύριας τροφοδοσίας με σύνδεση μιας μπαταρίας σε συσκευή RTC.

Διαμόρφωση RTC DB1307:

Εσωτερικά μπλοκ RTC και διάγραμμα καρφιτσών

Εσωτερικά μπλοκ RTC και διάγραμμα καρφιτσών

A0, A1, A2: είναι καρφίτσες διευθύνσεων του τσιπ RTC DB1307, οι οποίες μπορούν να χρησιμοποιηθούν για την επικοινωνία με την κύρια συσκευή. Μπορούμε να ελέγξουμε οκτώ συσκευές με διασύνδεση RTC με 8051 μικροελεγκτής by A0, A1, A2 bits χρησιμοποιώντας πρωτόκολλο I2C.


VCC και GND: Τα VCC και GND είναι τροφοδοτικά και πείροι γείωσης αντίστοιχα. Αυτή η συσκευή λειτούργησε με εύρος 1,8 έως 5,5V.

VBT: Το VBT είναι ένας πείρος τροφοδοσίας μπαταρίας. Η πηγή ισχύος της μπαταρίας πρέπει να διατηρείται μεταξύ 2V και 3,5V.

SCL: Το SCL είναι ένας ακροδέκτης σειριακού ρολογιού και χρησιμοποιείται για συγχρονισμό δεδομένων σε σειριακή διεπαφή.

SDL: Είναι ένας σειριακός ακροδέκτης εισόδου και εξόδου. Χρησιμοποιείται για τη μετάδοση και τη λήψη των δεδομένων σε σειριακή διεπαφή.

Σχολάω: Είναι ένας προαιρετικός πείρος εξόδου τετραγωνικού κύματος.

OSC0 και OSC1: Πρόκειται για ακίδες ταλαντωτή κρυστάλλου που χρησιμοποιούνται για την παροχή σημάτων ρολογιού στη συσκευή RTC. Η τυπική συχνότητα κρυστάλλου χαλαζία είναι 22.768KHz.

Διεύθυνση συσκευής:

Το πρωτόκολλο διαύλου I2C επιτρέπει πολλές δευτερεύουσες συσκευές κάθε φορά. Κάθε δευτερεύουσα συσκευή πρέπει να αποτελείται από τη δική της διεύθυνση για να την αντιπροσωπεύει. Η κύρια συσκευή επικοινωνεί με συγκεκριμένη δευτερεύουσα συσκευή από μια διεύθυνση. Η διεύθυνση συσκευής RTC είναι '0xA2' όπου το '1010' δίνεται από τον κατασκευαστή και τα A0, A1, A2 είναι διεύθυνση καθορισμού χρήστη, η οποία χρησιμοποιείται για την επικοινωνία οκτώ συσκευών RTC στο Πρωτόκολλο διαύλου I2C .

Προσθήκη συσκευών

Προσθήκη συσκευών

Το bit R / W χρησιμοποιείται για την εκτέλεση εργασιών ανάγνωσης και εγγραφής σε RTC. Εάν R / W = 0, εκτελείται λειτουργία εγγραφής και R / W = 1 για λειτουργία ανάγνωσης.

Διεύθυνση λειτουργίας ανάγνωσης RTC = '0xA3'

Διεύθυνση λειτουργίας εγγραφής RTC = '0xA2'

Μητρώα μνήμης και διεύθυνση:

Οι καταχωρητές RTC βρίσκονται σε τοποθεσίες διευθύνσεων από 00h έως 0Fh και οι καταχωρητές μνήμης RAM βρίσκονται σε τοποθεσίες διευθύνσεων από 08h έως 3Fh όπως φαίνεται στο σχήμα. Οι καταχωρητές RTC χρησιμοποιούνται για την παροχή λειτουργικότητας ημερολογίου και ώρας ώρας της ημέρας και για την εμφάνιση των Σαββατοκύριακων.

Μητρώα μνήμης και διεύθυνση

Μητρώα μνήμης και διεύθυνση

Μητρώα ελέγχου / κατάστασης:

Το DB1307 αποτελείται από δύο πρόσθετους καταχωρητές όπως το control / status1 και το control / status2 που χρησιμοποιούνται για τον έλεγχο του ρολογιού πραγματικού χρόνου και διακόπτει .

Μητρώο ελέγχου / κατάστασης 1:

Μητρώο κατάστασης ελέγχου

Μητρώο κατάστασης ελέγχου

  • TEST1 = 0 κανονική λειτουργία

= 1 Λειτουργία δοκιμής EXT-ρολογιού

  • STOP = 0 RTC ξεκινά

= 1 διακοπή RTC

  • TESTC = 0 η λειτουργία κατά την επαναφορά απενεργοποιήθηκε

= ενεργοποιήθηκε η επαναφορά

Μητρώο ελέγχου / κατάστασης 2:

Μητρώο κατάστασης ελέγχου2

Μητρώο κατάστασης ελέγχου2

  • TI / TP = 0 INT ενεργό όλη την ώρα

= 1 INT ενεργός απαιτούμενος χρόνος

  • AF = 0 Το ξυπνητήρι δεν ταιριάζει

= 1 αγώνα συναγερμού

  • TF = 0 Δεν υπάρχει υπερχείλιση χρονοδιακόπτη

= 1 Πραγματοποιείται υπερχείλιση χρονοδιακόπτη

  • ALE = 0 Απενεργοποίηση διακοπής συναγερμού

= 1 Ενεργοποιήθηκε η διακοπή συναγερμού

  • TIE = 0 Απενεργοποίηση χρονοδιακόπτη

= 1 Ενεργοποίηση διακοπών χρονοδιακόπτη

Βήμα 3: Διασύνδεση RTC ds1307 με 8051

Το RTC μπορεί να είναι διασυνδεδεμένος με μικροελεγκτή χρησιμοποιώντας διαφορετικά πρωτόκολλα σειριακού διαύλου, όπως I2C και Πρωτόκολλα SPI που παρέχουν σύνδεση επικοινωνίας μεταξύ τους. Η εικόνα δείχνει, πραγματικό χρόνο διεπαφής ρολογιού με 8051 μικροελεγκτή χρησιμοποιώντας πρωτόκολλο διαύλου I2C. Το I2C είναι ένα αμφίδρομο σειριακό πρωτόκολλο, το οποίο αποτελείται από δύο καλώδια όπως SCL και SDA για τη μεταφορά δεδομένων μεταξύ συσκευών που είναι συνδεδεμένες σε δίαυλο. Ο μικροελεγκτής 8051 δεν διαθέτει ενσωματωμένη συσκευή RTC, επομένως έχουμε συνδεθεί εξωτερικά μέσω α σειριακή επικοινωνία για τη διασφάλιση των αποτελούμενων δεδομένων.

RTC Interfacing με 8051 μικροελεγκτή

RTC Interfacing με 8051 μικροελεγκτή

Οι συσκευές I2C έχουν ανοιχτές εξόδους αποστράγγισης, επομένως, μια αντίσταση έλξης πρέπει να συνδεθεί στη γραμμή διαύλου I2C με πηγή τάσης. Εάν οι αντιστάσεις δεν είναι συνδεδεμένες στις γραμμές SCL και SDL, ο δίαυλος δεν θα λειτουργήσει.

Βήμα 4: Μορφή πλαισίου δεδομένων RTC

Δεδομένου ότι η διασύνδεση RTC με μικροελεγκτή 8051 χρησιμοποιεί δίαυλο I2C, επομένως η μεταφορά δεδομένων έχει τη μορφή byte ή πακέτων και κάθε byte ακολουθείται από επιβεβαίωση.

Μετάδοση πλαισίου δεδομένων:

Στη λειτουργία μετάδοσης, ο κύριος απελευθερώνει την κατάσταση έναρξης αφού επιλέξει τη δευτερεύουσα συσκευή ανά bit διεύθυνσης. Το bit διεύθυνσης περιέχει 7-bit, τα οποία υποδεικνύουν τις εξαρτημένες συσκευές ως διεύθυνση ds1307. Τα σειριακά δεδομένα και το σειριακό ρολόι μεταδίδονται σε γραμμές SCL και SDL. Οι συνθήκες START και STOP αναγνωρίζονται ως αρχή και λήξη σειριακής μεταφοράς. Οι λειτουργίες λήψης και μετάδοσης ακολουθούνται από το bit R / W.

Μετάδοση πλαισίου δεδομένων

Μετάδοση πλαισίου δεδομένων

Αρχή: Κατά κύριο λόγο, η ακολουθία μεταφοράς δεδομένων ξεκίνησε από τον κύριο δημιουργώντας την κατάσταση έναρξης.

Διεύθυνση 7-bit: Μετά από αυτό, ο κύριος στέλνει τη διεύθυνση σκλάβων σε δύο μορφές 8-bit αντί για μία μόνο διεύθυνση 16-bit.

Διεύθυνση μητρώου ελέγχου / κατάστασης: Η διεύθυνση καταχωρητή ελέγχου / κατάστασης πρέπει να επιτρέπει στους καταχωρητές κατάστασης ελέγχου.

Μητρώο ελέγχου / κατάστασης 1: Ο καταχωρητής κατάστασης ελέγχου1 χρησιμοποιείται για την ενεργοποίηση της συσκευής RTC

Μητρώο ελέγχου / κατάστασης 2: Χρησιμοποιείται για την ενεργοποίηση και απενεργοποίηση των διακοπών.

Ε / Δ: Εάν το bit ανάγνωσης και εγγραφής είναι χαμηλό, τότε εκτελείται η λειτουργία εγγραφής.

ΑΛΙΜΟΝΟ: Εάν η λειτουργία εγγραφής εκτελείται στη δευτερεύουσα συσκευή, τότε ο δέκτης στέλνει 1-bit ACK στον μικροελεγκτή.

Να σταματήσει: Μετά την ολοκλήρωση της λειτουργίας εγγραφής στη δευτερεύουσα συσκευή, ο μικροελεγκτής στέλνει την κατάσταση διακοπής στη δευτερεύουσα συσκευή.

Λήψη πλαισίου δεδομένων:

Λήψη πλαισίου δεδομένων

Λήψη πλαισίου δεδομένων

Αρχή: Κατά κύριο λόγο, η ακολουθία μεταφοράς δεδομένων ξεκίνησε από τον κύριο δημιουργώντας την κατάσταση έναρξης.

Διεύθυνση 7-bit: Μετά από αυτό, ο κύριος στέλνει τη διεύθυνση σκλάβου σε δύο μορφές 8-bit αντί για μία μόνο διεύθυνση 16-bit.

Διεύθυνση μητρώου ελέγχου / κατάστασης: Η διεύθυνση καταχωρητή ελέγχου / κατάστασης είναι να επιτρέπει τους καταχωρητές κατάστασης ελέγχου.

Control / Status Register1: Ο καταχωρητής κατάστασης ελέγχου1 που χρησιμοποιείται για την ενεργοποίηση της συσκευής RTC

Μητρώο ελέγχου / κατάστασης 2: Χρησιμοποιείται για την ενεργοποίηση και απενεργοποίηση των διακοπών.

Ε / Δ: Εάν το bit ανάγνωσης και εγγραφής είναι υψηλό, τότε εκτελείται η λειτουργία ανάγνωσης.

ΑΛΙΜΟΝΟ: Εάν η λειτουργία εγγραφής εκτελείται στη δευτερεύουσα συσκευή, τότε ο δέκτης στέλνει 1-bit ACK στον μικροελεγκτή.

Να σταματήσει: Μετά την ολοκλήρωση της λειτουργίας εγγραφής στη δευτερεύουσα συσκευή, ο μικροελεγκτής στέλνει την κατάσταση διακοπής στη δευτερεύουσα συσκευή.

Βήμα 5: Προγραμματισμός RTC

Γράψτε τη λειτουργία από το Master στο Slave:

  1. Εκδώστε την κατάσταση έναρξης από τον κύριο στο σκλάβος
  2. Μεταφέρετε τη δευτερεύουσα διεύθυνση σε λειτουργία εγγραφής στη γραμμή SDL
  3. Στείλτε τη διεύθυνση μητρώου ελέγχου
  4. Στείλτε την τιμή ελέγχου / κατάστασης1
  5. Στείλτε την τιμή ελέγχου / κατάστασης2
  6. Στείλτε την ημερομηνία των ομοίων λεπτών, δευτερολέπτων και ωρών
  7. Στείλτε το bit διακοπής

#περιλαμβάνω

sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
άκυρη εκκίνηση ()
άκυροι κεντρικοί υπολογιστές (χωρίς υπογραφή char)
καθυστέρηση (χωρίς υπογραφή char)

κενή κύρια ()
{

αρχή()
εγγραφή (0xA2) // διεύθυνση σκλάβου //
εγγραφή (0x00) // διεύθυνση μητρώου ελέγχου //
εγγραφή (0x00) // έλεγχος εγγραφής 1 τιμή //
εγγραφή (0x00) // control regiter2 vlaue //
εγγραφή (0x28) // δευτ. τιμή //
εγγραφή (0x50) // τιμή λεπτού //
εγγραφή (0x02) // τιμή ωρών //
}

άκυρη εκκίνηση ()
{

SDA = 1 // επεξεργασία δεδομένων //
SCL = 1 // το ρολόι είναι υψηλό //
καθυστέρηση (100)
SDA = 0 // έστειλε τα δεδομένα //
καθυστέρηση (100)
SCL = 0 // το σήμα ρολογιού είναι χαμηλό //
}
άκυρη εγγραφή (χωρίς υπογραφή char d)
{

χωρίς υπογραφή char k, j = 0 × 80
για (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
καθυστέρηση (4)
SCL = 0
}
SDA = 1
SCL = 1
καθυστέρηση (2)
c = SDA
καθυστέρηση (2)
SCL = 0
}
κενή καθυστέρηση (int p)
{
unsignedinta, β
Για (a = 0a<255a++) //delay function//
Για (b = 0b}

Διαβάστε τη λειτουργία από το Slave to Master:

#περιλαμβάνω
sbit SCL = P2 ^ 5
sbit SDA = P2 ^ 6
άκυρη εκκίνηση ()
άκυρη εγγραφή
άκυρη ανάγνωση ()
άκυρο ack ()
άκυρη καθυστέρηση (χωρίς υπογραφή char)
κενή κύρια ()
{
αρχή()
write (0xA3) // διεύθυνση σκλάβου σε λειτουργία ανάγνωσης //
ανάγνωση()
Αλίμονο()
sec = τιμή
}
άκυρη εκκίνηση ()
{

SDA = 1 // επεξεργασία δεδομένων //
SCL = 1 // το ρολόι είναι υψηλό //
καθυστέρηση (100)
SDA = 0 // έστειλε τα δεδομένα //
καθυστέρηση (100)
SCL = 0 // το σήμα ρολογιού είναι χαμηλό //
}
άκυρη εγγραφή (χωρίς υπογραφή char d)
{

χωρίς υπογραφή char k, j = 0 × 80
για (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
καθυστέρηση (4)
SCL = 0
}
SDA = 1
SCL = 1
καθυστέρηση (2)
c = SDA
καθυστέρηση (2)
SCL = 0
}
κενή καθυστέρηση (int p)
{
unsignedinta, β
Για (a = 0a<255a++) //delay function//
Για (b = 0b}
Άκυρη ανάγνωση ()
{
Χωρίς υπογραφή char j, z = 0 × 00, q = 0 × 80
SDA = 1
για (j = 0j<8j++)
{
SCL = 1
καθυστέρηση (100)
flag = SDA
αν (σημαία == 1)

z = (z
άκυρο ack ()
{
SDA = 0 // Η γραμμή SDA πηγαίνει στο χαμηλό //
SCL = 1 // το ρολόι είναι υψηλό σε χαμηλό //
καθυστέρηση (100)
SCL = 0
}

Αυτά είναι τα απαραίτητα βήματα για διασύνδεση RTC με 8051 μικροελεγκτή. Σε προσθήκες σε αυτά τα βήματα, τα πλαίσια δεδομένων που χρησιμοποιούνται για τη μεταφορά και τη λήψη των δεδομένων συζητούνται επίσης σε αυτό το άρθρο για κατανόηση από τον χρήστη με τον κατάλληλο προγραμματισμό. Για περαιτέρω βοήθεια σχετικά με αυτήν την ιδέα μπορείτε να αφήσετε ένα σχόλιο παρακάτω.