I²C Doctor Dokumentation

Version 1.0.0

Übersicht

Der I²C Doctor ist ein Embedded Diagnose-Tool mit Display zur einfachen Analyse deiner physischen I²C-Anwendung mit konkreten Empfehlungen (in Englisch).

Spezifikationen

I²C-Schnittstellen 1× GROVE/STEMMA,
1× QT/qwIIC,
2× 2.54mm Stiftleiste (male/female)
(SDA & SCL sind jeweils durch einen 100Ω Serienwiderstand geschützt)
I²C-Geschwindigkeiten 10kHz / 50kHz / 100kHz / 200kHz / 400kHz / 1MHz
I²C-Pullups (zuschaltbar) 10kΩ / 4.7kΩ / 2.2kΩ / 1kΩ
Microkontroller ESP32 (Dual-Core 240MHz mit 4MB Flash)
Display 1.3" 240x240 TFT
Eingangsspannung 5V (USB-C)
VDD (I²C) 3 – 5V (5V-tolerant)
Stromaufnahme < 200 mA
VDD Ausgangsstrom (max.) ~100 mA (PTC-Sicherung)
Abmessungen 80 × 40 mm (PCB) + ~1.5mm je für USB und Schiebeschalter
84 × 50 mm (Gehäuse) + ~3mm für Schiebeschalter
Höhe 11.5 mm
15.5 mm (Gehäuse mit Pin header)
20mm (PCB mit Nylon-Abstandshaltern)
Temperatur 0 – 70 °C
Gewicht 22 g (PCB + Nylon-Abstandshaltern)
43 g (PCB + Gehäuse)
ESD-Schutz (USB & I²C) Luftentladung: ±15 kV  |  Kontaktentladung: ±8 kV
Firmware-Update Manuell via Binary-Upload (Access Point) oder USB (ESP Flasher Tool)

Hardware

Der I²C Doctor bietet die folgende Peripherie:

I²C Doctor Hardware

Nach dem Start wird auf dem Display ein Menü dargestellt. Mit den drei Knöpfen rechts navigierst du:

Hinweis: Halte einen Button gedrückt um schneller durchs Menü zu navigieren.
Main Menu

Diagnose

Die Diagnose ist das Core-Feature des I²C Doctors. Sie analysiert den physikalischen Zustand deiner I²C-Anwendung und gibt Empfehlungen ab.

Ablauf:

  1. Spannungen messen und Pullups prüfen
  2. SDA und SCL auf Kurzschlüsse prüfen
  3. Widerstandswerte, Rise Times, Ströme und Geschwindigkeiten evaluieren
  4. Angehängte Geräte suchen
  5. Score berechnen und Empfehlungen formulieren
Diagnose Checking
Diagnose Results
Diagnose Details
Diagnose Recommendation

Scan

Mit dem Address Scanner können angehängte Geräte gefunden werden. Dank einer Datenbank populärer Sensoren können gefundene Geräte teilweise identifiziert werden:

Hinweis: Die Adresse des ersten gefundenen Geräts wird als Default für Stress Test, Speed Scout usw. verwendet.
Address Scanner
Address Scanner Details

Pullups

Der Pullup Analyzer misst live die Pullup-Widerstände für SDA und SCL und bewertet sie als HIGH (zu hoch), LOW (zu tief) oder GOOD (passend).

Abhängig von der in den Settings gewählten Target Speed werden folgende Grenzwerte verwendet:

Rise Time Grenzwerte

Target Speed Rise Time (WARN) Rise Time (BAD)
10 kHz8 µs12 µs
50 kHz2 µs3 µs
100 kHz800 ns1200 ns
200 kHz600 ns900 ns
400 kHz250 ns400 ns
1 MHz100 ns160 ns

Strom Grenzwerte

Target Speed Strom (WARN) Strom (BAD)
10 kHz2 mA3 mA
50 kHz2 mA3 mA
100 kHz2 mA3 mA
200 kHz2 mA3 mA
400 kHz4 mA6 mA
1 MHz14 mA20 mA
Live Pullups

Live Monitor

Der Live Monitor ist ein stiller Zuhörer. Er analysiert passiv die I²C-Kommunikation eines angehängten Masters:

Live Monitor

Stress Test

Mit dem Stress Test kann die Stabilität der I²C-Kommunikation eines einzelnen Geräts geprüft werden. Dabei wird eine grosse Anzahl (Count) I²C-Read-Befehle an die eingestellte Adresse (Addr) mit der gewählten Geschwindigkeit (Speed) gesendet und deren ACKs geprüft.

Stress Test

Fault Injection

Mittels Fault Injection können Fehlverhalten und Extremfälle simuliert werden:

Long Cable (C)

Schaltet eine von vier wählbaren Kapazitäten an SDA und SCL, um schlechte Busqualität bzw. lange Kabel zu simulieren. 50 pF entspricht ca. 1 m Kabellänge.

