- Τι είναι το πρωτόκολλο επικοινωνίας I2C;
- Πώς λειτουργεί η επικοινωνία I2C;
- Πού να χρησιμοποιήσετε την επικοινωνία I2C;
- I2C σε MSP430: Έλεγχος ψηφιακού ποτενσιόμετρου AD5171
Το MSP430 είναι μια ισχυρή πλατφόρμα που παρέχεται από την Texas Instruments για ενσωματωμένα έργα, η ευέλικτη φύση του το έχει κάνει να βρει τρόπους σε πολλές εφαρμογές και η φάση συνεχίζει. Εάν ακολουθήσατε τα μαθήματα MSP430, τότε θα έχετε παρατηρήσει ότι έχουμε ήδη καλύψει ένα ευρύ φάσμα εκπαιδευτικών σε αυτόν τον μικροελεγκτή ξεκινώντας από τα βασικά. Από τώρα, έχουμε καλύψει τα βασικά που μπορούμε να πάρουμε σε πιο ενδιαφέροντα πράγματα όπως η πύλη επικοινωνίας.
Στο τεράστιο σύστημα ενσωματωμένων εφαρμογών, κανένας μικροελεγκτής δεν μπορεί να εκτελέσει όλες τις δραστηριότητες από μόνη της. Σε κάποιο στάδιο του χρόνου πρέπει να επικοινωνήσει με άλλες συσκευές για να μοιραστεί πληροφορίες, υπάρχουν πολλοί διαφορετικοί τύποι πρωτοκόλλων επικοινωνίας για να μοιραστούν αυτές τις πληροφορίες, αλλά τα πιο χρησιμοποιημένα είναι USART, IIC, SPI και CAN. Κάθε πρωτόκολλο επικοινωνίας έχει το δικό του πλεονέκτημα και μειονέκτημα. Ας επικεντρωθούμε στο μέρος I2C για τώρα, καθώς αυτό θα μάθουμε σε αυτό το σεμινάριο.
Τι είναι το πρωτόκολλο επικοινωνίας I2C;
Ο όρος IIC σημαίνει " Inter Integrated Circuits ". Κανονικά δηλώνεται ως I2C ή I τετράγωνο C ή ακόμα και ως πρωτόκολλο διασύνδεσης 2 καλωδίων (TWI) σε ορισμένα σημεία, αλλά όλα σημαίνει το ίδιο. Το I2C είναι ένα σύγχρονο πρωτόκολλο επικοινωνίας που σημαίνει, και οι δύο συσκευές που μοιράζονται τις πληροφορίες πρέπει να μοιράζονται ένα κοινό σήμα ρολογιού. Έχει μόνο δύο καλώδια για την κοινή χρήση πληροφοριών από τις οποίες το ένα χρησιμοποιείται για το σήμα κόκορας και το άλλο χρησιμοποιείται για την αποστολή και λήψη δεδομένων.
Πώς λειτουργεί η επικοινωνία I2C;
Η επικοινωνία I2C παρουσιάστηκε για πρώτη φορά από τον Phillips. Όπως ειπώθηκε νωρίτερα, έχει δύο καλώδια, αυτά τα δύο καλώδια θα συνδεθούν σε δύο συσκευές. Εδώ μια συσκευή ονομάζεται κύριος και η άλλη συσκευή ονομάζεται σκλάβος. Η επικοινωνία πρέπει και θα συμβαίνει πάντα μεταξύ δύο Δασκάλων και Σκλάβων. Το πλεονέκτημα της επικοινωνίας I2C είναι ότι περισσότεροι από ένας σκλάβοι μπορούν να συνδεθούν με έναν Master.
Η πλήρης επικοινωνία πραγματοποιείται μέσω αυτών των δύο καλωδίων, δηλαδή Serial Clock (SCL) και Serial Data (SDA).
Serial Clock (SCL): Μοιράζεται το σήμα ρολογιού που δημιουργείται από τον κύριο με το slave
Σειριακά δεδομένα (SDA): Στέλνει τα δεδομένα από και προς το Master και το slave.
Ανά πάσα στιγμή μόνο ο πλοίαρχος θα μπορεί να ξεκινήσει την επικοινωνία. Δεδομένου ότι υπάρχουν περισσότεροι από ένας σκλάβοι στο λεωφορείο, ο πλοίαρχος πρέπει να αναφέρεται σε κάθε σκλάβος χρησιμοποιώντας διαφορετική διεύθυνση. Όταν απευθύνεται μόνο ο σκλάβος με τη συγκεκριμένη διεύθυνση θα απαντήσει πίσω με τις πληροφορίες, ενώ οι άλλοι θα σταματήσουν. Με αυτόν τον τρόπο μπορούμε να χρησιμοποιήσουμε το ίδιο λεωφορείο για επικοινωνία με πολλές συσκευές.
Τα επίπεδα τάσης του I2C δεν είναι προκαθορισμένα. Η επικοινωνία I2C είναι ευέλικτη, σημαίνει ότι η συσκευή που τροφοδοτείται από 5v volt, μπορεί να χρησιμοποιήσει 5v για I2C και οι συσκευές 3.3v μπορούν να χρησιμοποιήσουν 3v για επικοινωνία I2C. Τι γίνεται όμως αν δύο συσκευές που λειτουργούν σε διαφορετικές τάσεις, πρέπει να επικοινωνήσουν χρησιμοποιώντας το I2C; Μια 5V I2C λεωφορείο δεν μπορεί να συνδεθεί με 3.3V συσκευή. Σε αυτήν την περίπτωση χρησιμοποιούνται μετατοπιστές τάσης για να ταιριάζουν με τα επίπεδα τάσης μεταξύ δύο διαύλων I2C.
Υπάρχουν ορισμένα σύνολα όρων που πλαισιώνουν μια συναλλαγή. Η αρχικοποίηση της μετάδοσης ξεκινά με ένα μειωμένο άκρο του SDA, το οποίο ορίζεται ως συνθήκη «ΕΚΚΙΝΗΣΗ» στο παρακάτω διάγραμμα όπου ο κύριος αφήνει το SCL υψηλό ενώ ρυθμίζει το SDA χαμηλό.
Όπως φαίνεται στο παραπάνω διάγραμμα παρακάτω, Το μειονέκτημα του SDA είναι η σκανδάλη υλικού για την κατάσταση START. Μετά από αυτό όλες οι συσκευές του ίδιου διαύλου μπαίνουν σε λειτουργία ακρόασης.
Με τον ίδιο τρόπο, το ανερχόμενο άκρο του SDA σταματά τη μετάδοση που εμφανίζεται ως κατάσταση «STOP» στο παραπάνω διάγραμμα, όπου ο κύριος αφήνει το SCL ψηλά και επίσης απελευθερώνει το SDA για να πάει ΥΨΗΛΑ. Έτσι, η άνοδος του SDA σταματά τη μετάδοση.
Το bit R / W δείχνει την κατεύθυνση μετάδοσης των ακόλουθων byte, εάν είναι ΥΨΗΛΟ σημαίνει ότι ο σκλάβος θα μεταδώσει και εάν είναι χαμηλός σημαίνει ότι ο κύριος θα μεταδώσει.
Κάθε bit μεταδίδεται σε κάθε κύκλο ρολογιού, οπότε χρειάζονται 8 κύκλους ρολογιού για τη μετάδοση ενός byte. Μετά από κάθε byte που αποστέλλεται ή λαμβάνεται, ο ένατος κύκλος ρολογιού διατηρείται για το ACK / NACK (αναγνωρίζεται / δεν αναγνωρίζεται). Αυτό το bit ACK δημιουργείται είτε από σκλάβους είτε από τον κύριο ανάλογα με την κατάσταση. Για bit ACK, το SDA έχει οριστεί σε χαμηλά από τον κύριο ή τον σκλάβο στον 9ο κύκλο ρολογιού. Επομένως, είναι χαμηλό, θεωρείται ως ACK διαφορετικά NACK.
Πού να χρησιμοποιήσετε την επικοινωνία I2C;
Η επικοινωνία I2C χρησιμοποιείται μόνο για επικοινωνία μικρής απόστασης. Είναι σίγουρα αξιόπιστο σε ένα βαθμό, δεδομένου ότι διαθέτει συγχρονισμένο παλμό ρολογιού για να το κάνει έξυπνο. Αυτό το πρωτόκολλο χρησιμοποιείται κυρίως για επικοινωνία με αισθητήρα ή άλλες συσκευές που πρέπει να στέλνουν πληροφορίες σε έναν κύριο. Είναι πολύ βολικό όταν ένας μικροελεγκτής πρέπει να επικοινωνεί με πολλές άλλες υπομονάδες χρησιμοποιώντας τουλάχιστον μόνο καλώδια. Αν ψάχνετε για επικοινωνία μεγάλης εμβέλειας, πρέπει να δοκιμάσετε το RS232 και αν ψάχνετε για πιο αξιόπιστη επικοινωνία, θα πρέπει να δοκιμάσετε το πρωτόκολλο SPI.
I2C σε MSP430: Έλεγχος ψηφιακού ποτενσιόμετρου AD5171
Το Energia IDE είναι ένα από τα πιο εύκολα προγράμματα για τον προγραμματισμό του MSP430 Είναι ίδιο με το Arduino IDE. Μπορείτε να μάθετε περισσότερα για το πώς να ξεκινήσετε με το MSP430 χρησιμοποιώντας το Energia IDE εδώ.
Επομένως, για να χρησιμοποιήσουμε το I2C στο Energia IDE πρέπει να συμπεριλάβουμε απλώς το αρχείο κεφαλίδας wire.h. Η δήλωση καρφιτσών (SDA και SCL) βρίσκεται μέσα στη βιβλιοθήκη καλωδίων, επομένως δεν χρειάζεται να δηλώσουμε στη λειτουργία εγκατάστασης .
Δείγματα παραδειγμάτων βρίσκονται στο μενού Παράδειγμα του IDE. Ένα από τα παραδείγματα εξηγείται παρακάτω:
Αυτό το παράδειγμα δείχνει πώς μπορείτε να ελέγξετε ένα ψηφιακό ποτενσιόμετρο αναλογικών συσκευών AD5171 που επικοινωνεί μέσω του συγχρονισμένου πρωτοκόλλου I2C. Χρησιμοποιώντας τη βιβλιοθήκη Wire I2C του MSP, το ψηφιακό δοχείο θα περάσει από 64 επίπεδα αντίστασης, εξασθενίζοντας ένα LED.
Πρώτον, θα συμπεριλάβουμε τη βιβλιοθήκη που είναι υπεύθυνη για την επικοινωνία i2c, δηλαδή τη βιβλιοθήκη καλωδίων
#περιλαμβάνω
Στη λειτουργία εγκατάστασης , θα ξεκινήσουμε τη συνάρτηση βιβλιοθήκης μέσω .begin () .
άκυρη ρύθμιση () { Wire.begin (); }
Στη συνέχεια, αρχικοποιήστε μια μεταβλητή val για αποθήκευση τιμών ποτενσιόμετρου
byte val = 0;
Στη λειτουργία βρόχου , θα ξεκινήσουμε τη μετάδοση στη δευτερεύουσα συσκευή i2c (στην περίπτωση αυτή Ψηφιακό ποτενσιόμετρο IC) καθορίζοντας τη διεύθυνση της συσκευής που δίνεται στο φύλλο δεδομένων του IC.
void loop () { Wire.beginTransmission (44); // μετάδοση στη συσκευή # 44 (0x2c)
Στη συνέχεια, ουρά byte, δηλαδή δεδομένα που θέλετε να στείλετε στο IC για μετάδοση με τη λειτουργία εγγραφής () .
Wire.write (byte (0x00)); // στέλνει οδηγίες byte Wire.write (val); // στέλνει ποτενσιόμετρο τιμή byte
Στη συνέχεια, μεταδώστε τους καλώντας το endTransmission () .
Wire.endTransmission (); // διακοπή μετάδοσης val ++; // τιμή προσαύξησης εάν (val == 64) {// εάν φτάσει στην 64η θέση (μέγ.) val = 0; // εκκίνηση από τη χαμηλότερη τιμή } καθυστέρηση (500) }