Amateurfunkmessungen: I2C-Bussignalanalyse



Wie ich in meinen Veröffentlichungen wiederholt erwähnt habe, werden Amateurprojekte aus dem Familienbudget finanziert, und ein Funkamateur kann es sich normalerweise nicht leisten, teure Messgeräte zu kaufen. Wir müssen uns mit dem zufrieden geben, was wir haben. Oder die Tatsache, dass es möglich ist, "für eine Weile" zu nutzen. Und manchmal muss der Funkamateur aus Hoffnungslosigkeit "mit einer Säge bohren und mit einem Gimlet sägen".

Vor kurzem hatte ich das Bedürfnis herauszufinden, was tatsächlich in dem Gerät übertragen wird, das ich auf dem I2C-Bus entwickle. Es war dieser glückliche Moment, in dem Sie es sich leisten konnten, "mit einer Säge zu sägen".

Hier erfahren Sie, wie Daten mithilfe des I2C-Protokolls zwischen Geräten ausgetauscht werden . Zur Analyse der Signale auf dem I2C-Bus können Sie sowohl ein digitales Zweikanaloszilloskop mit Speicher als auch einen Logikanalysator verwenden.

Digitales Zweikanal-Oszilloskop mit Speicher


Bei der Arbeit mit elektronischen Geräten ist das Oszilloskop das vielseitigste Werkzeug. Moderne digitale Oszilloskope verfügen über eine Reihe nützlicher Eigenschaften, die es unter anderem ermöglichen, I2C-Bussignale zu analysieren.

In diesem Fall habe ich für eine Weile ein digitales Zweikanal-Oszilloskop mit Rigol DS1102-Speicher erhalten (der Preis auf der Website des Herstellers beträgt 461 US-Dollar). Dieses Gerät verfügt über zwei Messkanäle mit einer Bandbreite von bis zu 100 MHz und einer Signalabtastfrequenz von 1 GSa / s.

CH1 wurde mit dem SCL-Signal verbunden. CH2 wurde an das SDA-Signal angeschlossen. Für beide Kanäle wurde eine Skala von 1,00 V / Div eingestellt. Sweep-Skala - 10 us / div. Zur Verdeutlichung wird der Strahl des ersten Kanals in die obere Hälfte des Bildschirms und der Strahl des zweiten Kanals nach unten verschoben.

Im Trigger-Menü wurde das Oszilloskop für eine einzelne Messung eingerichtet, wobei der Trigger beim Erreichen der ansteigenden Flanke im CH1-Kanal mit Pegel 1,00 V:



Nach dem Einschalten des zu testenden Geräts wurde die große rote Run / Stop-Taste gedrückt. Das Oszilloskop ging in den Standby-Modus und startete dann. Nach einigen Sekunden wurde die Aufnahme manuell gestoppt.

Die erhaltene Wellenform wurde Bildschirm für Bildschirm auf einem externen Medium aufgezeichnet:



Lassen Sie uns die aufgezeichneten Signale analysieren. Auf dem ersten Bildschirm sehen wir eine Anzeige der Geräteeinstellungen und ein Oszillogramm der SCL- (oberer Teil) und SDA- (unterer Teil des Bildschirms) Signale, auf denen wir von links nach rechts lesen:

  • START-Signal : Der Master stellt den niedrigen Pegel zuerst am SDA-Bus und dann am SCL-Bus ein.
  • 7-Bit-Adresse : 0x60 (1100000) auf dem SDA-Bus entlang der Vorderkanten der SCL lesen;
  • Vorzeichen des Aufnahmemodus : Wir lesen auf dem SDA-Bus einen niedrigen Pegel an der nächsten Vorderkante der SCL;
  • ACK-Signal : Nach dem Übertragen des Bytes schaltet das Master-Gerät um, um über den SDA-Bus zu empfangen, der SDA wird auf High gesetzt, das Slave-Gerät setzt den Low-Pegel an der fallenden Flanke der SCL (tatsächlich das ACK-Signal), den der Master an der ansteigenden Flanke der SCL liest;
  • STOP-Signal : Der Master wird am SCL-Bus und dann am SDA-Bus hoch gesetzt

Ebenso können Sie den Rest des Datensatzes langsam aber sicher manuell entschlüsseln.

Digital Signal Logic Analyzer


Das Protokoll kann mit einer einfacheren Methode unter Verwendung eines Logikanalysators und einer geeigneten Software entschlüsselt werden.

Für die Verwendung als logischer Analysator wurde ich freundlicherweise von Kollegen von Saleae Logic 8 zur Verfügung gestellt (der Preis auf der Website des Herstellers beträgt 399 US-Dollar). Die verwendete Software war die Demo von Saleae Logic 1.2.18, die von der offiziellen Website stammt . Bei der Installation dieser Software habe ich eine Lizenzvereinbarung mit der Bedingung akzeptiert, diese Software nicht mit Geräten von Drittanbietern zu verwenden.

Das Programm enthielt einen I2C-Protokollanalysator. CH0 wurde für SCL und CH1 für SDA zugewiesen. Signalabtastrate 24 MSa / s.



Der Start wurde an der "führenden" Front von CH0 konfiguriert. Das hexadezimale Format wurde ausgewählt, um die Daten anzuzeigen.



Nach dem Einschalten des zu testenden Geräts wurde eine große grüne Starttaste gedrückt, und nach einigen Sekunden erschien eine Tabelle auf dem Bildschirm:



