Table des matières:
- Étape 1: Assemblage
- Étape 2: Fonctionnalités utilisées - Serveur
- Étape 3: Circuit utilisé
- Étape 4: Code source: Maître
- Étape 5: Code source: esclave
- Étape 6: Analyseur: Matériel
- Étape 7: Installation du logiciel Saleae
- Étape 8: Configuration de l'environnement pour nos tests
- Étape 9: Configuration de l'environnement pour nos tests
- Étape 10: Configuration de l'environnement pour nos tests
- Étape 11: Configuration de l'environnement pour nos tests
- Étape 12: Configuration de l'environnement pour nos tests
- Étape 13: Capturer: Présentation
- Étape 14: Capture: Résultat de l'analyse du protocole
- Étape 15: Capture: Canal 0 et données (SDA)
- Étape 16: Capturez: Canal 1 et horloge (SCL)
- Étape 17: Capture: Canal 2 et série (TX0)
- Étape 18: Configuration de l'environnement pour nos tests
- Étape 19: Capture: Oscilloscope et analyseur
- Étape 20: Capture: Observation d'une panne (exemple de panne en série)
- Étape 21: Téléchargez les fichiers
Vidéo: Ouvre tes yeux! Analyseur logique : 21 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
L'analyseur logique facilite votre visualisation du train d'impulsions, qui sont les bits voyageant dans une ligne de communication. Ainsi, cela vous ouvre les yeux pour identifier un éventuel problème. Pourquoi est-ce important? C'est un outil de développement et de détection de pannes très efficace qui peut vous faire gagner du temps. Dans cette vidéo d'aujourd'hui, nous évaluerons l'importance de l'analyseur logique, observerons certains protocoles de pratiques courantes lors de l'utilisation de cet appareil et illustrerons un échec de détection sans l'aide d'un analyseur logique.
Dans cette vidéo, j'ai utilisé un modèle relativement bon marché (environ 35$) et efficace, avec une interface graphique et un logiciel gratuit.
Étape 1: Assemblage
Étape 2: Fonctionnalités utilisées - Serveur
• Cavaliers pour les connexions
• 2 Arduinos (nous avons utilisé 2 Mega Arduinos 2560)
• Analyseur logique (nous utilisons Saleae)
• Câbles de connexion USB pour Arduino et analyseur.
• Oscilloscope (facultatif)
• Protoboard
Étape 3: Circuit utilisé
Ici, nous avons le schéma, qui montre la surveillance de trois broches: TX0, SDA et SCL. Nous avons deux Arduinos: un maître et un esclave.
Étape 4: Code source: Maître
Dans la configuration, nous inclurons la bibliothèque pour la communication i2c. Nous sommes entrés dans le réseau en tant que maître et avons initialisé le numéro de série 0. Dans la boucle, nous avons demandé des octets de données esclaves pour la communication avec notre numéro Arduino 8, comme nous l'avons défini dans l'exemple. On imprime dans la série, qui sera évaluée avec l'analyseur logique, les octets reçus.
#include // inclut une bibliothèque pour la communication 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 et armazena como caracter Serial.print(c); // envia o caracter pela serial (na verdade vai para o buffer) } delay(500); // aguarda meio segundo }
Étape 5: Code source: esclave
Dans ce code esclave, j'inclus à nouveau la bibliothèque pour la communication i2c. J'entre dans le réseau en tant qu'esclave avec l'adresse 8. Nous enregistrons l'événement de requête et l'associons à la fonction "requête". Vous n'avez rien à faire sur la boucle, donnez juste un délai de 0,1 seconde.
Enfin, nous avons la fonction de demande qui sera exécutée lorsque l'événement de demande par le maître se produit, qui a été enregistré dans le programme d'installation. Nous répondons, enfin, par un message de 6 octets.
#include //inclut une bibliothèque pour la communication I2C void setup() { Wire.begin(8); // entra na rede como escravo com endereço 8 Wire.onRequest(requestEvent); // enregistrement de l'événement requis // et association à la fonction requestEvent } void loop() { delay(100); //não faz nada no loop, apenas aguarda 0, 1 segundo } //função que será executada quando ocorrer o evento de requisição pelo mestre //foi registrada como evento no setup void requestEvent() { Wire.write("teste "); // répond avec un message de 6 octets }
Étape 6: Analyseur: Matériel
Taux d'échantillonnage jusqu'à: 24 MHz
Logique: 5 V à 5,25 V
Seuil bas 0,8 V
Seuil haut niveau 2,0 V
Impédance d'entrée d'environ 1 Mohm ou plus
Étape 7: Installation du logiciel Saleae
Le programme qui reçoit les données capturées par l'analyseur logique et décode les bits peut être téléchargé sur le lien suivant:
Étape 8: Configuration de l'environnement pour nos tests
Je montre l'interface ici, que j'ai particulièrement appréciée car elle était propre.
Étape 9: Configuration de l'environnement pour nos tests
Voici quelques options de configuration:
• En cliquant sur le nom du canal, nous pouvons le changer.
• Nous pouvons déterminer si l'un des canaux servira de déclencheur pour la capture et la forme de détection.
• En cliquant et en maintenant enfoncé le numéro de canal, vous pouvez changer votre position dans la liste.
• En cliquant sur l'engrenage, nous pouvons configurer la visualisation du canal, l'expansion…
• … ou en masquant la chaîne. Nous masquerons tous les canaux que nous n'utiliserons pas.
Étape 10: Configuration de l'environnement pour nos tests
En cliquant sur les flèches du bouton "Démarrer", il y a les options du taux d'échantillonnage et de la durée de l'enregistrement.
Pour une raison quelconque, si le logiciel détecte que le taux ne peut pas être maintenu, un message s'affichera et le taux sera automatiquement réduit jusqu'à ce qu'une valeur fonctionnelle soit atteinte.
Étape 11: Configuration de l'environnement pour nos tests
Nous inclurons également les analyseurs de protocole. C'est d'abord l'I2C, en suivant les définitions de la librairie WIRE, et en associant correctement les canaux. Enfin, nous présenterons l'analyseur à la série asynchrone. Il faut faire attention à bien configurer les paramètres en fonction du montage.
Étape 12: Configuration de l'environnement pour nos tests
Dans l'onglet "Decoded Protocols", nous devons vérifier quels analyseurs de protocoles sont activés. Là, les données apparaîtront. Dans l'onglet "Annotations", nous pouvons ajouter certains des résultats pour une meilleure visualisation. Cliquez simplement sur l'icône "ajouter une mesure".
Étape 13: Capturer: Présentation
Dans l'écran de capture, le programme affiche le train d'impulsions de données du SDA, SCL et TX0.
Étape 14: Capture: Résultat de l'analyse du protocole
Ici, on voit le résultat de la capture. Dans l'onglet "Protocoles décodés", nous avons:
• La demande du serveur pour l'esclave avec l'id 8.
• La réponse de l'esclave, six caractères: "t", "e", "s", "t", "e" et un espace.
• Chacun est suivi d'un bit ACK (Acknowledge) indiquant la réception correcte de l'octet, à l'exception du caractère d'espacement NACK (Not Acknowledge).
• Ensuite, nous voyons le résultat du décodage de la série TX0, indiquant les caractères reçus et envoyés au terminal série Arduino IDE.
Étape 15: Capture: Canal 0 et données (SDA)
Sur cette image, nous avons le train d'impulsions de la ligne SDA. Notez que chaque octet transmis peut être visualisé.
Étape 16: Capturez: Canal 1 et horloge (SCL)
Maintenant, nous avons ici le train d'impulsions de la ligne SCL. Vous pouvez vérifier plus de détails simplement en positionnant la souris sur le signal, comme vous le voyez sur l'image. Nous pouvons voir que la fréquence d'horloge était à 100 kHz.
Étape 17: Capture: Canal 2 et série (TX0)
Comme pour le train d'impulsions de la ligne TX0, on peut voir le bit Start et les points de cadrage de chaque bit. Nous avons un octet représentant le caractère "e".
Étape 18: Configuration de l'environnement pour nos tests
Ici, nous avons plusieurs options pour lire les données.
Étape 19: Capture: Oscilloscope et analyseur
Regardez ici l'écran que j'ai capturé à partir de mon oscilloscope. Le signal de l'analyseur logique ne représente que les détections haute et basse, mais il ne représente pas la qualité du signal. Ceci peut être mieux observé sur un oscilloscope.
Étape 20: Capture: Observation d'une panne (exemple de panne en série)
Maintenant, je vais montrer un exemple d'échec en série, qui m'est réellement arrivé. J'étais avec un modem GPRS, le genre utilisé sur un téléphone portable, la carte SIM, essayant de se connecter à l'ESP32. Mais il ne s'est tout simplement pas connecté. J'ai ensuite vérifié l'alimentation, le câblage, et changé la carte. J'ai tout fait, mais rien ne l'a réparé. J'ai décidé de faire une analyse logique: j'ai découvert que le signal ESP sur l'UART 115200 commençait à ne pas correspondre. C'est-à-dire que l'ESP32 jouait ce qui devrait être 115, 200 à une vitesse différente de celle-ci.
Cette erreur, qui a été identifiée par l'analyseur, était affichée avec un X en rouge. D'après ce que je comprends, le programme dit que le point qui a un tel morceau est à moitié déplacé dans le temps. À mesure que ce changement augmente, il peut arriver un moment où tout ne correspond pas, de sorte que l'information n'atteint pas l'autre côté. Il arrive généralement, mais le SIM800 est sensible et s'il n'est pas exact, l'information ne parvient pas à l'autre bout.
Je ne sais pas si c'est quelque chose qui arrive souvent ou pas, mais cela m'est arrivé, et j'ai donc décidé d'aborder ce sujet ici. Alors qu'est-ce que j'ai fait ? J'ai ralenti. Si vous mettez 9, 600, 19, 200, jusqu'à 38, 400, ça marche, ce qui n'arrive pas avec le 115, 200.
Étape 21: Téléchargez les fichiers
INO
Conseillé:
Fabriquer un analyseur logique numérique pour moins de 1 $ : 5 étapes
Fabriquer un analyseur logique numérique pour moins de 1 $ : un capteur de niveau logique est un appareil qui détecte si la sortie d'un composant est 1 ou 0 (positive ou négative). Vous connaissez ces jolis capteurs de niveau avec les écrans LCD qui coûtent environ 25 $ ? Celui-ci est ridiculement moins cher et fait la même chose (c'est
Testeur de puce logique Raspberry Pi : 4 étapes
Raspberry Pi Logic Chip Tester : il s'agit d'un script de testeur logique pour un Raspberry pi, avec lequel vous pouvez vérifier si votre circuit logique (fait maison) fonctionne. Ce script peut également être utilisé pour tester les relais. prend en charge les entrées GPIO 5v, donc si votre circuit sort 5V, yo
EZProbe, une sonde logique basée sur EZ430 : 4 étapes
EZProbe, une sonde logique basée sur EZ430 : il s'agit d'un projet de sonde logique simple basé sur le dongle TI EZ430. J'ai profité d'une offre gratuite sur quelques ez430 de TI en septembre 2010. ils sont très pratiques et amusants pour essayer de petits extraits de code et regarder le clignotement de la led. ils avaient depuis b
Convertisseur logique DIY simple pour appareils 3,3 V : 4 étapes
Convertisseur logique de bricolage simple pour les appareils 3,3 V : dans cet article, je vais vous montrer comment vous pouvez créer votre propre convertisseur logique 5 V à 3,3 V pour connecter des capteurs 5 V aux nouvelles cartes Arduino et Raspberry Pi. Pourquoi avons-nous besoin d'un convertisseur de niveau logique IC ?La plupart d'entre vous aiment jouer avec Arduino et Raspberry Pi duri
Analyseur logique avec interface utilisateur Android : 7 étapes
Analyseur logique avec interface utilisateur Android : Le monde est déjà inondé de tant d'analyseurs logiques. Dans mon passe-temps électronique, j'en avais besoin pour le dépannage et le débogage. J'ai cherché sur internet mais je ne trouve pas celui que je cherche. Alors me voici, vous présentant…"ENCORE Un autre Lo