Mesures de radioamateur: analyse du signal du bus I2C



Comme je l'ai mentionné à plusieurs reprises dans mes publications, les projets d'amateur sont financés par le budget familial et un radio-amateur ne peut généralement pas se permettre d'acheter un équipement de mesure coûteux. Nous devons nous contenter de ce que nous avons. Ou le fait qu'il est possible de profiter de "pendant un certain temps". Et parfois à cause du désespoir, le radio-amateur doit «percer avec une scie et scier avec un vrille».

Récemment, j'ai ressenti le besoin de savoir ce qui est réellement transmis dans l'appareil que je développe sur le bus I2C. Ce fut ce moment heureux où vous pouviez vous permettre de «scier avec une scie».

Vous pouvez découvrir comment les données sont échangées entre les appareils à l'aide du protocole I2C ici . Pour analyser les signaux sur le bus I2C, vous pouvez utiliser à la fois un oscilloscope numérique à deux canaux avec mémoire et un analyseur logique.

Oscilloscope numérique double canal avec mémoire


Lorsque vous travaillez avec des équipements électroniques, l'oscilloscope est l'outil le plus polyvalent. Les oscilloscopes numériques modernes ont un certain nombre de propriétés utiles qui permettent, entre autres, d'analyser les signaux du bus I2C.

Dans ce cas, j'ai obtenu un oscilloscope numérique à deux canaux «pendant un certain temps» avec de la mémoire Rigol DS1102 (le prix sur le site Web du fabricant est de 461 $). Cet appareil dispose de deux canaux de mesure avec une bande passante allant jusqu'à 100 MHz et une fréquence d'échantillonnage du signal de 1 GSa / s.

CH1 était connecté au signal SCL. CH2 était connecté au signal SDA. Pour les deux canaux, une échelle de 1,00 V / div a été définie. Échelle de balayage - 10 us / div. Pour plus de clarté, le faisceau du premier canal est décalé vers la moitié supérieure de l'écran et le faisceau du deuxième canal vers le bas.

Dans le menu Trigger, l'oscilloscope a été configuré pour une seule mesure avec le déclencheur en atteignant le front montant dans le canal CH1 de niveau 1,00 V:



Après avoir allumé l'équipement testé, le gros bouton rouge Marche / Arrêt a été enfoncé. L'oscilloscope est passé en mode veille, puis a démarré. Au bout de quelques secondes, l'enregistrement a été arrêté manuellement.

La forme d'onde obtenue a été enregistrée sur un support externe écran par écran:



Analysons les signaux enregistrés. Sur le premier écran, nous voyons un affichage des paramètres de l'appareil et un oscillogramme des signaux SCL (partie supérieure) et SDA (partie inférieure de l'écran), sur lesquels nous lisons de gauche à droite:

  • Signal START : le maître règle d'abord le niveau bas sur le bus SDA puis sur le bus SCL;
  • Adresse 7 bits : lire 0x60 (1100000) sur le bus SDA le long des bords avant de la SCL;
  • signe du mode d'enregistrement : on lit sur le bus SDA un niveau bas sur le bord d'attaque suivant du SCL;
  • Signal ACK : après avoir transféré l'octet, le dispositif maître commute pour recevoir via le bus SDA, le SDA est réglé haut, le dispositif esclave définit le niveau bas sur le front descendant du SCL (en fait, le signal ACK), que le maître lit sur le front montant du SCL;
  • Signal STOP : le maître passe au niveau haut sur le bus SCL puis sur le bus SDA

De même, lentement mais sûrement, vous pouvez décrypter manuellement le reste de l'enregistrement.

Analyseur logique de signal numérique


Le protocole peut être décrypté à l'aide d'une méthode plus simple utilisant un analyseur logique et un logiciel approprié.

Pour une utilisation comme analyseur logique, j'ai été aimablement fourni par des collègues de Saleae Logic 8 (le prix sur le site Web du fabricant est de 399 $). Le logiciel utilisé était la démo Saleae Logic 1.2.18 tirée du site officiel . Lors de l'installation de ce logiciel, j'ai accepté un accord de licence avec la condition, y compris, de ne pas utiliser ce logiciel avec un équipement tiers.

Le programme comprenait un analyseur de protocole I2C. CH0 a été attribué pour SCL et CH1 pour SDA. Taux d'échantillonnage du signal 24 MSa / s.



Le lancement a été configuré sur le front "leader" de CH0. Le format hexadécimal a été sélectionné pour afficher les données.



Après avoir allumé l'équipement sous test, un grand bouton vert de démarrage a été enfoncé, et après quelques secondes, un graphique est apparu à l'écran:



Je vois l'avantage maximal d'utiliser un analyseur logique dans la mesure où le programme lui-même déchiffre les données reçues. Les résultats du déchiffrement sont entrés ligne par ligne dans la fenêtre Protocoles décodés. Lorsque vous sélectionnez une ligne de données dans la fenêtre, le programme affiche l'emplacement de ces données sur le graphique.

Oscilloscope numérique vs analyseur logique


Pour comparer les options, j'ai «collé» quatre captures d'écran de l'écran de l'oscilloscope et un fragment du diagramme de l'analyseur logique dans l'éditeur graphique:



Le début est indiqué par un cercle vert, l'arrêt est indiqué par un cercle rouge. Le diagramme vérifie d'abord la présence d'un périphérique avec l'adresse 0x60 sur le bus, puis écrit 0x80 dans le registre 0xB7 de ce périphérique.

Si nous abordons la comparaison des options «avec biais», nous pouvons voir que sur le diagramme de l'analyseur logique (fréquence d'échantillonnage 24 MSa / s) il y a une «gigue» du signal SCL, qui n'est pas présente, en tant que telle, sur l'oscillogramme avec une fréquence d'échantillonnage de 1 GSa / s. Le reste de l'image est le même et l'analyseur logique déchiffre également correctement les données en mode automatique.

Lors du choix de "soit-ou" dans le "résidu sec", nous avons, dans le cas d'un oscilloscope, un appareil universel coûteux qui n'est pas aussi pratique pour analyser un bus qu'un analyseur logique, mais pour un prix comparable. Dans ces conditions, personnellement, en tant qu'ingénieur de la «vieille école», j'aurais acquis un oscilloscope numérique.

Cependant, s'il existait un logiciel avec un accord de licence permettant l'utilisation de clones bon marché d'analyseurs logiques populaires, tels que Saleae Logic 8 ou DSLogic Plus ...

Et de tels logiciels existent


Les clones bon marché des analyseurs logiques populaires, et pas seulement, sont pris en charge par le logiciel open source du projet sigrok .

Le lieu de travail a été collecté:



Commence alors la «danse avec un tambourin». Sur Windows 10, seule la version 32 bits de PulseView a été lancée. Elle n'a pas déterminé la présence d'un clone chinois bon marché Saleae Logic dans le système (le prix sur le site Web du vendeur est de 7 $).

Après cela, les pilotes WinUSB ont été installés dans Zadig pour le périphérique Logic , et après une nouvelle numérisation, il a été défini dans Zadig comme le périphérique fx2latw :



Après cela, les pilotes WinUSB ont été à nouveau installés pour le périphérique fx2latw dans Zadig, et seulement après que PulseView a vu le périphérique Saleae Logic dans la liste. L'appareil est connecté.

Après avoir connecté l'appareil, les réglages de programme suivants ont été effectués (de gauche à droite sur la barre d'outils, en commençant par l'inscription "Saleae Logic"):

  • Le taux de capture pré-déclenchement = 2% est défini en appuyant sur un bouton avec une clé et un tournevis;
  • les entrées supplémentaires sont désactivées en appuyant sur un bouton avec une sonde rouge;
  • régler le volume d'enregistrement de 100 K échantillons;
  • régler la fréquence d'échantillonnage à 24 MHz;
  • L'analyseur de protocole I2C est activé en appuyant sur un bouton avec une icône jaune-verte.

Plus loin dans le panneau à gauche des canaux:

  • les canaux reçoivent des étiquettes de texte correspondant aux signaux;
  • condition de déclenchement affectée au front montant du signal SDA;
  • Les signaux I2C se voient attribuer des canaux correspondants.

Après avoir allumé l'équipement testé, le bouton Run a été enfoncé. Le résultat est déjà familier:



Il semble que «danser avec un tambourin» en valait la peine!

UPD : Après avoir installé manuellement le pilote libusb-win32 dans le gestionnaire de périphériques pour le périphérique USB Logic , le programme PulseView a commencé à détecter de manière stable la présence de Saleae Logic dans le système sans manipuler Zadig.

Brèves conclusions:


L'article décrit la méthodologie d'analyse des signaux de bus I2C à l'aide d'un oscilloscope numérique avec mémoire et des analyseurs logiques avec des progiciels d'application.

Une méthode universelle d'analyse du signal, mais pas bon marché et lente, est l'utilisation d'un oscilloscope numérique avec mémoire.

Une méthode rapide et budgétaire d'analyse du signal, mais avec une tâche non triviale de connexion de l'équipement, est l'utilisation d'un clone peu coûteux d'un analyseur logique en conjonction avec PulseView.

Je serais heureux si ma publication aidait les lecteurs à gagner du temps et de l'argent.

Dans la prochaine publication, je vais vous expliquer comment j'ai mesuré la fréquence à laquelle le résonateur à quartz a démarré dans le synthétiseur de fréquence, sans fréquencemètre. Mais c'est une autre histoire ...

Source: https://habr.com/ru/post/fr438732/


All Articles