Εγχειρίδιο πρωτοκόλλου διαύλου I2C, Διεπαφή με εφαρμογές

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





Σήμερα τα πρωτόκολλα παίζουν ουσιαστικό ρόλο στο σχεδιασμός ενσωματωμένου συστήματος . Χωρίς να μεταβείτε στα πρωτόκολλα, εάν θέλετε να επεκτείνετε τα περιφερειακά χαρακτηριστικά του μικροελεγκτή, η πολυπλοκότητα και η κατανάλωση ισχύος θα αυξηθούν. Υπάρχουν διάφοροι τύποι πρωτοκόλλων διαύλου, όπως USART, SPI, CAN, Πρωτόκολλο διαύλου I2C κλπ., που χρησιμοποιούνται για τη μεταφορά δεδομένων μεταξύ δύο συστημάτων.

Πρωτόκολλο I2C

Τι είναι το I2C Bus;




Για τη μετάδοση και τη λήψη πληροφοριών μεταξύ δύο ή περισσότερων από δύο συσκευών απαιτείται μια διαδρομή επικοινωνίας που ονομάζεται σύστημα διαύλου. Ο δίαυλος I2C είναι ένας αμφίδρομος σειριακός δίαυλος που χρησιμοποιείται για τη μεταφορά δεδομένων μεταξύ ολοκληρωμένων κυκλωμάτων. Το I2C σημαίνει 'Inter Integrated Circuit'. Παρουσιάστηκε για πρώτη φορά από τους ημιαγωγούς της Philips το 1982. Ο δίαυλος I2C αποτελείται από τρεις ταχύτητες μεταφοράς δεδομένων, όπως η τυπική, η γρήγορη και η υψηλή ταχύτητα. Ο δίαυλος I2C υποστηρίζει συσκευή διαστήματος διευθύνσεων 7-bit και 10-bit και η λειτουργία του διαφέρει με χαμηλές τάσεις.

Πρωτόκολλο I2c Bus

Πρωτόκολλο I2c Bus



Γραμμές σήματος I2C

Γραμμές σήματος I2C

Γραμμές σήματος I2C

Το I2C είναι ένα πρωτόκολλο σειριακού διαύλου που αποτελείται από δύο γραμμές σήματος όπως SCL και SDL γραμμές που χρησιμοποιούνται για επικοινωνία με τις συσκευές. Το SCL σημαίνει «σειριακή γραμμή ρολογιού» ​​και αυτό το σήμα οδηγείται πάντα από την «κύρια συσκευή». Το SDL σημαίνει τη «σειριακή σειρά δεδομένων» και αυτό το σήμα οδηγείται είτε από τα κύρια είτε από τα περιφερειακά I2C. Και οι δύο αυτές γραμμές SCL και SDL βρίσκονται σε κατάσταση ανοικτού αποστράγγισης όταν δεν υπάρχει μεταφορά μεταξύ περιφερειακών I2C.

Έξοδοι ανοιχτής αποστράγγισης


Η ανοιχτή αποστράγγιση είναι η ιδέα για τρανζίστορ FET όπου ο ακροδέκτης αποστράγγισης του τρανζίστορ είναι ανοιχτή. Οι πείροι SDL και SCL της κύριας συσκευής έχουν σχεδιαστεί με τα τρανζίστορ σε ανοιχτή κατάσταση, επομένως η μεταφορά δεδομένων είναι δυνατή μόνο όταν πραγματοποιούνται αυτά τα τρανζίστορ. Ως εκ τούτου, αυτές οι γραμμές ή οι ακροδέκτες αποστράγγισης συνδέονται διεξοδικές αντιστάσεις έλξης στο VCC για λειτουργία αγωγιμότητας.

Διεπαφές I2C

Πολλά οι εξαρτημένες συσκευές συνδέονται με τον μικροελεγκτή με τη βοήθεια του διαύλου I2C μέσω αλλαγής IC επιπέδου I2C για τη μεταφορά των πληροφοριών μεταξύ τους. Το πρωτόκολλο I2C χρησιμοποιείται για τη σύνδεση έως και 128 συσκευών που είναι όλες συνδεδεμένες για επικοινωνία με τις γραμμές SCL και SDL της κύριας μονάδας καθώς και με τις εξαρτημένες συσκευές. Υποστηρίζει την επικοινωνία Multimaster, που σημαίνει ότι χρησιμοποιούνται δύο master για την επικοινωνία των εξωτερικών συσκευών.

Τιμές μεταφοράς δεδομένων I2C