Noise (EMV)

Injiziert kurze Störimpulse auf SDA im Intervall von 1–100 Hz. Bei einer positiven SCL-Flanke wird SDA gezielt für ~8 µs auf LOW gezogen.

SDA Hold

Simuliert einen fehlerhaften Sensor, der den Bus blockiert. Beim ersten Datenbit wird SDA für eine einstellbare Dauer (ca. 5 µs – 1 ms) auf LOW gezogen.

Clock Stretch

Simuliert einen Sensor, der nach einem Befehl zusätzliche Rechenzeit benötigt. Nach einem ACK-Bit wird SCL für eine einstellbare Dauer (ca. 5 µs – 1 ms) auf LOW gezogen.

Bus Recovery

Im Falle eines blockierten I²C-Busses (SDA bleibt LOW) kann Bus Recovery versuchen, den Bus wieder freizugeben. Es werden 9 Clock-Pulse (je ~5 µs) und eine STOP-Bedingung gesendet.

Addr. Converter

Wandelt eine 7-Bit-Adresse in die entsprechenden 8-Bit-Äquivalente für Write und Read um.

Speed Scout

Ermittelt die maximal noch funktionierende Lese-Geschwindigkeit eines Sensors. Für dauerhaft stabile Kommunikation empfiehlt es sich, die in der Diagnose vorgeschlagenen Geschwindigkeiten zu verwenden.

Continuous Scan

Scannt kontinuierlich alle I²C-Adressen. Gefundene Geräte werden mit X markiert. Neu erkannte Geräte erscheinen für zwei Runden in Grün, entfernte Geräte für zwei Runden in Rot (/).

Write / Read

Write Byte

Sendet ein einzelnes Byte an das eingestellte Gerät (Addr).

Write Register

Schreibt ein einzelnes Byte in ein Register des eingestellten Geräts (Addr).

Read Bytes

Liest 1–4 Bytes (Len) vom eingestellten Gerät (Addr). Gelesene Daten werden in Hex (Big-Endian) angezeigt.

Tipp: Langer Klick auf READ aktiviert kontinuierliches Lesen.

Read Register

Liest ein einzelnes Byte aus einem Register des eingestellten Geräts (Addr).

Tipp: Langer Klick auf READ aktiviert kontinuierliches Lesen.

Register Dump

Liest alle Register (0x00–0xFF) des eingestellten Geräts aus und stellt sie als Hex-Tabelle dar. Mit Klick nach unten wird die nächste Seite angezeigt.

Sensor Simulator

Im Sensor Simulator fungiert der I²C Doctor als I²C-Slave. Wähle eine beliebige Adresse und ein Daten-Byte und starte mit START. Das eingestellte Byte (TX) kann nun von einem I²C-Master gelesen werden. Die letzten 8 an diesen Slave gesendeten Bytes (LAST RX) werden ebenfalls in Hex angezeigt.

Sensor Simulator Config
Sensor Simulator Running

Settings

In den Settings können global gültige Werte eingestellt werden. Alle Settings werden persistent gespeichert.

Target Speed

Die gewünschte I²C-Geschwindigkeit. Wird überall dort angezeigt (oben links), wo sie verwendet wird.

Display Rotation

Dreht die Display-Ausrichtung — z.B. für Linkshänder.

Display Brightness

Passt die Display-Helligkeit an (1–100%).

Calibration

Jeder I²C Doctor wird in der Fabrik kalibriert. Mit diesem Setting kann der Kalibrierungsprozess bei Bedarf wiederholt werden.

Achtung: Eine falsche Kalibrierung verschlechtert die Diagnose-Genauigkeit erheblich.

Factory Reset

Setze hier alle Einstellungen, Scores und Kalibrierung auf den Auslieferzustand zurück.

About & Firmware Update

Im About-Screen werden gerätespezifische Informationen angezeigt, wie z.B. die aktuelle Firmware-Version.

Firmware Update (OTA)

Falls eine neuere Firmware-Version (.bin) verfügbar ist, kann sie folgendermassen Over-The-Air auf den I²C Doctor geflasht werden:

  1. Im Hauptmenü ABOUT wählen
  2. Im ABOUT-Screen unten rechts UPDATE FW wählen
  3. QR-Code scannen, um das Smartphone mit dem I²C Doctor zu verbinden — oder manuell den WLAN Access Point «I²C Doctor» (kein Passwort) auswählen
  4. Next klicken und den neuen QR-Code scannen — oder im Browser http://192.168.4.1 öffnen
  5. Die i2c_doctor_fw_vXXX.bin-Datei hochladen und auf Flash Firmware klicken
I²C Doctor Updater
Hinweis: Der I²C Doctor hat by default keine Antenne montiert und sollte daher möglichst in der Nähe des verbunden Geräts platziert werden.

Links & Downloads