Τρόπος διασύνδεσης I2C-EEPROM με 8051 μικροελεγκτή

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





Ο όρος συντομογραφία I2C ή IIC είναι ένα inter ενσωματωμένο κύκλωμα και ονομάζεται όπως τετράγωνο Γ. Το I2C είναι ένας σειριακός δίαυλος υπολογιστή , που εφευρέθηκε από τους ημιαγωγούς NXP στο παρελθόν ονομάστηκε ημιαγωγοί Philips. Ο δίαυλος I2C χρησιμοποιείται για τη σύνδεση περιφερειακών ολοκληρωμένων κυκλωμάτων χαμηλής ταχύτητας μικροελεγκτές και επεξεργαστές . Κατά το έτος 2006, για την εφαρμογή του πρωτοκόλλου I2C δεν απαιτείται τέλος αδειοδότησης. Ωστόσο, είναι απαραίτητη η αμοιβή για να λάβετε τη διεύθυνση σκλάβου I2C που έχει εκχωρηθεί από τους ημιαγωγούς NXP.

Ορισμένοι ανταγωνιστές, όπως η Texas Instruments, η Siemens AG, η NEC, η Motorola, η Intersil και η STMicroelectronics, ανακοίνωσαν καλά προϊόντα I²C στην αγορά στα μέσα της δεκαετίας του 1990. Το 1995, το SMBus ορίζεται από την Intel, δηλαδή μια υποομάδα I²C που δηλώνει ότι τα πρωτόκολλα είναι πιο αυστηρά. Ο κύριος σκοπός του SMBus είναι η υποστήριξη της διαλειτουργικότητας και της ευρωστίας. Επομένως, τα τρέχοντα συστήματα I²C περιλαμβάνουν κανόνες και πολιτικές από το SMBus, μερικές φορές υποστηρίζει τόσο το I2C όσο και το SMBus με ελάχιστη αναδιάρθρωση.




Λεωφορείο I2C

Λεωφορείο I2C

Διασύνδεση I2C Bus-EEPROM με 8051 μικροελεγκτή

Τι είναι το I2C Bus

Ο δίαυλος I2c χρησιμοποιεί δύο αμφίδρομες γραμμές ανοιχτής αποστράγγισης όπως SDA (σειριακή γραμμή δεδομένων) και SCl (σειριακή γραμμή ρολογιού) και αυτές τραβιούνται με αντιστάσεις. Ο δίαυλος I2C επιτρέπει σε μια κύρια συσκευή να ξεκινήσει την επικοινωνία με μια εξαρτημένη συσκευή. Τα δεδομένα ανταλλάσσονται μεταξύ αυτών των δύο συσκευών. Οι τυπικές τάσεις που χρησιμοποιούνται είναι + 3.3V ή + 5V αν και επιτρέπονται συστήματα με επιπλέον τάσεις.



Διεπαφή I2C

Διεπαφή I2C

EEPROM

Ηλεκτρικά διαγράψιμο προγραμματιζόμενο ROM (EEPROM) είναι ένας τροποποιήσιμος χρήστης ROM που μπορεί να αφαιρεθεί και να επαναπρογραμματιστεί συχνά μέσω εφαρμογής υψηλότερης από την κανονική ηλεκτρική τάση. Το EEPROM είναι ένα είδος μη πτητικής μνήμης που χρησιμοποιείται σε ηλεκτρονικές συσκευές, όπως υπολογιστές, για την αποθήκευση μικρών ποσοτήτων δεδομένων που πρέπει να εξοικονομηθούν όταν αποσυνδεθεί η ισχύς.

8051 Πίνακας Slicker

Ο πίνακας 8051 Slicker είναι ειδικά σχεδιασμένος για να βοηθά τους τεχνικούς φοιτητές στην περιοχή ενσωματωμένα συστήματα . Αυτό το κιτ έχει σχεδιαστεί με τέτοιο τρόπο ώστε όλα τα χαρακτηριστικά του 8051 μικροελεγκτής θα χρησιμοποιηθεί πιθανώς από τους μαθητές. Αυτός ο πίνακας επιθετικών υποστηρίζει ISP (In System Programming) που γίνεται μέσω της σειριακής θύρας. Αυτό το κιτ και το 8051 της NXP προτείνονται για την εξομάλυνση της προόδου του εντοπισμού σφαλμάτων πολλών σχεδίων που περιβάλλουν μικροελεγκτές ταχύτητας 8-bit.

