Analyseur logique avec connexion à une tablette. Type de circuit imprimé et emplacement des composants. Processus et logiciel de capture de données

Qu'est-ce qu'un analyseur logique ? C'est un tel appareil... pour une analyse logique))) Un film avec Robert De Niro vient immédiatement à l'esprit

Pourquoi je l'ai acheté ? Eh bien, bien sûr, empruntez analyse logique))). Ou plutôt, en analysant les niveaux logiques des différents microcontrôleurs et de leurs périphériques. Ce qu’on appelle communément l’ingénierie inverse.

Récemment, j'ai eu affaire à deux capteurs à ultrasons DYP-ME007Y, . Et quand j'ai voulu à nouveau voir quels signaux allaient du capteur au microcontrôleur et inversement, je me suis souvenu d'un appareil si merveilleux. Et puis IL est arrivé à un prix inférieur à 6 $.




À l'entrée de l'analyseur se trouvent des résistances de limitation de courant de 100 Ohm, des résistances de rappel de 100 KOhm et des condensateurs de 5 pF. Tout est honnête, comme dans la description.

La meilleure chose à propos de cet analyseur est qu’il s’adapte.
Des versions sont disponibles pour OSX, Linux et Windows en 32 et 64 bits.
Saleae Logic 1.2.3 sous Windows 7 a fonctionné d'un demi-kick, le logiciel a démarré, le matériel a été reconnu, malgré la version « Beta ».

Des goodies intéressants dans le programme Saleae Logic

Déclencheur pour enregistrer une séquence logique sur chaque canal

  • Pour les changements niveau logiqueà "0"
  • Pour changer le niveau logique à « 1 »

  • Pour une impulsion positive d'une durée donnée
  • À une impulsion négative d'une durée donnée
Calcul des lectures statistiques basées sur la mesure actuelle

Protocoles de décodage : Async Serial, I2C, SPI, Hide, 1-Wire, Atmel SWI, BISS C, CAN, DMX-512, HD44780, HDLC, HGMI CEC, I2S/PCM, JTAC, LIN, MDIO, Manchester, Midi, Modbus , Clavier/Souris PS/2, SMBus, SWD, Simple Parallel, UNI/O, USB LS et FS

Journalisation à l'aide d'un protocole décodable

Faisons une analyse logique.

Pour commencer, je vais parler des capteurs à ultrasons dont j'ai parlé au début de la revue.

Si l'on travaille exactement selon la fiche technique : une courte impulsion sur le « déclencheur » déclenche une impulsion ultrasonique et la distance est mesurée en fonction de la durée de l'écho. Ensuite, les deuxième et troisième (avec une LED clignotante) environ une fois toutes les 100 ms sans aucun coup de pied externe mesurent la distance et l'envoient à une vitesse de 9600 sous la forme de quatre octets (y compris somme de contrôle). Saleae Logic vous permet d'activer le décodage du signal bus série en une séquence d’octets. Les capteurs du deuxième type fonctionnent parfaitement avec la sortie « TRIG » désactivée, bien qu'ils puissent attendre une sorte de commande à cette entrée, mais même un appareil magique ne l'affichera pas.

Ensuite, vous vouliez regarder le signal PWM de l'Atmegi 168 ? Activation des six canaux prenant en charge PWM sur niveau différent et j'ai été surpris de constater que la fréquence de deux canaux PWM est différente des 4 autres. Y a-t-il différentes minuteries impliquées ?



Ensuite, j'ai regardé le fonctionnement du bus I2C. Et encore une fois, le logiciel a géré le décodage normalement. Vous pouvez voir les paquets d'écriture dans les registres pendant le fonctionnement.

J'ai connecté la bande avec - l'analyseur absorbait normalement 800 KHz et décryptait avec succès le protocole DFX-512

Un récepteur RF 315 MHz connecté directement à l'analyseur a reçu un signal de , et a émis un code Manchester. Après avoir sélectionné la vitesse, le code Manchester est converti par un programme intelligent en une séquence d'octets.

Je me demande, qu'en est-il de la précision de la mesure des intervalles de temps ? Je n'avais pas de générateur d'impulsions exact sous la main, mais une tonalité Arduino (1000) à 1000 Hz


et la tonalité (20000) à 20 KHz donnent un résultat assez précis.

Un bref résumé

Un analyseur logique est très nécessaire et chose utile pour ceux qui sont engagés dans la recherche de périphériques chinois pour microcontrôleurs (appelons-le gentiment - ingénierie inverse)
Parmi les avantages de cette pièce de fer je voudrais noter :
  • Prix ​​attractif
  • Compatible avec jolie logiciel pratique Logique Saleae
  • Protection d'entrée sous la forme d'un pilote de bus LVC245A
  • Petites dimensions
