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

Ανοιξε τα μάτια σου! Λογικός αναλυτής: 21 βήματα
Ανοιξε τα μάτια σου! Λογικός αναλυτής: 21 βήματα

Βίντεο: Ανοιξε τα μάτια σου! Λογικός αναλυτής: 21 βήματα

Βίντεο: Ανοιξε τα μάτια σου! Λογικός αναλυτής: 21 βήματα
Βίντεο: Πώς να κάνεις καλά πράγματα να σου συμβούν. Ακουστικό βιβλίο 2024, Ιούλιος
Anonim
Image
Image
Συνέλευση
Συνέλευση

Ο αναλυτής λογικής διευκολύνει την οπτικοποίηση της αμαξοστοιχίας παλμών, τα οποία είναι τα κομμάτια που ταξιδεύουν σε μια γραμμή επικοινωνίας. Έτσι, ανοίγει τα μάτια σας για να εντοπίσετε ένα πιθανό πρόβλημα. Γιατί είναι σημαντικό? Είναι ένα πολύ αποτελεσματικό εργαλείο ανάπτυξης και ανίχνευσης βλαβών που μπορεί να σας εξοικονομήσει χρόνο. Σε αυτό το βίντεο σήμερα, θα αξιολογήσουμε τη σημασία του λογικού αναλυτή, θα παρατηρήσουμε ορισμένα πρωτόκολλα συνηθισμένων πρακτικών κατά τη χρήση αυτής της συσκευής και θα παραδειγματίσουμε μια αποτυχία ανίχνευσης χωρίς τη βοήθεια ενός λογικού αναλυτή.

Σε αυτό το βίντεο, χρησιμοποίησα ένα σχετικά φθηνό (περίπου $ 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

Εγκατάσταση λογισμικού Saleae
Εγκατάσταση λογισμικού 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)

Λήψη: Κανάλι 0 και δεδομένα (SDA)
Λήψη: Κανάλι 0 και δεδομένα (SDA)

Σε αυτήν την εικόνα, έχουμε το παλμικό τρένο της γραμμής SDA. Σημειώστε ότι κάθε μεταδιδόμενο byte μπορεί να προβληθεί.

Βήμα 16: Λήψη: Κανάλι 1 και Ρολόι (SCL)

Λήψη: Κανάλι 1 και Ρολόι (SCL)
Λήψη: Κανάλι 1 και Ρολόι (SCL)

Τώρα, έχουμε εδώ το παλμικό τρένο της γραμμής SCL. Μπορείτε να ελέγξετε περισσότερες λεπτομέρειες τοποθετώντας απλά το ποντίκι πάνω στο σήμα, όπως βλέπετε στην εικόνα. Μπορούμε να δούμε ότι η συχνότητα του ρολογιού ήταν στα 100 kHz.

Βήμα 17: Λήψη: Κανάλι 2 και Σειριακό (TX0)

Λήψη: Κανάλι 2 και Σειριακό (TX0)
Λήψη: Κανάλι 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: Κατεβάστε τα αρχεία

PDF

ΕΓΩ ΔΕΝ

Συνιστάται: