Πίνακας περιεχομένων:

Παράδειγμα προγραμματισμού MTP Arduino: 5 βήματα
Παράδειγμα προγραμματισμού MTP Arduino: 5 βήματα

Βίντεο: Παράδειγμα προγραμματισμού MTP Arduino: 5 βήματα

Βίντεο: Παράδειγμα προγραμματισμού MTP Arduino: 5 βήματα
Βίντεο: PLC - ΠΑΡΑΔΕΙΓΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2024, Νοέμβριος
Anonim
Παράδειγμα προγραμματισμού MTP Arduino
Παράδειγμα προγραμματισμού MTP Arduino

Σε αυτό το Instructable, δείχνουμε πώς να χρησιμοποιήσετε το σκίτσο προγραμματισμού SLG46824/6 Arduino για τον προγραμματισμό μιας συσκευής Dialog SLG46824/6 GreenPAK ™ Multiple-Time Programmable (MTP).

Οι περισσότερες συσκευές GreenPAK είναι One-Time Programmable (OTP), πράγμα που σημαίνει ότι μόλις γραφτεί η μη πτητική τράπεζα μνήμης (NVM), δεν μπορεί να αντικατασταθεί. Τα GreenPAK με τη δυνατότητα MTP, όπως τα SLG46824 και SLG46826, έχουν διαφορετικό τύπο τράπεζας μνήμης NVM που μπορεί να προγραμματιστεί περισσότερες από μία φορές.

Έχουμε γράψει ένα σκίτσο Arduino που επιτρέπει στον χρήστη να προγραμματίσει ένα MTP GreenPAK με μερικές απλές σειριακές εντολές παρακολούθησης. Σε αυτό το Instructable χρησιμοποιούμε ένα SLG46826 ως GreenPAK με MTP.

Παρέχουμε δείγμα κώδικα για το Arduino Uno χρησιμοποιώντας μια πλατφόρμα ανοιχτού κώδικα που βασίζεται σε C/C ++. Οι σχεδιαστές θα πρέπει να επεκτείνουν τις τεχνικές που χρησιμοποιούνται στον κώδικα Arduino για τη συγκεκριμένη πλατφόρμα τους.

Για συγκεκριμένες πληροφορίες σχετικά με τις προδιαγραφές σήματος I2C, τη διεύθυνση I2C και τους χώρους μνήμης, ανατρέξτε στον Οδηγό προγραμματισμού του συστήματος GreenPAK που παρέχεται στη σελίδα προϊόντος SLG46826. Αυτό το Instructable παρέχει μια απλή εφαρμογή αυτού του οδηγού προγραμματισμού.

Παρακάτω περιγράφουμε τα βήματα που απαιτούνται για να κατανοήσουμε πώς έχει προγραμματιστεί το τσιπ GreenPAK. Ωστόσο, εάν θέλετε απλώς να λάβετε το αποτέλεσμα προγραμματισμού, κατεβάστε το λογισμικό GreenPAK για να δείτε το ήδη ολοκληρωμένο GreenPAK Design File. Συνδέστε το GreenPAK Development Kit στον υπολογιστή σας και πατήστε το πρόγραμμα για να δημιουργήσετε το προσαρμοσμένο IC.

Βήμα 1: Συνδέσεις Arduino-GreenPAK

Συνδέσεις Arduino-GreenPAK
Συνδέσεις Arduino-GreenPAK
Συνδέσεις Arduino-GreenPAK
Συνδέσεις Arduino-GreenPAK

Για να προγραμματίσουμε το NVM του SLG46826 GreenPAK με το σκίτσο Arduino, θα πρέπει πρώτα να συνδέσουμε τέσσερις καρφίτσες Arduino Uno στο GreenPAK. Μπορείτε να συνδέσετε αυτές τις ακίδες απευθείας στον προσαρμογέα υποδοχής GreenPAK ή σε έναν πίνακα ανάρτησης με το GreenPAK συγκολλημένο.

