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