Το πρωτόκολλο I2C λειτουργεί τρεις λειτουργίες όπως: γρήγορη λειτουργία, λειτουργία υψηλής ταχύτητας και τυπική λειτουργία όπου η ταχύτητα δεδομένων τυπικής λειτουργίας κυμαίνεται από 0Hz έως 100Hz και τα δεδομένα γρήγορης λειτουργίας μπορούν να μεταφερθούν με ταχύτητα 0Hz έως 400 KHz και τη λειτουργία υψηλής ταχύτητας με 10 KHz έως 100KHz. Τα δεδομένα 9-bit αποστέλλονται για κάθε μεταφορά όπου τα 8-bit αποστέλλονται από τον πομπό MSB στο LSB και το 9ο bit είναι ένα bit αναγνώρισης που αποστέλλεται από τον δέκτη.

Τιμές μεταφοράς δεδομένων I2C

Τιμές μεταφοράς δεδομένων I2C

Επικοινωνία I2C

Το πρωτόκολλο διαύλου I2C χρησιμοποιείται πιο συχνά στην επικοινωνία master και slave όπου το master ονομάζεται 'μικροελεγκτής' και το slave ονομάζεται άλλες συσκευές όπως ADC, EEPROM, DAC και παρόμοιες συσκευές στο ενσωματωμένο σύστημα. Ο αριθμός των εξαρτημένων συσκευών συνδέεται με την κύρια συσκευή με τη βοήθεια του διαύλου I2C, όπου κάθε υποτελής αποτελείται από μια μοναδική διεύθυνση για να την επικοινωνήσει. Τα ακόλουθα βήματα χρησιμοποιούνται για την επικοινωνία της κύριας συσκευής με τον υποκείμενο:

Βήμα 1: Πρώτον, η κύρια συσκευή εκδίδει μια κατάσταση έναρξης για την ενημέρωση όλων των εξαρτημένων συσκευών έτσι ώστε να ακούν στη σειριακή γραμμή δεδομένων.

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

Βήμα 3: Η δευτερεύουσα συσκευή με μια αντιστοιχισμένη διεύθυνση που λαμβάνεται από τον κύριο, αποκρίνεται με μια αναγνώριση στον πλοίαρχο και στη συνέχεια δημιουργείται επικοινωνία μεταξύ τόσο των κύριων όσο και των εξαρτημένων συσκευών στο δίαυλο δεδομένων.

Βήμα 4: Τόσο ο κύριος όσο και ο σκλάβος λαμβάνουν και μεταδίδουν τα δεδομένα ανάλογα με το αν η επικοινωνία διαβάζεται ή γράφεται.

Βήμα 5: Στη συνέχεια, ο κύριος μπορεί να μεταδώσει 8-bit δεδομένων στον δέκτη, ο οποίος απαντά με μια αναγνώριση 1-bit.

Εκμάθηση I2C

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

Βασικά πρωτόκολλα I2C

Σε γενικές γραμμές, το σύστημα διαύλου I2C αποτελείται από δύο καλώδια που χρησιμοποιούνται εύκολα για την επέκταση των περιφερειακών χαρακτηριστικών εισόδου και εξόδου, όπως ADC, EEROM και RTC, και άλλα βασικά συστατικά να φτιάξουμε ένα σύστημα του οποίου η πολυπλοκότητα είναι πολύ μικρότερη.

Παράδειγμα: Δεδομένου ότι ο μικροελεγκτής 8051 δεν διαθέτει ενσωματωμένο ADC - οπότε, αν θέλουμε να συνδέσουμε αναλογικούς αισθητήρες με τον μικροελεγκτή 8051 - πρέπει να χρησιμοποιήσουμε συσκευές ADC όπως ADC0804-1 κανάλι ADC, ADC0808- 8 κανάλι ADC κ.λπ. Χρησιμοποιώντας αυτούς τους ADC, μπορούμε να συνδέσουμε τους αναλογικούς αισθητήρες με τον μικροελεγκτή.

Χωρίς τη χρήση του πρωτοκόλλου για την επέκταση των δυνατοτήτων εισόδου / εξόδου οποιουδήποτε μικροελεγκτή ή επεξεργαστή, μπορούμε να μεταβούμε στη συσκευή 8-pin 8255 ICit. ο Ο μικροελεγκτής 8051 είναι ένας μικροελεγκτής 40 ακίδων χρησιμοποιώντας το 8255 IC, μπορούμε να επεκτείνουμε τις θύρες 3-I / O με 8 ακίδες σε κάθε θύρα. Χρησιμοποιώντας όλες τις συσκευές, όπως RTC, ADC, EEPROM, Timers, κ.λπ. - για την επέκταση των περιφερειακών κυκλωμάτων - αυξάνεται επίσης η πολυπλοκότητα, το κόστος, η κατανάλωση ενέργειας και το μέγεθος του προϊόντος.