Λάβετε υπόψη ότι οι εξωτερικές αντιστάσεις έλξης I2C δεν εμφανίζονται στο Σχήμα 1. Συνδέστε μια αντίσταση έλξης 4,7 kΩ από SCL και SDA στην έξοδο 3,3 V του Arduino.

Βήμα 2: Εξαγωγή δεδομένων GreenPAK NVM από ένα σχεδιαστικό αρχείο GreenPAK

Εξαγωγή δεδομένων GreenPAK NVM από αρχείο σχεδιασμού GreenPAK
Εξαγωγή δεδομένων GreenPAK NVM από αρχείο σχεδιασμού GreenPAK
Εξαγωγή δεδομένων GreenPAK NVM από αρχείο σχεδιασμού GreenPAK
Εξαγωγή δεδομένων GreenPAK NVM από αρχείο σχεδιασμού GreenPAK
Εξαγωγή δεδομένων GreenPAK NVM από αρχείο σχεδιασμού GreenPAK
Εξαγωγή δεδομένων GreenPAK NVM από αρχείο σχεδιασμού GreenPAK

Θα συγκεντρώσουμε έναν πολύ απλό σχεδιασμό GreenPAK για να επεξηγήσουμε τον τρόπο εξαγωγής των δεδομένων NVM. Ο παρακάτω σχεδιασμός είναι ένας απλός επιλογέας επιπέδου όπου οι μπλε ακίδες στα αριστερά συνδέονται με το VDD (3,3v), ενώ οι κίτρινες ακίδες στα δεξιά είναι συνδεδεμένες με το VDD2 (1,8v).

Για να εξαγάγετε τις πληροφορίες από αυτό το σχέδιο, πρέπει να επιλέξετε Αρχείο → Εξαγωγή → Εξαγωγή NVM, όπως φαίνεται στο Σχήμα 3.

Στη συνέχεια, θα πρέπει να επιλέξετε Intel HEX Files (*.hex) ως τύπο αρχείου και να αποθηκεύσετε το αρχείο.

Τώρα, θα πρέπει να ανοίξετε το.hex αρχείο με έναν επεξεργαστή κειμένου (όπως το Σημειωματάριο ++). Για να μάθετε περισσότερα σχετικά με τη μορφή και τη σύνταξη αρχείου HEX της Intel, ανατρέξτε στη σελίδα της Wikipedia. Για αυτήν την εφαρμογή μας ενδιαφέρει μόνο το τμήμα δεδομένων του αρχείου όπως φαίνεται στο σχήμα 5.

Επισημάνετε και αντιγράψτε τα 256 byte δεδομένων διαμόρφωσης NVM που βρίσκονται στο αρχείο HEX. Κάθε γραμμή που αντιγράφουμε έχει 32 χαρακτήρες, που αντιστοιχεί σε 16 byte.

Επικολλήστε τις πληροφορίες στην επισημασμένη ενότητα nvmString του σκίτσου Arduino όπως φαίνεται στο σχήμα 6. Εάν χρησιμοποιείτε έναν μικροελεγκτή μη Arduino, θα μπορούσατε να γράψετε μια συνάρτηση για την ανάλυση των nvmData που είναι αποθηκευμένα στο αρχείο GreenPAK. GP6. (Εάν ανοίξετε ένα αρχείο GreenPAK με επεξεργαστή κειμένου, θα δείτε ότι αποθηκεύουμε πληροφορίες έργου σε εύκολα προσβάσιμη μορφή XML.)

Για να ορίσετε τα δεδομένα EEPROM για το σχεδιασμό σας GreenPAK, επιλέξτε το μπλοκ EEPROM από τον πίνακα στοιχείων, ανοίξτε τον πίνακα ιδιοτήτων του και κάντε κλικ στην επιλογή "Ορισμός δεδομένων".

Τώρα μπορείτε να επεξεργαστείτε κάθε byte στο EEPROM ξεχωριστά με τη διεπαφή GUI.