Je n’ai trouvé aucun défaut évident dans ce matériel. J'aurais aimé acheter un analyseur logique plus tôt - combien de temps j'aurais économisé sur de nombreux projets.

Il s'agit maintenant d'analyser les niveaux logiques à 12V ; je voulais depuis longtemps comprendre les capteurs ABS de ma voiture. Je pense qu'un diviseur de résistance et une diode Zener de 5 volts à chaque entrée conviendront parfaitement.

  • Électronique pour débutants
  • Analyseurs logiques

    Souvent lors du développement ou du débogage appareils radio-électroniques composé de plusieurs composants (microcontrôleur, ADC, mémoire I2C, etc.) J'aimerais examiner la communication de ces composants entre eux. Pour enfin comprendre pourquoi tout est écrit « correctement », mais rien ne fonctionne. En général, vous pouvez l'utiliser oscilloscope numérique, mais les oscilloscopes à 4 canaux sont assez chers et ne sont pas très pratiques. Il est bien plus agréable de résoudre ce problème en utilisant analyseur logique. Un analyseur logique est essentiellement similaire à un oscilloscope, mais si la tâche principale d'un oscilloscope afficher changement signal analogique ce qu'il fait remarquablement bien, le but d'un analyseur logique enregistrement signal numérique (mais pas toujours uniquement numérique) avec son analyse ultérieure dans des programmes pratiques.

    Ci-dessous, je décrirai mon expérience avec les analyseurs logiques Logic Pro 8 de Saleae, au prix d'environ 480 $, et DSLogic Pro de DreamSourceLab (très probablement une copie) au prix de 99 $, je l'ai obtenu pour 73 $.
    Si quelqu'un est intéressé, bienvenue chez le chat.

    Caractéristiques

    Les analyseurs logiques diffèrent les uns des autres principalement : le nombre et le type de canaux, la présence d'un tampon et la fréquence d'échantillonnage.
    Petit tableau de comparaison avec des caractéristiques :
    Logique Pro 8 DSLogic Pro Description
    Nombre chaînes numériques 8 16 Comment plus de sujets mieux, mais après un an d'utilisation, plus de 4 n'étaient pas encore vraiment nécessaires
    Nombre chaînes analogiques 8 0 Pour l'analogique, un oscilloscope est toujours préférable, mais il est parfois pratique de voir ce qui se passe non seulement dans le canal numérique, mais aussi dans l'analogique.
    Interface USB 2.0 / USB 3.0 USB2.0 L’USB 3.0 est préférable si vous l’avez, bien sûr. Bien que ce point soit controversé, je décrirai pourquoi ci-dessous.
    Taux d'échantillonnage des canaux numériques 500 Méch/s - USB 3.0
    100 Méch/s - USB 2.0
    400 MS/s - pour 4 canaux
    200 MS/s - pour 8 canaux
    100 MS/s - pour 16 canaux
    Plus il y en a, mieux c'est, mais dans ce cas, il y a une nuance, mais nous y reviendrons ci-dessous.
    Taux d'échantillonnage des canaux analogiques 50 Méch/s - USB 3.0
    10 Méch/s - USB 2.0
    - Plus c'est mieux.
    Plage de tension numérique/analogique : 1,2 V - 5,5 V / -10 V - +10 V 0V - 5V / - Ici, Logic Pro 8 propose trois tensions de seuil parmi lesquelles choisir : 1,2 V/1,8 V/3,3 V.
    De DSLogic Choix professionnel de 0 V à 5 V par pas de 0,1 V ; il dispose également d'une protection contre les surtensions -30 V - +30 V.
    Résistance du canal interne 1,8 MOm 250 kOhms Plus il y en a, mieux c'est, moins il y a d'interférences dans le circuit étudié.
    Tampon - 256 Mbits Plus il y en a, mieux c'est, ce paramètre détermine le nombre d'échantillons que l'analyseur peut capturer sans les transférer à l'ordinateur. La chose est extrêmement utile surtout pour UBS 2.0
    Profondeur d'échantillonnage en théorie illimité 16 MS par canal Plus il y en a, mieux c'est, Logic Pro 8 utilise la mémoire du PC, la profondeur d'échantillonnage peut être très grande, mais le buffer DSLogic Pro est également suffisant.

    De manière générale, Logic Pro 8 présente un avantage à bien des égards, notamment au niveau de la partie analogique. Cependant, l'absence de tampon a un effet négatif, d'une part, la vitesse diminue de moitié lors de l'utilisation de 4 canaux, et de 4 fois lors de l'utilisation de 6 et plus de chaînes. Mais ce n'est pas tout, puisque la vitesse est étroitement liée au bus USB, des incidents surviennent si ce bus est chargé, il suffit parfois de se connecter à un Concentrateur USB Câble UART pour que le programme maudisse et dise que Vitesse USB n'est pas suffisant et la vitesse de capture sera réduite. Ce n’est pas que cela arrive souvent et soit une grosse nuisance, mais cela vaut la peine de s’en souvenir.
    Parmi les fonctionnalités de DSLogic Pro, je voudrais noter la présence d'une ligne d'horloge externe et de signaux entrée externe déclencheur et sortie de déclenchement.

    Apparence et équipement

    Pack Logic Pro 8 :

    • l'analyseur lui-même
    • deux connecteurs avec fils multicolores, 4 canaux par connecteur
    • 16 clips pour la connexion aux pattes du microcircuit, aux fils, etc.
    • USB 3.0 Câble USB-A vers MictoUSB 3.0

    Kit DSLogic Pro :

    • l'analyseur lui-même
    • connecteur large pour 16 canaux plus signaux supplémentaires,
    • 16 clips multicolores pour se connecter aux pattes du microcircuit, aux fils, etc.
    • Câble USB 2.0 USB-A vers MictoUSB

    Comparaison

    Si vous comparez l'équipement, c'est à peu près le même. Cependant, à mon avis, le connecteur avec fils pour Logic Pro 8 est bien plus pratique et agréable à utiliser, les fils sont plus souples et plus souples. Les clips sur Logic Pro 8 sont plusieurs fois plus pratiques. Premièrement, ils disposent de deux broches pour se connecter au fil de l'analyseur, ce qui est pratique, et deuxièmement, les broches de connexion sont situées sur le côté, ce qui facilite l'accrochage des clips avec le fil déjà connecté à celles-ci. Dans DSLogic Pro, la broche est située en haut, ce qui rend sa connexion beaucoup plus difficile, même si les clips ne diffèrent pas en termes de préhension, mais la qualité globale reste médiocre.

    Logiciel

    Quelle que soit la qualité d’un analyseur logique, sans un bon logiciel, il ne sera pas facile de travailler avec. Bon logiciel devrait afficher rapidement les données capturées, vous permettre de visualiser leurs caractéristiques telles que la fréquence, le cycle de service. Et c’est très bien qu’il puisse déchiffrer des protocoles bien connus. Il est incroyablement pratique d'indiquer où se trouvent les jambes I2C et de voir ce qui se passe exactement dans le bus du point de vue du protocole I2C, plutôt que de s'asseoir et de se gratter la tête, de regarder et d'essayer de comprendre si tout est ainsi et à quelle adresse a été enregistré ici. Chaque analyseur est livré avec son propre programme :

    Logique Saleae

    Les analyseurs Saleae sont livrés avec Saleae Logic


    Le programme est multiplateforme, tous sont pris en charge Versions Windows dowsà partir de XP (il y a un an, il y avait des problèmes avec Win 7 et supérieur, dans nouvelle version Win 7 fonctionne parfaitement, je ne l'ai pas testé ci-dessus), Mac OS X 10.7 Lion+ installé et fonctionne parfaitement, Ubuntu 12.04.2+ n'a jamais fonctionné pour moi (testé il y a un an sur ancienne version Le programme fonctionne peut-être maintenant), mais je n’ai pas vraiment essayé.

    Prise en charge grande liste Les protocoles d'analyse I2C/SPI/UART/CAN fonctionnent parfaitement. La capture est possible soit par démarrage manuel, soit par déclenchement sur l'une des voies. L’un des inconvénients est qu’il commence à ralentir considérablement sur les échantillons longs.

    Parmi les fonctionnalités du programme, il convient de noter la possibilité de contrôler à l'aide d'un protocole de type telnet, la présence d'un SDK pour écrire vos propres décodeurs de protocole. Les protocoles sont écrits en C++, ce qui complique le processus de leur écriture.

    DSView

    DSLogic Pro est livré avec le logiciel DSView :

    Également un programme multiplateforme Prise en charge de Windowsà partir de XP, Mac OS X 10.11.4, Linux (le programme est livré en code source). Les capacités du programme sont supérieures à celles de Saleae Logic ; il existe des déclencheurs plus avancés prenant en charge plusieurs canaux à la fois et la liste des protocoles est assez longue. Mais ici, les développeurs sont allés plus loin et le protocole peut également être doté de la possibilité de décrypter le travail avec une implémentation spécifique de ce protocole. Par exemple, vous pouvez sélectionner le protocole I2C et l'implémentation 24CXX, puis lire immédiatement ce qui s'est exactement passé sur le bus du point de vue d'un microcircuit donné. Les deux protocoles et leurs implémentations sont écrits en Python, ce qui devrait en théorie simplifier l'écriture et le débogage. Aucun frein n'a été remarqué en fonctionnement.

    Il convient également de noter que le projet est en partie OpenSource et que les sources du logiciel et les parties HDL sont publiées. Et voici un schéma. Par conséquent, il y aura peut-être bientôt un tas de clones de cet appareil (peut-être que j'ai aussi un clone).

    Tests simples

    Pour un test simple des analyseurs, nous avons utilisé une carte vierge DE0-Nano-SoC sur laquelle ont été générés des méandres de 200 Mhz ; chaque suivant a été obtenu en divisant par 2 les précédents (200/100/50 je vais essayer). pour les capturer avec les analyseurs existants.

    Sur DSLogic Pro nous avons réussi à capturer 200Mhz/100Mhz/50Mhz en dessous et force est de constater que tout se passe à merveille. Il est impossible de dire que 200 et 100 ont été parfaitement capturés ; il y a parfois une légère dérive de la fréquence et du rapport cyclique, mais en général c'est normal, à 50 tout est déjà parfait.

    DSLogic Pro


    Seleae n'a pas pu supprimer normalement 200Mhz et 100Mhz, mais 50 Mhz fonctionne déjà parfaitement.

    Logique Pro 8


    Néanmoins, je ne prendrais pas de telles mesures au sérieux ; mesurer 200 MHz simplement avec des fils « à clipser » est probablement exagéré, mais cela valait la peine d'essayer.

    Pour l'expérience, essayons de capturer la transmission de données via I2C (les transmissions sont différentes, donc les données ne convergent pas).

    Acheter de toutes sortes Electronique chinoise pour mes « métiers » je rencontre souvent le problème d’une mauvaise description de l’œuvre,

    Le sujet de l'article d'aujourd'hui est l'utilisation d'un analyseur logique chinois bon marché acheté sur Aliexpress.

    Qu'est-ce qu'un analyseur logique ? C'est un tel appareil... pour une analyse logique))) Un film avec Robert De Niro vient immédiatement à l'esprit

    Pourquoi est-ce nécessaire ? Eh bien, bien sûr, engagez-vous dans une analyse logique))). Ou plutôt, en analysant les niveaux logiques des différents microcontrôleurs et de leurs périphériques. Ce qu’on appelle communément l’ingénierie inverse.

    Caractéristiques

    • Compatibilité logicielle avec Saleae Logic 8
    • Nombre entrées numériques - 8
    • Deux indicateurs : alimentation et état des entrées logiques
    • Impédance d'entrée 100KOhm, capacité d'entrée 5pF
    • Alimenté par USB
    • Taux d'échantillonnage pris en charge :
    • 24 MHz, 16 MHz, 12 MHz, 8 MHz, 4 MHz, 2 MHz, 1 MHz, 500 kHz, 250 kHz, 200 kHz, 100 kHz, 50 kHz, 25 kHz ;
    • Nombre de valeurs stockées d'une mesure - 10000

    D'un côté il y a un connecteur à 10 broches et un brochage sur le corps

    D'autre part Mini-USB pour l'alimentation électrique et la connexion à un ordinateur

    Entrailles

    À l'intérieur du boîtier se trouve une carte contenant un microprocesseur avec une interface USB haut débit CY7C68013A de CYPRESS, une EEPROM ATMLH432 et un pilote de bus LVC245A de NXP.

    À l'entrée de l'analyseur se trouvent des résistances de limitation de courant de 100 Ohm, des résistances de rappel de 100 KOhm et des condensateurs de 5 pF. Tout est honnête, comme dans la description.

    Connexion

    Pour connecter l'analyseur, le kit comprend 10 fils de connexion pour contacts à broches. J'ai immédiatement acheté ces clips à clipser.

    La qualité des pinces est très médiocre, mais de bonnes pinces coûteront plus cher que l'analyseur lui-même

    Logiciel

    C’est peut-être la chose la plus intéressante de cet analyseur. Il est livré avec le logiciel natif de Saleae Logic.

    Des versions sont disponibles pour OSX, Linux et Windows en 32 et 64 bits.
    Saleae Logic 1.2.3 sous Windows 7 a fonctionné d'un demi-kick, le logiciel a démarré, le matériel a été reconnu, malgré la version « Beta ».

    Fonctionnalités intéressantes des logiciels de Saleae Logic

    Déclencheur pour enregistrer une séquence logique sur chaque canal

    • Pour changer le niveau logique à « 0 »
    • Pour changer le niveau logique à « 1 »
    • Pour une impulsion positive d'une durée donnée
    • À une impulsion négative d'une durée donnée

    Calcul des lectures statistiques basées sur la mesure actuelle

    Protocoles de décodage : Async Serial, I2C, SPI, Hide, 1-Wire, Atmel SWI, BISS C, CAN, DMX-512, HD44780, HDLC, HGMI CEC, I2S/PCM, JTAC, LIN, MDIO, Manchester, Midi, Modbus , Clavier/Souris PS/2, SMBus, SWD, Simple Parallel, UNI/O, USB LS et FS

    Journalisation à l'aide d'un protocole décodable

    De plus, cet analyseur peut être flashé avec le logiciel USBee

    Faisons une analyse

    J'étais justement en train de réfléchir à la connexion des capteurs à ultrasons DYP-ME007Y, qui semblent absolument identiques, mais fonctionnent complètement différemment.

    Si l'on travaille exactement selon la fiche technique : une courte impulsion sur le « déclencheur » déclenche une impulsion ultrasonique et la distance est mesurée en fonction de la durée de l'écho. Ensuite, les deuxième et troisième (avec une LED clignotante) mesurent la distance environ une fois toutes les 100 ms sans aucun coup de pied externe et l'envoient à une vitesse de 9600 sous la forme de quatre octets (somme de contrôle incluse). Saleae Logic vous permet d'activer le décodage d'un signal de bus série en une séquence d'octets. Les capteurs du deuxième type fonctionnent parfaitement avec la sortie « TRIG » désactivée, bien qu'ils puissent attendre une sorte de commande à cette entrée, mais même un appareil magique ne l'affichera pas.

    Ensuite, vous vouliez regarder le signal PWM de l'Atmegi 168 ? J'ai activé les six canaux prenant en charge le PWM à différents niveaux et j'ai été surpris de constater que la fréquence de deux canaux PWM diffère des 4 autres. Y a-t-il différentes minuteries impliquées ?

    Qu'y a-t-il sur mon bus de données ?

    Le dispositif magique et le programme décodaient normalement la séquence de sortie vers les LED. Même les couleurs des LED sont apparues.

    Il n'y a aucun problème non plus avec l'analyse du bus I2C. Le logiciel a géré le décodage normalement. Vous pouvez voir les paquets d'écriture dans les registres lorsque le pilote d'affichage TM1637 est en cours d'exécution.

    Un récepteur RF 315 MHz connecté directement à l'analyseur a reçu un signal des commutateurs radio et a émis un code Manchester. Après avoir sélectionné la vitesse, le code Manchester est converti par un programme intelligent en une séquence d'octets.

    Je me demande, qu'en est-il de la précision de la mesure des intervalles de temps ? Je n'avais pas de générateur d'impulsions exact sous la main, mais une tonalité Arduino (1000) à 1000 Hz

    et la tonalité (20000) à 20 KHz donnent un résultat assez précis.

    Pour vérification haute fréquence sur une solution rapide assemblé un générateur basé sur NE555. Nous avons réussi à en extraire 8 MHz. L'analyseur a absorbé cette fréquence normalement. Il n'a pas été possible de le tester à 20 MHz, mais 8 est également un très bon résultat pour un matériel aussi bon marché.

    Un bref résumé

    Un analyseur logique est une chose très nécessaire et utile pour ceux qui sont engagés dans la recherche de périphériques chinois pour microcontrôleurs (appelons-le gentiment - ingénierie inverse)
    Parmi les avantages de cette pièce de fer je voudrais noter :

    • Prix ​​attractif
    • Compatible avec le logiciel Saleae Logic très pratique
    • Protection d'entrée sous la forme d'un pilote de bus LVC245A
    • Petites dimensions

    Je n’ai trouvé aucun défaut évident dans ce matériel. J'aurais aimé acheter un analyseur logique plus tôt - combien de temps j'aurais économisé sur autant de projets. Sans aucun doute, pour certains, les capacités de ce matériel ne suffiront pas. Il existe de nombreux modèles plus sophistiqués, mais le prix de 100 à 200 dollars rend ces appareils beaucoup moins abordables pour les radioamateurs.

    Devons-nous analyser autre chose ?

    J'ai acheté un analyseur de signaux logiques. Je pense que ce sera utile. Une bonne chose, cela peut aider lors de l'étude des signaux et du dépannage circuits logiques. L'appareil est un clone de la logique Saleae, dont l'original coûte des centaines de dollars.

    Caractéristiques:

    • Canaux : 8
    • Taux d'échantillonnage : jusqu'à 24 M/s
    • Impédance d'entrée : 100 kOhm

    L'appareil est une petite boîte, d'environ la taille de boîte d'allumettes. D'un côté se trouve un connecteur miniUSB pour la connexion à un ordinateur. De l'autre on trouve un peigne de 10 contacts (8 canaux + deux masses). Voyons ce qu'il y a à l'intérieur.


    Microcontrôleur Cypress CY7C68013A, EEPROM Atmel 24C028N et buffer 74HC245.


    De l'autre côté :


    Pour travailler avec l'appareil, téléchargez le programme Logic.

    Au centre se trouvent 8 canaux de bande sur lesquels le graphique du signal sera affiché. Sur la gauche se trouvent le bouton Démarrer et les boutons de paramètres des chaînes. A droite se trouvent les fenêtres de mesure et d'analyse. Regardons les paramètres :


    Ici, vous pouvez sélectionner le taux d'échantillonnage (24 millions/s) et la durée :


    Comment fréquence plus élevée et la durée, plus il faut de mémoire pour collecter et stocker les données.
    Pour chaque canal, vous pouvez sélectionner la bande passante, régler le filtre d'interférence ou masquer complètement le canal :

    Pour l'une des voies, vous pouvez configurer un déclenchement : sur front du signal, à la chute, sur la largeur de l'impulsion haute ou basse. Ensuite, lorsque vous appuyez sur le bouton Démarrer, la durée d'enregistrement ne commencera à compter qu'après le déclenchement de la gâchette.


    Maintenant, pour le plaisir, regardons divers signaux d'Arduino.
    Nous faisons clignoter la LED avec une pause de 100 ms. Ce code :

    1 2 3 4 5 6 void loop() ( digitalWrite(13, HIGH) ; delay(100) ; digitalWrite(13, LOW) ; delay(100) ; )

    void loop() ( digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay(100); )

    Signal:


    On voit que la période est de 0,2 s et la fréquence est de 5 Hz. C'est exact.
    Réduisons maintenant le délai à 1 ms :

    1 2 3 4 5 6 void loop() ( digitalWrite(13, HIGH) ; delay(1) ; digitalWrite(13, LOW) ; delay(1) ; )

    void loop() ( digitalWrite(13, HIGH); delay(1); digitalWrite(13, LOW); delay(1); )

    Augmentons :

    Jusqu'à présent, tout se passe comme prévu. La période est légèrement supérieure à 2 ms, la fréquence est d'environ 500 Hz.
    Maintenant, supprimons complètement le délai :

    1 2 3 4 void loop() ( digitalWrite(13 , HIGH) ; digitalWrite(13 , LOW) ; )

    void loop() ( digitalWrite(13, HIGH); digitalWrite(13, LOW); )

    1 2 3 4 boucle vide() ( PORTB = B11111111; PORTB = B00000000; )

    boucle vide() ( PORTB = B11111111; PORTB = B00000000; )


    Wow, la fréquence a augmenté plus de 10 fois et est maintenant d'environ 1 MHz !
    Mais qu’en est-il de la largeur d’impulsion ? Pourquoi la largeur haut niveau nettement plus court que faible ? Après tout, l’écriture dans un registre doit se faire à la même vitesse quel que soit son contenu. Y a-t-il autre chose qui est exécuté après la fonction loop() ?
    Essayons de nous débarrasser de la transition standard en utilisant la fonction de boucle et d'insérer boucle sans fin:

    1 2 3 4 5 6 7 void loop() ( while (1 ) ( PORTB = B11111111; PORTB = B00000000; ) )

    void loop() ( while (1) ( PORTB = B11111111; PORTB = B00000000; ) )

    Déjà mieux. Et la fréquence est passée à 4 MHz ! Certains cycles d'horloge sont perdus pour terminer la comparaison dans la boucle (1 - vrai ?). Eh bien, essayons maintenant d'alterner plusieurs commandes identiques les unes après les autres :

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 void loop() ( while (1 ) ( PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = 111 ; PORTB = B00000000 ; PORTB = B11111111 ; PORTB = B11111111 ; PORTB = B11111111 ;

    void loop() ( while (1) ( PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; PORTB = B11111111; PORTB = B00000000; B = B1111111 1 ; PORTB = B00000000 ; PORTB = B11111111 ; PORTB = B11111111 ; PORTB = B11111111 ;

    Je n’ai pas un peu compris cette anomalie. La fréquence est passée à 8 MHz ! C'est-à-dire une opération par cycle d'horloge. Mais pour une raison quelconque, la largeur de l'impulsion positive a diminué de moitié (de 83 ns à 41 ns). Je ne suis pas prêt à expliquer ce qui a influencé cela. Vous devriez essayer de bricoler le fichier HEX dans un désassembleur.
    Travailler directement avec des registres est très nécessaire lorsque vous travaillez avec des appareils essentiels à la synchronisation des impulsions sur conclusions différentes. Voyons, à titre d'exemple, comment le pouls diffère sur deux contacts. Lorsque nous mettons deux commandes digitalWrite l'une après l'autre pour différents contacts, alors nous pensons que le signal apparaîtra aux deux endroits en même temps. Mais bien sûr, ce n’est pas vrai :

    1 2 3 4 5 6 7 8 void loop() ( while (1 ) ( digitalWrite(12 , HIGH) ; digitalWrite(11 , HIGH) ; digitalWrite(12 , LOW) ; digitalWrite(11 , LOW) ; ) )

    void loop() ( while (1) ( digitalWrite(12, HIGH); digitalWrite(11, HIGH); digitalWrite(12, LOW); digitalWrite(11, LOW); ) )

    Très souvent, dans l'artisanat électronique domestique, il est nécessaire d'examiner l'un ou l'autre signal, et il suffit de représentation numérique- ce que le MK transmet via I2C, le PWM est-il correctement configuré, etc. Si vous disposez d'un bon oscilloscope au travail, en acheter un pour votre maison coûte trop cher, surtout lorsque le besoin ne s'en fait sentir qu'occasionnellement.
    DANS dernièrement Des analyseurs logiques bon marché (environ 50 dollars) sont apparus, mais une pensée m'a toujours empêché de les acheter : la chose est extrêmement simple, pourquoi ne pas la fabriquer soi-même à partir de matériaux de récupération ?
    Dans cet article, je vais vous expliquer comment créer un analyseur logique simple avec des coûts financiers minimes - tout ce dont vous avez besoin est la carte de débogage Stm32F4Discovery.

    Analyseur logique (ci-après dénommé LA)– un appareil conçu pour enregistrer, visualiser et analyser des signaux dans circuits numériques. Comme un oscilloscope, un LA est connecté avec une ou plusieurs sondes au circuit analysé, mais contrairement à un oscilloscope, il n'enregistre que deux états de signal « 0 » et « 1 ». Fonction importante LA est la capacité de déchiffrer automatiquement les signaux enregistrés, par exemple pour analyser les échanges de données sur un bus I2C ou SPI. De plus, les LA se distinguent par un plus grand nombre de lignes analysées que les oscilloscopes : de 8 dans les analyseurs simples à des centaines dans les échantillons industriels.
    Le projet décrit ici - LogicDiscovery - est un analyseur logique compatible SUMP, réalisé sous le format d'un décodeur USB pour PC. Il a tout à fait caractéristiques modestes: 20 MHz, 16 canaux, 24 Ko de mémoire. Cependant, cela suffit pour un très large éventail de tâches : analyse des lignes UART, I2C, SPI (dans la limite de plusieurs mégahertz), des bus parallèles, mesure des caractéristiques de synchronisation des signaux, etc.

    Commençons

    Donc, tout ce dont nous avons besoin c'est :
    • Carte de développement Stm32F4Discovery. À partir de 500 roubles dans les magasins de Moscou, ou peut-être est-il déjà dans vos poubelles ? N'importe quelle autre carte basée sur STM32F4 ou STM32F2 fera l'affaire, mais vous devrez alors corriger les sources.
    • Plusieurs fils à connecter au circuit analysé.
    • Le firmware prêt à l'emploi est disponible sur Google.Code. Les sources sont également là.
    • De plus, vous avez besoin d'un client pour PC, je recommande OLS.
    Le client est écrit en Java, la solution résultante est donc indépendante du système d'exploitation. Théoriquement, vous pouvez utiliser n'importe quel client compatible SUMP, mais ci-dessous je décrirai l'utilisation de ce programme particulier.
    Stm32F4Discovery est alimenté par un port mini-USB, via lequel il est flashé. Pour utiliser les fonctions de l'avion, la carte est connectée à un PC via un port micro-USB. Pour alimenter la carte à partir du même port, connectez les broches avec un cavalier PA9 Et 5V. Le PA9 est connecté directement au Vbus du port micro-USB, et 5V est l'entrée du stabilisateur qui génère l'alimentation de la carte. Pour vérifier le fonctionnement, connectez les ports PA2 Et PD0. Un signal de test est généré en PA2 et PD0 est la première entrée de l'avion.

    La carte est reconnue par le PC comme port COM ; pour Linux, les pilotes sont standards et devraient déjà être dans le noyau ; pour Win, les pilotes sont téléchargés depuis le site de ST. Une fois la carte identifiée, vous pouvez lancer le client et vous mettre au travail.
    Mais d’abord, une mouche dans la pommade.

    Restrictions

    Le projet utilise protocole ouvert PUISARD. Ce protocole a été développé à l'origine pour les avions basés sur FPGA, et depuis en termes d'enregistrement signaux d'entrée et l'analyse des flux de données, les microcontrôleurs leur sont toujours inférieurs ; toutes les fonctions implémentées dans le client ne seront pas disponibles :
    • Fréquence d'enregistrement maximale – 20 MHz, dans l'original jusqu'à 200 MHz
    • La compression RLE et le filtrage du bruit ne sont pas pris en charge.
    • Vous ne pouvez pas sélectionner des groupes de canaux arbitraires, uniquement le premier (8 canaux) ou le premier + le deuxième (16 canaux).
    • Les déclencheurs ne fonctionnent pas par valeur, mais par bord (cependant, à mon avis, c'est déjà un avantage).
    • Les déclencheurs avancés (complexes) ne sont pas pris en charge.
    Ces restrictions doivent être gardées à l'esprit lors de la configuration du client. Il ne connaît rien de ces restrictions et vous permettra de choisir n'importe quel paramètre. Le résultat obtenu dans ce cas sera incorrect.

    Nous utilisons

    Nous lançons le client via le fichier run.bat ou run.sh, selon le système d'exploitation utilisé. Vous pouvez en savoir plus sur les fonctions du client sur sa page ; ici, je décrirai le processus d'obtention des premiers échantillons et les paramètres soumis à des restrictions.

    Au menu "Capturer", sélection d'un élément "Commencer la capture", ouvrez la fenêtre des paramètres d'enregistrement. Sur la première page du champ ""Port de l'analyseur" nous sélectionnons le port sur lequel repose notre avion, rien d'autre ne doit être modifié. Bouton "Afficher les métadonnées de l'appareil" Vous pouvez vérifier la connexion :

    Sur la deuxième page nous indiquons les paramètres de capture. On ne touche pas aux deux premiers points,
    "Taux d'échantillonnage" pas plus de 20 MHz (si vous en spécifiez plus, la carte utilise toujours 20 MHz, mais le client pensera que la valeur spécifiée est utilisée, en général, ce sera un non-sens).
    "Groupes de chaînes": 0 – nous utilisons un groupe de canaux, ce sont les lignes PD0-PD7, ou 0 et 1 – nous utilisons deux groupes de canaux - les lignes PD0-PD15.
    "Taille d'enregistrement": pour un groupe de canaux – n'importe quelle valeur, pour deux groupes – pas plus de 12 Ko (le client avertira si une valeur incorrecte est sélectionnée dans ce champ).
    Nous ne touchons pas aux cases à cocher sur cette page, elles ne sont pas supportées :

    Page "Déclencheurs"- la chose la plus intéressante. Nous cochons la première case pour activer simplement les déclencheurs.
    "Rapport Avant/Après" permet de préciser dans pourcentage, combien de données enregistrer avant le déclenchement du tampon. Après avoir cliqué "Capturer" L'avion commence immédiatement à enregistrer les données, en les ajoutant à un tampon cyclique, et lorsque le déclencheur est déclenché, il compte le pourcentage de temps spécifié dans le champ Après et envoie les données au PC.
    "Taper"- "Simple" uniquement, "Complexe" - non pris en charge.
    "Mode"- « Parallèle » uniquement.
    "Masque"- ce sont les lignes sur lesquelles le trigger attendra une chute de signal placer le flag en position zéro pour déclencher sur la ligne PD0 ;
    "Valeur"- le front du signal sur lequel le trigger sera déclenché. Le drapeau est coché – bord d'attaque. Décoché – arrière :

    Pour vérifier le fonctionnement, connectez les ports PD0 et PA2 (sur port donné le test s'affiche Signal UART) cavalier.

    C'est tout, cliquez "Capturer" et regardez le signal reçu (Ctrl+F - échelle d'aperçu) :

    Si rien ne se passe, cela signifie que vous avez réglé la gâchette pour qu'elle se déclenche sur les mauvaises lignes, ou qu'il n'y a aucun signal - vérifiez les paramètres et les connexions de la carte. Le déclencheur peut être lancé manuellement en appuyant sur le bouton Utilisateur (bouton bleu).

    Précautions de sécurité

    Souviens-toi: vous vous connectez directement aux ports du microcontrôleur ! Il n'y a aucune protection autre que les diodes intégrées au MK sur la carte. Par conséquent, assurez-vous d'abord que le signal étudié a une tension maximale de 3,3 V, V en dernier recours 5V, mais il est alors conseillé d'ajouter une résistance de protection entre la source du signal et l'avion.

    Lors de la connexion au circuit analysé, n'oubliez pas de connecter d'abord les masses, puis seulement les lignes de signal. Surtout lorsque le circuit analysé est alimenté par sa propre alimentation, et non par le même PC auquel l'avion est connecté.



    Des questions ?

    Signaler une faute de frappe

    Texte qui sera envoyé à nos rédacteurs :