Διασύνδεση I2C - EEPROM

Το παρακάτω σχήμα δείχνει διασύνδεση I2C-EEPROM με 8051 μικροελεγκτή. Εδώ, το I2C είναι ένα πρωτόκολλο master-slave, το οποίο περιλαμβάνει τα δεδομένα μαζί με τον παλμό ρολογιού. Συνήθως, η κύρια συσκευή άλλαξε τη γραμμή ρολογιού, SCL. Αυτή η γραμμή παραγγέλνει το χρονοδιάγραμμα δεδομένων που μεταφέρει στο δίαυλο I2C. Εάν δεν λειτουργεί το ρολόι, δεν θα μεταφερθούν δεδομένα. Όλοι οι σκλάβοι ελέγχονται από το ίδιο ρολόι, SCL.


Διασύνδεση I2C - EEPROM

Διασύνδεση I2C - EEPROM

Ο δίαυλος I2C υποστηρίζει τις διάφορες συσκευές όπου κάθε συσκευή αναγνωρίζεται από μια μοναδική διεύθυνση είτε πρόκειται για πρόγραμμα οδήγησης LCD, κάρτα μνήμης, μικροελεγκτή ή διεπαφή πληκτρολογίου που μπορεί να λειτουργήσει ως Tx ή Rx εξαρτάται από τη λειτουργία της συσκευής. Ο ελεγκτής έχει σχεδιαστεί για να ελέγχει τη συσκευή EEPROM μέσω πρωτοκόλλου I2C. Εδώ, το πρωτόκολλο I2C λειτουργεί ως κύρια συσκευή και ρυθμίζει το EEPROM και λειτουργεί ως σκλάβος. Οι λειτουργίες R / W είναι ικανοποιητικές μεταφέροντας ένα σύνολο σημάτων ελέγχου που περιλαμβάνουν το δίαυλο δεδομένων AND / OR. Αυτά τα σήματα πρέπει να παρακολουθούνται με κατάλληλα σήματα ρολογιού

Διασύνδεση I2C Bus-EEPROM με 8051 μικροελεγκτή

Αν θέλετε να διαβάσετε, Γράψτε και Διαγράψτε το EEPROM χρησιμοποιώντας το I2C bus στο 8051 striker board. Διασύνδεση του I2 Bus-EEPROM με Ο μικροελεγκτής 8051 είναι πολύ απλός . Η λειτουργία αυτής της διασύνδεσης είναι να στείλει ένα σήμα όπως WRITE, ακολουθούμενο από δίαυλο δεδομένων και διευθύνσεων. Σε αυτήν τη λειτουργία, το EEPROM χρησιμοποιείται για την αποθήκευση των δεδομένων. Στο κιτ 8051, δύο αριθμοί γραμμών EEPROM ρυθμίζονται από προγράμματα οδήγησης που υποστηρίζονται από το I2C. Τα SCL και SDA συνδέονται με το σειριακό EEPROM IC που βασίζεται στο I2C.

Διασύνδεση I2C Bus-EEPROM με 8051 μικροελεγκτή

Διασύνδεση I2C Bus-EEPROM με 8051 μικροελεγκτή

Χρησιμοποιώντας τις γραμμές SDA και SCL I2C, οι εργασίες ανάγνωσης και εγγραφής του EEPROM γίνονται στο 8051 Slicker Kit

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

Πηγαίος κώδικας για διασύνδεση I2C

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

# καθορισμός ACK 1
# ορίστε NO_ACK 0

χωρίς υπογραφή char i
χωρίς υπογραφή char EData [5]
δεδομένα χωρίς υπογραφή char
κενό InitSerial (κενό)
void DelayMs (χωρίς υπογραφή int)
άκυρο WriteI2C (χωρίς υπογραφή char)
άκυρο Έναρξη (άκυρο)
άκυρο Διακοπή (άκυρο)
άκυρο ReadBYTE (χωρίς υπογραφή int)
άκυρο WriteBYTE (χωρίς υπογραφή int)
χωρίς υπογραφή char ReadI2C (bit)

sbit SCL = P2 ^ 0 // σύνδεση με ακροδέκτη SCL (Ρολόι)
sbit SDA = P2 ^ 1 // σύνδεση με καρφίτσα SDA (Δεδομένα)

// ——————————————
// Κύριο πρόγραμμα
// ——————————————
κενό κενών (κενό)
{
InitSerial () // Αρχικοποιήστε τη σειριακή θύρα
putchar (0x0C) // καθαρό υπερ-τερματικό
Καθυστέρηση (5)
Γράψε BYTE (0x0000)
WriteI2C (‘A’) // Γράψτε τα δεδομένα εδώ
ΓράψεI2C («B»)
ΓράψεI2C («C»)
ΓράψεI2C («D»)
ΓράψεI2C («E»)
ΓράψεI2C («F»)
Να σταματήσει()
Καθυστέρηση (10)

ReadBYTE (0x0000)
EData [0] = ReadI2C (NO_ACK)
EData [1] = ReadI2C (NO_ACK)
EData [2] = ReadI2C (NO_ACK)
EData [3] = ReadI2C (NO_ACK)
EData [4] = ReadI2C (NO_ACK)
EData [5] = ReadI2C (NO_ACK)

για (i = 0i<6i++)
{
printf (“value =% c n”, EData [i]) // δεδομένα εμφάνισης * /
Καθυστέρηση (100)
}

ενώ (1)
}

// ——————————————
// Αρχικοποιήστε τη σειριακή θύρα
// ——————————————
κενό InitSerial (κενό)
{
SCON = 0x52 // ρύθμιση σειριακής θύρας
TMOD = 0x20 // υλικό (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Χρονοδιακόπτης 1 ενεργοποιημένος
}

// ————————————-
// εκκίνηση I2C
// ————————————-
άκυρο Έναρξη (άκυρο)
{
SDA = 1
SCL = 1
_button _ () _ nop_ ()
SDA = 0
_button _ () _ nop_ ()
SCL = 0
_button _ () _ nop_ ()
}

// ————————————-
// διακοπή I2C
// ————————————-
άκυρο Διακοπή (άκυρο)
{
SDA = 0
_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SDA = 1
}

// ————————————-
// Γράψτε I2C
// ————————————-
void WriteI2C (δεδομένα χωρίς υπογραφή char)
{

για (i = 0i<8i++)
{
SDA = (Δεδομένα & 0x80); 1: 0
SCL = 1SCL = 0
Δεδομένα<<=1
}

SCL = 1
_button _ () _ nop_ ()
SCL = 0

}

// ————————————-
// Διαβάστε το I2C
// ————————————-
χωρίς υπογραφή char ReadI2C (bit ACK_Bit)
{

Αρχή()
ΓράψεI2C (0xA1)

SDA = 1
για (i = 0i<8i++)

SCL = 1
Δεδομένα<<= 1
Ημερομηνία = (Ημερομηνία

εάν (ACK_Bit == 1)
SDA = 0 // Αποστολή ACK
αλλού
SDA = 1 // Αποστολή ΟΧΙ ACK

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Να σταματήσει()
επιστροφή δεδομένων
}

// ————————————-
// Διαβάστε το έντυπο 1 byte I2C
// ————————————-
void ReadBYTE (χωρίς υπογραφή int Addr)
{
Αρχή()
ΓράψεI2C (0xA0)
WriteI2C ((χωρίς υπογραφή char) (Addr >> 8) & 0xFF)
WriteI2C ((χωρίς υπογραφή char) Addr & 0xFF)
}

// ————————————-
// Γράψτε 1 byte σε I2C
// ————————————-
void WriteBYTE (χωρίς υπογραφή int Addr)
{
Αρχή()
ΓράψεI2C (0xA0)
WriteI2C ((χωρίς υπογραφή char) (Addr >> 8) & 0xFF) // αποστολή διεύθυνσης υψηλή
WriteI2C ((χωρίς υπογραφή char) Addr & 0xFF) // η διεύθυνση αποστολής είναι χαμηλή
}

// ——————————————
// Καθυστέρηση λειτουργίας mS
// ——————————————
void DelayMs (μη υπογεγραμμένο int count)
{// mSec Καθυστέρηση 11.0592 Mhz
unsigned int i // Keil v7.5a
ενώ (μετράνε)
{
i = 115
ενώ (i> 0) i–
μετρώ-
}
}

Έτσι, αυτό αφορά την εφαρμογή της διεπαφής I2C. Ελπίζουμε να έχετε καλύτερη κατανόηση αυτής της έννοιας. Επιπλέον, τυχόν ερωτήσεις σχετικά με αυτήν την ιδέα ή συσκευές διασύνδεσης παρακαλώ δώστε τις πολύτιμες προτάσεις σας σχολιάζοντας την παρακάτω ενότητα σχολίων.