Μόλις ορίσετε τα δεδομένα σας EEPROM, μπορείτε να τα εξαγάγετε σε ένα αρχείο HEX χρησιμοποιώντας την ίδια μέθοδο που περιγράφηκε προηγουμένως για την εξαγωγή των δεδομένων NVM. Εισαγάγετε αυτά τα 256 byte δεδομένων EEPROM στην ενότητα eepromString του σκίτσου Arduino.

Για κάθε προσαρμοσμένο σχεδιασμό, είναι σημαντικό να ελέγχετε τις ρυθμίσεις προστασίας στην καρτέλα "Ασφάλεια" των ρυθμίσεων του έργου. Αυτή η καρτέλα διαμορφώνει τα bits προστασίας για τους καταχωρητές διαμόρφωσης μήτρας, το NVM και το EEPROM. Κάτω από ορισμένες διαμορφώσεις, η μεταφόρτωση της ακολουθίας NVM μπορεί να κλειδώσει το SLG46824/6 στην τρέχουσα διαμόρφωσή του και να αφαιρέσει τη λειτουργικότητα MTP του τσιπ.

Βήμα 3: Χρησιμοποιήστε το Arduino Sketch

Χρησιμοποιήστε το Arduino Sketch
Χρησιμοποιήστε το Arduino Sketch

Ανεβάστε το σκίτσο στο Arduino σας και ανοίξτε τη σειριακή οθόνη με ρυθμό baud 115200. Τώρα μπορείτε να χρησιμοποιήσετε τις προτροπές MENU του σκίτσου για να εκτελέσετε πολλές εντολές:

● Ανάγνωση - διαβάζει είτε τα δεδομένα NVM της συσκευής είτε τα δεδομένα EEPROM χρησιμοποιώντας την καθορισμένη διεύθυνση slave

● Erase - διαγράφει είτε τα δεδομένα NVM της συσκευής είτε τα δεδομένα EEPROM χρησιμοποιώντας την καθορισμένη διεύθυνση slave

● Εγγραφή - Διαγράφει και, στη συνέχεια, γράφει είτε τα δεδομένα NVM της συσκευής είτε τα δεδομένα EEPROM χρησιμοποιώντας την καθορισμένη διεύθυνση slave. Αυτή η εντολή γράφει τα δεδομένα που αποθηκεύονται στους πίνακες nvmString ή eepromString.

● Ping - επιστρέφει μια λίστα διευθύνσεων υποτελών συσκευών που είναι συνδεδεμένες στο δίαυλο I2C

Τα αποτελέσματα αυτών των εντολών θα εκτυπωθούν στην κονσόλα σειριακής οθόνης.

Βήμα 4: Συμβουλές προγραμματισμού και βέλτιστες πρακτικές

Κατά τη διάρκεια της υποστήριξης του SLG46824/6, έχουμε τεκμηριώσει μερικές συμβουλές προγραμματισμού που θα σας βοηθήσουν να αποφύγετε τις κοινές παγίδες που σχετίζονται με τη διαγραφή και την εγγραφή στο χώρο διευθύνσεων NVM. Οι ακόλουθες υποενότητες περιγράφουν αυτό το θέμα με περισσότερες λεπτομέρειες.

1. Εκτέλεση ακριβούς σελίδας NVM 16-Byte:

Όταν γράφετε δεδομένα στο NVM του SLG46824/6, υπάρχουν τρεις τεχνικές που πρέπει να αποφύγετε:

● Η σελίδα γράφει με λιγότερα από 16 byte

● Η σελίδα γράφει με περισσότερα από 16 byte

● Η σελίδα γράφει ότι δεν ξεκινά με την πρώτη εγγραφή σε μια σελίδα (IE: 0x10, 0x20, κ.λπ.)

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

2. Μεταφορά δεδομένων NVM στους καταχωρητές διαμόρφωσης μήτρας

