Επισκόπηση και οφέλη του λεωφορείου I2C
Αναπτύχθηκε από τη Philips τη δεκαετία του 1980, I2Το C (εναλλακτικά γραφή I2C) έχει γίνει ένα από τα πιο συχνά χρησιμοποιούμενα πρωτόκολλα σειριακής επικοινωνίας στα ηλεκτρονικά. Το I2C διευκολύνει την επικοινωνία μεταξύ ηλεκτρονικών εξαρτημάτων ή ενσωματωμένων κυκλώματα, εάν τα εξαρτήματα βρίσκονται στο ίδιο PCB ή συνδέεται με καλώδιο.
Τι είναι το Πρωτόκολλο I2C;
Το I2C είναι ένα σειριακό πρωτόκολλο επικοινωνίας που απαιτεί μόνο δύο γραμμές σήματος. Σχεδιάστηκε για επικοινωνία μεταξύ τσιπ σε πλακέτα τυπωμένου κυκλώματος (PCB). Το I2C σχεδιάστηκε αρχικά για 100 Kbps επικοινωνία. Ωστόσο, έχουν αναπτυχθεί ταχύτεροι τρόποι μετάδοσης δεδομένων με την πάροδο των ετών για να επιτυγχάνονται ταχύτητες έως και 3,4 Mbit.
Το βασικό χαρακτηριστικό του I2C είναι η δυνατότητα να διαθέτει πολλά στοιχεία σε ένα μόνο λεωφορείο επικοινωνίας με μόνο δύο καλώδια, γεγονός που καθιστά το I2C τέλειο για απλές εφαρμογές. Το πρωτόκολλο I2C έχει καθιερωθεί ως επίσημο πρότυπο, επιτρέποντας συμβατότητα προς τα πίσω μεταξύ των υλοποιήσεων I2C.
Σήματα I2C
Το πρωτόκολλο I2C χρησιμοποιεί δύο αμφίδρομες γραμμές σήματος για την επικοινωνία με τις συσκευές στο δίαυλο επικοινωνίας. Τα δύο σήματα που χρησιμοποιούνται είναι:
- Σειριακή γραμμή δεδομένων (SDL)
- Ρολόι σειριακών δεδομένων (SDC)
Ο λόγος που το I2C μπορεί να χρησιμοποιήσει μόνο δύο σήματα για να επικοινωνήσει με πολλά περιφερειακά είναι στον τρόπο χειρισμού της επικοινωνίας κατά μήκος του διαύλου. Κάθε επικοινωνία I2C ξεκινά με ένα 7-κομμάτι (ή 10-bit) διεύθυνση που καλεί τη διεύθυνση του περιφερειακού.
Αυτό επιτρέπει σε πολλές συσκευές στο δίαυλο I2C να παίζουν το ρόλο της κύριας συσκευής όπως επιβάλλουν οι ανάγκες του συστήματος. Για την αποφυγή συγκρούσεων επικοινωνίας, το πρωτόκολλο I2C περιλαμβάνει δυνατότητες διαιτησίας και ανίχνευσης σύγκρουσης, οι οποίες επιτρέπουν την ομαλή επικοινωνία κατά μήκος του διαύλου.
Οφέλη του I2C
Ως πρωτόκολλο επικοινωνίας, το I2C έχει τα ακόλουθα πλεονεκτήματα:
- Ευέλικτοι ρυθμοί μετάδοσης δεδομένων.
- Επικοινωνία σε μεγαλύτερη απόσταση από SPI.
- Κάθε συσκευή στο δίαυλο είναι ανεξάρτητα διευθυνσιοδοτούμενη.
- Οι συσκευές έχουν μια απλή κύρια/δευτερεύουσα σχέση.
- Απαιτεί μόνο δύο γραμμές σήματος.
- Είναι σε θέση να χειρίζεται πολλαπλές πρωτεύουσες επικοινωνίες παρέχοντας διαιτησία και ανίχνευση σύγκρουσης επικοινωνίας.
Περιορισμοί του I2C
Με όλα αυτά τα πλεονεκτήματα, το I2C έχει επίσης μερικούς περιορισμούς που μπορεί να χρειαστεί να σχεδιαστούν γύρω από αυτό. Οι πιο σημαντικοί περιορισμοί του I2C περιλαμβάνουν:
- Δεδομένου ότι μόνο 7-bit (ή 10-bit) είναι διαθέσιμα για διευθυνσιοδότηση συσκευών, οι συσκευές στον ίδιο δίαυλο μπορούν να μοιράζονται την ίδια διεύθυνση. Ορισμένες συσκευές μπορούν να διαμορφώσουν τα τελευταία bit της διεύθυνσης, αλλά αυτό επιβάλλει έναν περιορισμό των συσκευών στον ίδιο δίαυλο.
- Μόνο λίγες περιορισμένες ταχύτητες επικοινωνίας είναι διαθέσιμες και πολλές συσκευές δεν υποστηρίζουν τη μετάδοση σε υψηλότερες ταχύτητες. Απαιτείται μερική υποστήριξη για κάθε ταχύτητα στο δίαυλο για να αποτρέψει τις πιο αργές συσκευές να πιάσουν μερικές μεταδόσεις που μπορεί να οδηγήσουν σε λειτουργικές δυσλειτουργίες.
- Η κοινή φύση του διαύλου I2C μπορεί να έχει ως αποτέλεσμα να κρέμεται ολόκληρο το λεωφορείο όταν σταματήσει να λειτουργεί μια μεμονωμένη συσκευή στο λεωφορείο. Η ανακύκλωση του ρεύματος στο λεωφορείο μπορεί να αποκαταστήσει τη σωστή λειτουργία.
- Εφόσον οι συσκευές ορίζουν τη δική τους ταχύτητα επικοινωνίας, οι πιο αργές λειτουργικές συσκευές μπορούν να καθυστερήσουν τη λειτουργία ταχύτερων συσκευών.
- Το I2C αντλεί περισσότερη ισχύ από άλλους σειριακούς διαύλους επικοινωνίας λόγω της τοπολογίας ανοιχτής αποστράγγισης των γραμμών επικοινωνίας.
- Οι περιορισμοί του διαύλου I2C συνήθως περιορίζουν τον αριθμό των συσκευών σε ένα δίαυλο σε περίπου δώδεκα.
Εφαρμογές I2C
Το I2C είναι μια εξαιρετική επιλογή για εφαρμογές που απαιτούν χαμηλό κόστος και απλή υλοποίηση και όχι υψηλή ταχύτητα. Για παράδειγμα, οι συνήθεις χρήσεις του πρωτοκόλλου επικοινωνίας I2C περιλαμβάνουν:
- Ανάγνωση ορισμένων IC μνήμης.
- Πρόσβαση σε DAC και ADC.
- Μετάδοση και έλεγχος ενεργειών που κατευθύνονται από τον χρήστη.
- Ανάγνωση αισθητήρων υλικού.
- Επικοινωνία με πολλαπλούς μικροελεγκτές.