Ich sehe den maximalen Vorteil bei der Verwendung eines logischen Analysators darin, dass das Programm selbst die empfangenen Daten entschlüsselt. Die Entschlüsselungsergebnisse werden zeilenweise in das Fenster Decodierte Protokolle eingegeben. Wenn Sie im Fenster eine Datenzeile auswählen, zeigt das Programm die Position dieser Daten im Diagramm an.

Digitales Oszilloskop gegen Logikanalysator


Um die Optionen zu vergleichen, habe ich vier Screenshots des Oszilloskopbildschirms und ein Fragment des Logikanalysator-Diagramms im grafischen Editor „geklebt“:



Start wird durch einen grünen Kreis angezeigt, Stop durch einen roten Kreis. Das Diagramm prüft zuerst das Vorhandensein eines Geräts mit der Adresse 0x60 auf dem Bus und schreibt dann 0x80 in das 0xB7-Register dieses Geräts.

Wenn wir uns dem Vergleich von Optionen „mit Vorspannung“ nähern, können wir sehen, dass im Logikanalysatordiagramm (Abtastfrequenz 24 MSa / s) ein „Jitter“ des SCL-Signals vorliegt, der als solcher im Oszillogramm mit einer Abtastfrequenz von 1 GSa / s nicht vorhanden ist. Der Rest des Bildes ist der gleiche, und der logische Analysator entschlüsselt die Daten auch im automatischen Modus korrekt.

Bei der Auswahl von "entweder-oder" in der "unteren Zeile" haben wir im Fall eines Oszilloskops ein teures Universalgerät, das für die Analyse eines Busses nicht so praktisch ist wie ein Logikanalysator, aber für vergleichbares Geld. Unter diesen Bedingungen hätte ich persönlich als Ingenieur der „alten Schule“ ein digitales Oszilloskop erworben.

Wenn es jedoch Software mit einer Lizenzvereinbarung gäbe, die die Verwendung kostengünstiger Klone gängiger Logikanalysatoren wie Saleae Logic 8 oder DSLogic Plus ermöglicht ...

Und solche Software existiert


Preiswerte Klone beliebter Logikanalysatoren und nicht nur diese werden von der Open-Source- Software des Sigrok-Projekts unterstützt.

Der Arbeitsplatz wurde gesammelt:



Dann begann das "Tanzen mit einem Tamburin". Unter Windows 10 wurde nur die 32-Bit-Version von PulseView gestartet. Sie hat das Vorhandensein eines kostengünstigen chinesischen Klons Saleae Logic im System nicht festgestellt (der Preis auf der Website des Verkäufers beträgt 7 US-Dollar).

Danach wurden WinUSB-Treiber in Zadig für das Logic- Gerät installiert und nach dem erneuten Scannen in Zadig als fx2latw- Gerät definiert:



Danach wurden in Zadig erneut WinUSB-Treiber für das fx2latw- Gerät installiert, und erst danach sah PulseView das Saleae Logic-Gerät in der Liste. Das Gerät wurde angeschlossen.

Nach dem Anschließen des Geräts wurden folgende Programmeinstellungen vorgenommen (von links nach rechts in der Symbolleiste, beginnend mit der Aufschrift "Saleae Logic"):

  • Das Erfassungsverhältnis vor dem Auslösen = 2% wird durch Drücken einer Taste mit einem Schlüssel und einem Schraubendreher eingestellt.
  • Zusätzliche Eingänge werden durch Drücken einer Taste mit einer roten Sonde deaktiviert.
  • Einstellungsvolumen von 100 K Samples einstellen;
  • Stellen Sie die Abtastfrequenz auf 24 MHz ein.
  • Der I2C-Protokollanalysator wird durch Drücken einer Taste mit einem gelbgrünen Symbol eingeschaltet.

Weiter im Feld links neben den Kanälen:

  • Kanälen werden Textbezeichnungen zugewiesen, die Signalen entsprechen;
  • Triggerbedingung, die der ansteigenden Flanke des SDA-Signals zugeordnet ist;
  • I2C-Signalen werden entsprechende Kanäle zugewiesen.

Nach dem Einschalten des zu testenden Geräts wurde die Run-Taste gedrückt. Das Ergebnis ist bereits bekannt:



Es scheint, dass sich das „Tanzen mit einem Tamburin“ gelohnt hat!

UPD : Nach der manuellen Installation des libusb-win32- Treibers im Geräte-Manager für das USB Logic- Gerät begann das PulseView-Programm, das Vorhandensein von Saleae Logic im System stabil zu erkennen, ohne Zadig zu manipulieren.

Kurze Schlussfolgerungen:


Der Artikel beschrieb die Methode zur Analyse von I2C-Bussignalen unter Verwendung eines digitalen Oszilloskops mit Speicher- und Logikanalysatoren mit Anwendungssoftwarepaketen.

Eine universelle Methode der Signalanalyse, aber nicht billig und langsam, ist die Verwendung eines digitalen Oszilloskops mit Speicher.

Eine schnelle und kostengünstige Methode zur Signalanalyse, jedoch mit einer nicht trivialen Aufgabe, Geräte anzuschließen, ist die Verwendung eines kostengünstigen Klons eines Logikanalysators in Verbindung mit PulseView.

Ich würde mich freuen, wenn meine Veröffentlichung dazu beitragen würde, den Lesern Zeit und Geld zu sparen.

In der nächsten Veröffentlichung werde ich Ihnen erzählen, wie ich die Frequenz gemessen habe, bei der der Quarzresonator im Frequenzsynthesizer ohne Frequenzmesser gestartet wurde. Aber das ist eine andere Geschichte ...

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


All Articles