Όταν γράφεται το NVM, οι καταχωρητές διαμόρφωσης μήτρας δεν φορτώνονται αυτόματα με τα πρόσφατα γραμμένα δεδομένα NVM. Η μεταφορά πρέπει να ξεκινήσει χειροκίνητα κάνοντας ποδήλατο στο PAK VDD ή δημιουργώντας μια μαλακή επαναφορά χρησιμοποιώντας το I2C. Με τη ρύθμιση καταχωρητή στη διεύθυνση 0xC8, η συσκευή ενεργοποιεί εκ νέου την ακολουθία Power-On Reset (POR) και επαναφορτώνει τα δεδομένα καταχωρητή από το NVM στους καταχωρητές.

3. Επαναφορά της διεύθυνσης I2C μετά από διαγραφή NVM:

Όταν διαγραφεί το NVM, η διεύθυνση NVM που περιέχει τη διεύθυνση slave I2C θα οριστεί σε 0000. Μετά τη διαγραφή, το τσιπ θα διατηρήσει την τρέχουσα διεύθυνση slave του μέσα στους καταχωρητές διαμόρφωσης μέχρι να γίνει επαναφορά της συσκευής όπως περιγράφηκε παραπάνω. Μόλις γίνει επαναφορά του τσιπ, η διεύθυνση slave του I2C πρέπει να οριστεί στη διεύθυνση 0xCA εντός των καταχωρητών διαμόρφωσης κάθε φορά που το GreenPAK ενεργοποιείται ή επαναφέρεται. Αυτό πρέπει να γίνει έως ότου η νέα σελίδα διευθύνσεων I2C slave έχει γραφτεί στο NVM.

Βήμα 5: Συζήτηση Errata

Συζήτηση Errata
Συζήτηση Errata

Κατά την εγγραφή στο "Page Elete Byte" (Διεύθυνση: 0xE3), το SLG46824/6 παράγει ένα ACK που δεν είναι συμβατό με το I2C μετά το τμήμα "Δεδομένα" της εντολής I2C. Αυτή η συμπεριφορά μπορεί να ερμηνευτεί ως NACK ανάλογα με την εφαρμογή του κύριου I2C.

Για να ικανοποιήσουμε αυτήν τη συμπεριφορά, τροποποιήσαμε τον προγραμματιστή Arduino σχολιάζοντας τον κώδικα που φαίνεται στο σχήμα 11. Αυτή η ενότητα κώδικα ελέγχει για ένα AC2 I2C στο τέλος κάθε εντολής I2C στη λειτουργία eraseChip (). Αυτή η λειτουργία χρησιμοποιείται για τη διαγραφή των σελίδων NVM και EEPROM. Δεδομένου ότι αυτό το τμήμα κώδικα βρίσκεται σε έναν βρόχο For, το "return -1;" γραμμή προκαλεί την πρόωρη έξοδο του MCU από τη λειτουργία.

Παρά την παρουσία NACK, οι λειτουργίες διαγραφής NVM και EEPROM θα εκτελούνται σωστά. Για λεπτομερή εξήγηση αυτής της συμπεριφοράς, ανατρέξτε στην ενότητα "Τεύχος 2: Συμπεριφορά ACK που δεν συμμορφώνεται με το I2C για το NVM και το EEPROM Page Erase Byte" στο έγγραφο σφαλμάτων SLG46824/6 (Αναθεώρηση XC) στον ιστότοπο του Dialog.

συμπέρασμα

Σε αυτό το Instructable περιγράφουμε τη διαδικασία χρήσης του παρεχόμενου προγραμματιστή Arduino για τη μεταφόρτωση προσαρμοσμένων συμβολοσειρών NVM και EEPROM σε ένα IC GreenPAK. Ο κώδικας στο Arduino Sketch σχολιάζεται διεξοδικά, αλλά αν έχετε οποιεσδήποτε ερωτήσεις σχετικά με το σκίτσο, επικοινωνήστε με έναν από τους Μηχανικούς Εφαρμογών Πεδίου ή δημοσιεύστε την ερώτησή σας στο φόρουμ μας. Για πιο εμπεριστατωμένες πληροφορίες σχετικά με τους καταχωρητές και τις διαδικασίες προγραμματισμού MTP, ανατρέξτε στον Οδηγό προγραμματισμού εντός συστήματος του Dialog.

Συνιστάται: