Πίνακας περιεχομένων:
- Βήμα 1: Συναρμολόγηση
- Βήμα 2: Χαρακτηριστικά που χρησιμοποιούνται - Διακομιστής
- Βήμα 3: Χρησιμοποιείται κύκλωμα
- Βήμα 4: Πηγαίος κώδικας: Master
- Βήμα 5: Πηγαίος κώδικας: Slave
- Βήμα 6: Αναλυτής: Υλικό
- Βήμα 7: Εγκατάσταση λογισμικού Saleae
- Βήμα 8: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
- Βήμα 9: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
- Βήμα 10: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
- Βήμα 11: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
- Βήμα 12: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
- Βήμα 13: Λήψη: Επισκόπηση
- Βήμα 14: Λήψη: Αποτέλεσμα ανάλυσης πρωτοκόλλου
- Βήμα 15: Λήψη: Κανάλι 0 και δεδομένα (SDA)
- Βήμα 16: Λήψη: Κανάλι 1 και Ρολόι (SCL)
- Βήμα 17: Λήψη: Κανάλι 2 και Σειριακό (TX0)
- Βήμα 18: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
- Βήμα 19: Λήψη: Παλιοσκόπιο και αναλυτής
- Βήμα 20: Λήψη: Παρατήρηση μιας αποτυχίας (παράδειγμα σειριακής αποτυχίας)
- Βήμα 21: Κατεβάστε τα αρχεία
Βίντεο: Ανοιξε τα μάτια σου! Λογικός αναλυτής: 21 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Ο αναλυτής λογικής διευκολύνει την οπτικοποίηση της αμαξοστοιχίας παλμών, τα οποία είναι τα κομμάτια που ταξιδεύουν σε μια γραμμή επικοινωνίας. Έτσι, ανοίγει τα μάτια σας για να εντοπίσετε ένα πιθανό πρόβλημα. Γιατί είναι σημαντικό? Είναι ένα πολύ αποτελεσματικό εργαλείο ανάπτυξης και ανίχνευσης βλαβών που μπορεί να σας εξοικονομήσει χρόνο. Σε αυτό το βίντεο σήμερα, θα αξιολογήσουμε τη σημασία του λογικού αναλυτή, θα παρατηρήσουμε ορισμένα πρωτόκολλα συνηθισμένων πρακτικών κατά τη χρήση αυτής της συσκευής και θα παραδειγματίσουμε μια αποτυχία ανίχνευσης χωρίς τη βοήθεια ενός λογικού αναλυτή.
Σε αυτό το βίντεο, χρησιμοποίησα ένα σχετικά φθηνό (περίπου $ 35) και αποτελεσματικό μοντέλο, με γραφική διεπαφή και δωρεάν λογισμικό.
Βήμα 1: Συναρμολόγηση
Βήμα 2: Χαρακτηριστικά που χρησιμοποιούνται - Διακομιστής
• Μπότες για συνδέσεις
• 2 Arduinos (χρησιμοποιήσαμε 2 Mega Arduinos 2560)
• Λογικός αναλυτής (χρησιμοποιούμε Saleae)
• Καλώδια σύνδεσης USB για Arduino και αναλυτή.
• Παλμογράφο (προαιρετικό)
• Protoboard
Βήμα 3: Χρησιμοποιείται κύκλωμα
Εδώ έχουμε το σχηματικό, το οποίο δείχνει την παρακολούθηση τριών ακίδων: TX0, SDA και SCL. Έχουμε δύο Arduinos: έναν αφέντη και έναν σκλάβο.
Βήμα 4: Πηγαίος κώδικας: Master
Στη ρύθμιση, θα συμπεριλάβουμε τη βιβλιοθήκη για επικοινωνία i2c. Μπήκαμε στο δίκτυο ως Master και αρχικοποιήσαμε σειριακό 0. Στο βρόχο, ζητήσαμε byte δεδομένων slave για επικοινωνία με τον αριθμό Arduino 8, όπως ορίσαμε στο παράδειγμα. Εκτυπώνουμε στο σειριακό, το οποίο θα αξιολογηθεί με τον λογικό αναλυτή, τα bytes που λαμβάνονται.
#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (); // Entra na rede como Mestre (endereço é opcional para o mestre) Serial.begin (115200); // inicia a serial 0} void loop () {Wire.requestFrom (8, 6); // requisita 6 bytes de dados do escravo de endereço 8 while (Wire.available ()) {// enquanto houver bytes para receber. Το Το char c = Wire.read (); // Recebe cada byte e armazena como caracter Serial.print (c); // envia o caracter pela serial (na verdade vai para o buffer)} καθυστέρηση (500); // aguarda meio segundo}
Βήμα 5: Πηγαίος κώδικας: Slave
Σε αυτόν τον κωδικό υποτελείας, συμπεριλαμβάνω ξανά τη βιβλιοθήκη για επικοινωνία i2c. Μπαίνω στο δίκτυο ως υποτελής με τη διεύθυνση 8. Καταχωρούμε το συμβάν αιτήματος και το συσχετίζουμε με τη συνάρτηση "αίτηση". Δεν χρειάζεται να κάνετε τίποτα στον βρόχο, απλώς δώστε καθυστέρηση 0,1 δευτερολέπτων.
Τέλος, έχουμε τη συνάρτηση αιτήματος που θα εκτελεστεί όταν συμβεί το συμβάν αιτήματος από το Master, το οποίο καταχωρήθηκε στο Setup. Απαντάμε, τέλος, με ένα μήνυμα 6 byte.
#include // inclui a biblioteca para comunicação I2C void setup () {Wire.begin (8); // entra na rede como escravo com endereço 8 Wire.onRequest (requestEvent); // registra o evento de requisiçao // e associa à função requestEvent} void loop () {delay (100); // não faz nada no loop, apenas aguarda 0, 1 segundo} // função que será ekzada quando ocorrer o evento de requisição pelo mestre // foi registrada como evento no setup void requestEvent () {Wire.write ("teste") ? // responde com uma mensagem de 6 bytes}
Βήμα 6: Αναλυτής: Υλικό
Ρυθμός δειγματοληψίας έως: 24 MHz
Λογική: 5 V έως 5,25 V
Κατώφλι χαμηλού επιπέδου 0,8 V
Όριο υψηλού επιπέδου 2.0 V
Αντίσταση εισόδου περίπου 1 Mohm ή περισσότερο
Βήμα 7: Εγκατάσταση λογισμικού Saleae
Το πρόγραμμα που λαμβάνει τα δεδομένα που συλλαμβάνονται από τον αναλυτή λογικής και αποκωδικοποιεί τα bit μπορεί να μεταφορτωθεί στον ακόλουθο σύνδεσμο:
Βήμα 8: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
Δείχνω τη διεπαφή εδώ, η οποία μου άρεσε ιδιαίτερα επειδή ήταν καθαρή.
Βήμα 9: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
Ακολουθούν ορισμένες επιλογές διαμόρφωσης:
• Κάνοντας κλικ στο όνομα του καναλιού, μπορούμε να το αλλάξουμε.
• Μπορούμε να καθορίσουμε εάν ένα από τα κανάλια θα χρησιμεύσει ως έναυσμα για τη λήψη και τη μορφή ανίχνευσης.
• Πατώντας παρατεταμένα τον αριθμό καναλιού, μπορείτε να αλλάξετε τη θέση σας στη λίστα.
• Κάνοντας κλικ στο γρανάζι, μπορούμε να διαμορφώσουμε την οπτικοποίηση του καναλιού, επεκτείνοντας…
•… ή απόκρυψη του καναλιού. Θα αποκρύψουμε όλα τα κανάλια που δεν θα χρησιμοποιήσουμε.
Βήμα 10: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
Κάνοντας κλικ στα βέλη του κουμπιού "Έναρξη", υπάρχουν οι επιλογές Ρυθμού δειγματοληψίας και διάρκεια της εγγραφής.
Για κάποιο λόγο, εάν το λογισμικό εντοπίσει ότι ο ρυθμός δεν μπορεί να διατηρηθεί, θα εμφανιστεί ένα μήνυμα και θα μειωθεί αυτόματα ο ρυθμός μέχρι να επιτευχθεί μια λειτουργική τιμή.
Βήμα 11: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
Θα συμπεριλάβουμε επίσης τους αναλυτές πρωτοκόλλων. Πρώτα είναι το I2C, ακολουθώντας τους ορισμούς της βιβλιοθήκης WIRE και συσχετίζοντας σωστά τα κανάλια. Τέλος, θα εισαγάγουμε τον αναλυτή στο ασύγχρονο σειριακό. Πρέπει να είμαστε προσεκτικοί για να διαμορφώσουμε σωστά τις παραμέτρους σύμφωνα με τη διάταξη.
Βήμα 12: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
Στην καρτέλα "Αποκωδικοποιημένα πρωτόκολλα", θα πρέπει να ελέγξουμε ποιοι αναλυτές πρωτοκόλλων είναι ενεργοποιημένοι. Εκεί, θα εμφανιστούν τα δεδομένα. Στην καρτέλα "Σχολιασμοί", μπορούμε να προσθέσουμε μερικά από τα αποτελέσματα για καλύτερη οπτικοποίηση. Απλώς κάντε κλικ στο εικονίδιο "προσθήκη μέτρησης".
Βήμα 13: Λήψη: Επισκόπηση
Στην οθόνη λήψης, το πρόγραμμα εμφανίζει το παλμό δεδομένων δεδομένων των SDA, SCL και TX0.
Βήμα 14: Λήψη: Αποτέλεσμα ανάλυσης πρωτοκόλλου
Εδώ, βλέπουμε το αποτέλεσμα της σύλληψης. Στην καρτέλα "Αποκωδικοποιημένα πρωτόκολλα", έχουμε:
• Το αίτημα διακομιστή για τον υποτελή με αναγνωριστικό 8.
• Η απόκριση σκλάβου, έξι χαρακτήρες: "t", "e", "s", "t", "e" και ένα κενό.
• Καθένα ακολουθείται από ένα μπιτ ACK (Αναγνώριση) που υποδεικνύει τη σωστή λήψη byte, εκτός από τον χαρακτήρα χώρου NACK (Δεν αναγνωρίζει).
• Στη συνέχεια, βλέπουμε το αποτέλεσμα αποκωδικοποίησης του σειριακού TX0, υποδεικνύοντας τους χαρακτήρες που ελήφθησαν και στάλθηκαν στο σειριακό τερματικό Arduino IDE.
Βήμα 15: Λήψη: Κανάλι 0 και δεδομένα (SDA)
Σε αυτήν την εικόνα, έχουμε το παλμικό τρένο της γραμμής SDA. Σημειώστε ότι κάθε μεταδιδόμενο byte μπορεί να προβληθεί.
Βήμα 16: Λήψη: Κανάλι 1 και Ρολόι (SCL)
Τώρα, έχουμε εδώ το παλμικό τρένο της γραμμής SCL. Μπορείτε να ελέγξετε περισσότερες λεπτομέρειες τοποθετώντας απλά το ποντίκι πάνω στο σήμα, όπως βλέπετε στην εικόνα. Μπορούμε να δούμε ότι η συχνότητα του ρολογιού ήταν στα 100 kHz.
Βήμα 17: Λήψη: Κανάλι 2 και Σειριακό (TX0)
Όσον αφορά την παλμική αμαξοστοιχία της γραμμής TX0, μπορούμε να δούμε το bit εκκίνησης και τα σημεία πλαισίωσης κάθε bit. Έχουμε ένα byte που αντιπροσωπεύει τον χαρακτήρα "e".
Βήμα 18: Διαμόρφωση του περιβάλλοντος για τις δοκιμές μας
Εδώ έχουμε αρκετές επιλογές για την ανάγνωση των δεδομένων.
Βήμα 19: Λήψη: Παλιοσκόπιο και αναλυτής
Κοιτάξτε εδώ την οθόνη που αποτύπωσα από τον παλμογράφο μου. Το σήμα λογικού αναλυτή αντιπροσωπεύει μόνο τις υψηλές και χαμηλές ανιχνεύσεις, αλλά δεν αντιπροσωπεύει την ποιότητα του σήματος. Αυτό μπορεί καλύτερα να παρατηρηθεί σε έναν παλμογράφο.
Βήμα 20: Λήψη: Παρατήρηση μιας αποτυχίας (παράδειγμα σειριακής αποτυχίας)
Τώρα, θα δείξω ένα παράδειγμα σειριακής αποτυχίας, που πραγματικά μου συνέβη. Wasμουν με ένα μόντεμ GPRS, το είδος που χρησιμοποιήθηκε σε ένα κινητό τηλέφωνο, την κάρτα SIM, προσπαθώντας να συνδεθώ με το ESP32. Αλλά απλά δεν συνδέθηκε. Τότε έλεγξα το τροφοδοτικό, την καλωδίωση και άλλαξα τον πίνακα. Έκανα τα πάντα, αλλά τίποτα δεν το διόρθωσε. Αποφάσισα να κάνω μια λογική ανάλυση: ανακάλυψα ότι το σήμα ESP στο UART 115200 άρχισε να μην ταιριάζει. Δηλαδή, το ESP32 έπαιζε αυτό που θα έπρεπε να είναι 115, 200 με διαφορετική ταχύτητα από αυτήν.
Αυτό το σφάλμα, το οποίο αναγνωρίστηκε από τον αναλυτή, εμφανίστηκε με ένα Χ με κόκκινο χρώμα. Κατά την κατανόησή μου, το πρόγραμμα λέει ότι το σημείο που έχει τόσο λίγο είναι μισο-μετατοπισμένο στο χρόνο. Καθώς αυτή η μετατόπιση αυξάνεται, μπορεί να έρθει μια στιγμή που τα πάντα είναι αταίριαστα, έτσι ώστε οι πληροφορίες να μην φτάνουν στην άλλη πλευρά. Συνήθως φτάνει, αλλά το SIM800 είναι ευαίσθητο και αν δεν είναι ακριβές, οι πληροφορίες δεν φτάνουν στο άλλο άκρο.
Δεν ξέρω αν αυτό είναι κάτι που συμβαίνει συχνά ή όχι, αλλά μου συνέβη και έτσι αποφάσισα να ασχοληθώ με αυτό το θέμα εδώ. Τι έκανα λοιπόν; Επιβράδυνα. Αν βάλετε 9, 600, 19, 200, έως 38, 400, λειτουργεί, κάτι που δεν συμβαίνει με τα 115, 200.
Βήμα 21: Κατεβάστε τα αρχεία
ΕΓΩ ΔΕΝ
Συνιστάται:
Γεια σου, Snow Angel !: 6 βήματα
Γεια σας, Snow Angel !: Αυτή η δραστηριότητα χρησιμοποιείται για την εισαγωγή κυκλωμάτων, αγωγών και μονωτών 4η-5η τάξη. Αφού διδαχθεί το μάθημα, εισήγαγα αυτή τη δραστηριότητα για να εμπλακώ και να εμπνεύσω τους μαθητές να κατανοήσουν ενεργά πώς κυκλώματα, αγωγοί και μονωτές πραγματικά
EZProbe, ένας λογικός αισθητήρας βασισμένος σε EZ430: 4 βήματα
EZProbe, ένας λογικός ανιχνευτής βασισμένος σε EZ430: αυτό είναι ένα απλό έργο λογικού καθετήρα που βασίζεται στο dongle TI EZ430. Εκμεταλλεύτηκα μια δωρεάν προσφορά σε μερικά ez430s από την TI τον Σεπτέμβριο του 2010. είναι πολύ βολικοί και διασκεδαστικοί όταν δοκιμάζουν μικρά αποσπάσματα κώδικα και παρακολουθούν το led να αναβοσβήνει. είχαν από τότε
Λογικός αναλυτής με διεπαφή χρήστη Android: 7 βήματα
Λογικός αναλυτής με διεπαφή χρήστη Android: Ο κόσμος έχει ήδη κατακλυστεί από τόσους πολλούς λογικούς αναλυτές. Στο ηλεκτρονικό μου χόμπι, χρειαζόμουν ένα για την αντιμετώπιση προβλημάτων και τον εντοπισμό σφαλμάτων. Έψαξα στο διαδίκτυο αλλά δεν μπορώ να βρω αυτό που ψάχνω. Εδώ λοιπόν, σας παρουσιάζω … " ΑΛΛΑ ΑΛΛΟ ΛΟΙΟ
DIY 5v έως 3.3v Λογικός επιλογέας επιπέδου: 3 βήματα
DIY 5v έως 3.3v Logic Level Shifter: Ένας μετατροπέας λογικού επιπέδου χρησιμοποιείται για τη μετατόπιση ενός επιπέδου τάσης σε άλλο, το οποίο είναι απαραίτητο για να λειτουργήσουν ορισμένα ψηφιακά τσιπ. Ας πάρουμε ένα παράδειγμα όταν θέλουμε να ανεβάσουμε ένα σκίτσο στο esp8266-01 χρησιμοποιώντας arduino πρέπει να αλλάξουμε τη λογική tx του arduino σε 3.3v
Λογικός αισθητήρας με ανίχνευση παλμών: 8 βήματα
Logic Probe With Pulse Detection: The TWO TRANSISTOR LOGC PROBE που εισήχθη από το jazzzzz και CMOS. Ένα σημαντικό πρόβλημα στις δοκιμές ψηφιακών κυκλωμάτων είναι