Για να ξεπεραστεί αυτό το πρόβλημα, η ιδέα του πρωτοκόλλου έρχεται στην εικόνα για τη μείωση της πολυπλοκότητας του υλικού και της κατανάλωσης ενέργειας. Μπορούμε να επεκτείνουμε περισσότερες δυνατότητες, όπως περιφερειακά I / 0, ADC, T / C και συσκευές μνήμης έως 128 συσκευές χρησιμοποιώντας αυτό το πρωτόκολλο I2C.
Ορολογία που χρησιμοποιείται σε πρωτόκολλα I2C

Πομπός: Η συσκευή που στέλνει δεδομένα στο δίαυλο ονομάζεται πομπός.

Δέκτης: Η συσκευή που λαμβάνει δεδομένα από το λεωφορείο ονομάζεται δέκτης.

Κύριος: Η συσκευή που ξεκινά μεταφορές για τη δημιουργία σημάτων ρολογιού και τερματίζει μια μεταφορά ονομάζεται κύρια.

Δούλος: Η συσκευή που απευθύνεται από έναν κύριο ονομάζεται σκλάβος.

Πολυμέσα: Περισσότεροι από ένας πλοίαρχοι μπορούν να προσπαθήσουν να ελέγξουν το λεωφορείο ταυτόχρονα χωρίς να καταστρέψουν το μήνυμα που ονομάζεται Multimaster.

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

Συγχρονισμός: Η διαδικασία συγχρονισμού των ρολογιών των δύο ή περισσότερων συσκευών ονομάζεται συγχρονισμός.

Βασικές ακολουθίες εντολών I2C

  1. Έναρξη συνθήκης bit
  2. Διακοπή συνθήκης Bit
  3. Όρος αναγνώρισης
  4. Λειτουργία Master to slave Write
  5. Διαβάστε τη λειτουργία Slave to Master

Έναρξη και διακοπή συνθήκης bit

Όταν ο κύριος (μικροελεγκτής) επιθυμεί να μιλήσει σε μια εξαρτημένη συσκευή (για παράδειγμα ADC), ξεκινά την επικοινωνία εκδίδοντας μια κατάσταση έναρξης στο δίαυλο I2C και στη συνέχεια εκδίδει μια κατάσταση διακοπής. Τα επίπεδα λογικής έναρξης και διακοπής I2C φαίνονται στο σχήμα.

Η συνθήκη έναρξης I2C ορίζεται ως υψηλή σε χαμηλή μετάβαση της γραμμής SDA ενώ η γραμμή SCL είναι υψηλή. Μια κατάσταση διακοπής I2C εμφανίζεται όταν η γραμμή SDA αλλάζει από χαμηλή σε υψηλή ενώ η γραμμή SCL είναι υψηλή.

Ο κύριος I2C δημιουργεί πάντα τις συνθήκες S και P. Μόλις ο κύριος I2C εκκινήσει μια συνθήκη START, ο δίαυλος I2c θεωρείται ότι βρίσκεται σε κατάσταση απασχολημένης λειτουργίας.

Έναρξη και διακοπή συνθήκης bit

Έναρξη και διακοπή συνθήκης bit

Προγραμματισμός:

ΕΝΑΡΞΗ Προϋπόθεση:

sbit SDA = P1 ^ 7 // αρχικοποίηση των καρφιτσών SDA και SCL του μικροελεγκτή //
sbit SCL = P1 ^ 6
άκυρη καθυστέρηση (χωρίς υπογραφή int)
κενή κύρια ()
{
SDA = 1 // επεξεργασία δεδομένων //
SCL = 1 // το ρολόι είναι υψηλό //
καθυστέρηση()
SDA = 0 // έστειλε τα δεδομένα //
καθυστέρηση()
SCL = 0 // το σήμα ρολογιού είναι χαμηλό //
}
Άκυρη καθυστέρηση (int p)
{
unsignedinta, β
Για (a = 0a<255a++) //delay function//
Για (b = 0b}

Κατάσταση STOP:

κενή κύρια ()
{
SDA = 0 // Διακοπή επεξεργασίας των δεδομένων //
SCL = 1 // το ρολόι είναι υψηλό //
καθυστέρηση()
SDA = 1 // Διακόπηκε //
καθυστέρηση()
SCL = 0 // το σήμα ρολογιού είναι χαμηλό //
}
Άκυρη καθυστέρηση (int p)
{
unsignedinta, β
Για (a = 0a<255a++) //delay function//
Για (b = 0b}

Συνθήκη αναγνώρισης (ACK) και Χωρίς αναγνώριση (NCK)

Κάθε byte που μεταδίδεται μέσω του διαύλου I2C ακολουθείται από συνθήκη αναγνώρισης από τον δέκτη, πράγμα που σημαίνει, αφού ο κύριος τραβήξει SCL χαμηλά για να ολοκληρώσει τη μετάδοση των 8-bit, το SDA θα τραβηχτεί χαμηλά από τον δέκτη στον κύριο. Εάν, μετά την απομάκρυνση της μετάδοσης του δέκτη, η γραμμή SDA LOW θεωρείται ως συνθήκη NCK.

Αναγνώριση (ACK)

Αναγνώριση (ACK)

Προγραμματισμός

Αναγνώριση
κενή κύρια ()
{
SDA = 0 // Η γραμμή SDA πηγαίνει στο χαμηλό //
SCL = 1 // το ρολόι είναι υψηλό σε χαμηλό //
καθυστέρηση (100)
SCL = 0
}
Χωρίς αναγνώριση:
κενή κύρια ()
{
SDA = 1 // Η γραμμή SDA πηγαίνει στο υψηλό //
SCL = 1 // το ρολόι είναι υψηλό σε χαμηλό //
καθυστέρηση (100)
SCL = 0
}

Λειτουργία Master to Slave Writes

Το πρωτόκολλο I2C μεταφέρει τα δεδομένα με τη μορφή πακέτων ή byte. Κάθε byte ακολουθείται από ένα bit αναγνώρισης.

Μορφή μεταφοράς δεδομένων

Μορφή μεταφοράς δεδομένων

Μορφή μεταφοράς δεδομένων

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

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

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

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

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

Προγραμματισμός

Εγγραφή λειτουργίας

voidwrite (χωρίς υπογραφή char d)
{
Χωρίς υπογραφή char k, j = 0x80
Για (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
καθυστέρηση (4)
SCL = 0
}
SDA = 1
SCL = 1
καθυστέρηση (2)
c = SDA
καθυστέρηση (2)
SCL = 0
}

Λειτουργία Master to Slave Read

Τα δεδομένα διαβάζονται από τη δευτερεύουσα συσκευή με τη μορφή bit ή bytes - διαβάστε πρώτα το πιο σημαντικό bit και διαβάστε το λιγότερο σημαντικό bit τελευταία.

Η μορφή ανάγνωσης δεδομένων

Μορφή ανάγνωσης δεδομένων

Μορφή ανάγνωσης δεδομένων

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

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

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

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

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

Προγραμματισμός

Άκυρη ανάγνωση ()
{
Χωρίς υπογραφή char j, z = 0x00, q = 0x80
SDA = 1
για (j = 0j<8j++)
{
SCL = 1
καθυστέρηση (100)
flag = SDA
αν (σημαία == 1)
q)
q = q >> 1
καθυστέρηση (100)
SCL = 0

Πρακτικό παράδειγμα διασύνδεσης ADC με τον μικροελεγκτή 8051

Το ADC είναι μια συσκευή που χρησιμοποιείται για τη μετατροπή των αναλογικών δεδομένων σε μορφή ψηφιακού και ψηφιακού σε αναλογικού. Ο μικροελεγκτής 8051 δεν διαθέτει ενσωματωμένο ADC, οπότε πρέπει να προσθέσουμε εξωτερικά μέσω του πρωτοκόλλου I2C. Το PCF8591 βασίζεται στο I2C αναλογικό σε ψηφιακό και ψηφιακό σε αναλογικό μετατροπέα. Αυτή η συσκευή μπορεί να υποστηρίξει έως και 4-αναλογικά κανάλια εισόδου μαζί με τάση 2,5 έως 6v.

Αναλογικά αποτελέσματα

Οι αναλογικές έξοδοι έχουν τη μορφή τάσεων. Για παράδειγμα, ο αναλογικός αισθητήρας 5v δίνει λογική εξόδου 0,01v έως 5v.
Η μέγιστη ψηφιακή τιμή των 5v είναι = 256.
Η τιμή των 2,5v είναι = 123 σύμφωνα με τη μέγιστη τιμή τάσης.

Ο τύπος της αναλογικής εξόδου είναι:

Ο τύπος των ψηφιακών εξόδων:

Διασύνδεση ADC με τον μικροελεγκτή 8051

Διασύνδεση ADC με τον μικροελεγκτή 8051

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

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