Sniffer Funktion / I2C-Datenlogger

Die Sniffer-Funktion im I2C.-USB Interface ist jetzt vorhanden und kann mit der Firmwareversion 1.2 genutzt werden. Damit ist es jetzt möglich den Datenverkehr auf dem I2C-Bus mit zu loggen.

Es ist möglich einen Filter auf bestimmte Adressen zu setzten oder den kompletten Datenverkehr mitzulesen.
Dazu wurde unser Terminal-Programm erweitert. Die neue Version 2.2 steht im I2C-Download-Bereich zur Verfügung.

Terminalprogramm i2c-usb-modem_terminalprogramm.zip (139 kB)
Beschreibung  i2c-usb-modem_terminalprogramm.pdf (81 kB)

Hier ein kurzes Beispiel welches den Datenverkehr zwischen ARDUINO und der I2C-LCD-Anzeige auf Adresse 60hex zeigt.

Um die I2C-Daten zu belauschen entpacken Sie die ZIP-Datei und starten Sie das Terminalprogramm durch doppelklick auf I2C_USB_Terminal_V22.exe

Schreiben Sie dann folgende Zeilen in das Terminalfenster

  • SET PULLUP AUS
    Der Befehl schaltet die Pullup-Wiederstände im I2C-USB-Modem aus.
  • SET FILTER 0060
    Setzt den internen Filter auf die I2C-Adresse der LCD-Anzeige.
    Die Adresse muss als HEX-Wert mit vier Stellen eingegeben werden
  • LISTEN 00
    Startet das Belauschen des I2C-Datenverkehrs am Bus und trägt alle Bytes zum Slave in das Terminalfenster ein
  • Button LISTEN-STOP
    Zum Beenden oben neben dem Modem-Status Feld den Button LISTEN -STOP drücken

Folgender Code wird vom Arduino gesendet:

      Wire.beginTransmission(I2C_LCD_ADDR);  // Start Übertragung
      Wire.write(92);                        // Backslash-Zeichen
      Wire.write("CLR");                     // Kommando
      Wire.endTransmission();                // Ende
      delay(15);
      
      Wire.beginTransmission(I2C_LCD_ADDR);  // Start Übertragung
      Wire.write(" Hallo LCD-Display");    // Text 1. Zeile
      Wire.endTransmission();

 

USB-Modem_Listen_1

Im Terminal kann man gut sehen wie die Daten laufen. Jeder Befehl startet mit der I2C-Slaveadresse. Im aktuellen Fall 60hex

Die Daten im blauen Kasten ist der Befehl „\CLR“

Die Daten im grünen Kasten ist die Ausgabe des Textes “ Hallo LCD-Display  “

Danach kann man erkennen, dass der Arduino noch einmal die Slave-Adresse 60hex schickt.

 

 

7 Kommentare

  1. Hallo Herr Horter,

    ich habe mal eine Frage zum I2C-USB-Modem (Sniffer-Modus).
    Ich würde gerne auf dem I2C-Bus alle I2C-Telegramme loggen und diese mit einem Timestamp versehen. I2C-Bus Takt ca. 20 kHz. Ist dies prinzipiell möglich und gibt es dafür auch schon eine fertige Software, die die Telegramme in einer Liste mit Timestamp darstellt?

    Mit freundlichem Gruß
    Michael Schoppe

    • Hallo Herr Schoppe,
      die Sniffer-Funktion funktioniert mit dem Terminal-Programm leider nur ohne Zeitstempel.
      Sie können den Sniffer mit oder ohne Filter starten. Wird eine Kommunikation erkannt überträgt das Modem die geloggten Daten direkt auf die USB-Schnittstelle.
      Sie müssten sich ein eigenes Terminalprogramm programmieren, der die Zeitstempel mit einträgt.
      Beste Grüße aus Bayreuth
      JH

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.