Home

 Kontakt

 Shop

 Download

 Links

 

Das I²C USB Modem mit Datenloggerfunktion (Sniffer)

© http://www.horter.de

Rechner mit serieller Schnittstelle werden immer seltener.
Dieses I2C Modem empfängt seine Befehle über eine simulierte RS232 Schnittstelle.
Dadurch ist es möglich mit nahezu allen Entwicklungsumgebungen auf die I2C-Bausteine zuzugreifen. z.B.

- Visual Basic /  VBA
- Linux
- C++, Delphi
- Pearl
- ...  u.v.m.

Folgende Funktionen sind sind bereits realisiert worden:

  • I2C-Steuerbefehle als Steuersequenzen über USB-Bus
  • Busgeschwindigkeiten bis 350 kHz


Diese Funktionen kommen demnächst hinzu

  • Mit der Sniffer Funktion können Sie die Telegramme auf dem I2C-Bus belauschen.
  • Live Streaming und Datenübertragung zum PC
  • Analysesoftware mit Darstellung der Signale und I2C-Befehle


Die Hardware

Als USB-Baustein wurde der  2005FT232R USB UART von Future Technology Devices International kurz FTDI verwendet.
Der Chip ist zwar etwas teuerer fügt sich aber in alle Betriebssysteme sicher und zuverlässig ein.

Treiber für alle möglichen Betriebssysteme (von Windows 98 bis Windows Server 2008) finden Sie auf der Treiberseite des Chipherstellers unter:  http://www.ftdichip.com/Drivers/D2XX.htm

Ist der Treiber installiert finden Sie in der Systemsteuerung einen virtuellen COM-Port also eine simulierte RS232-Schnittstelle. Über diese werden die Steuerbefehle zum I2C-Bus gesendet und die Antworten empfangen.

Mit einem Jumpern auf der Platine kann die Terminierung der I2C-Signale im Modem erfolgen. Falls Sie bei längeren Leitungen am Ende terminieren möchten, können Sie den Jumper entfernen oder die die Terminierung per Steuerbefehl abschalten.

Die drei Leuchtdioden zeigen den aktuellen Signalpegel an. Dies hat sich bei der Softwareerstellung als ungemein nützlich erwiesen.

Die Spannung für die I2C-Bausteine wird absichtlich nicht vom USB-Bus abgezapft damit der PC oder die Schnittstellenkarte keinen Schaden nimmt.
Sie benötigen also ein 5V Netzteil das entweder an der Klemmleiste ST2 angeschlossen oder mit einem Hohlstecker (Außendurchmesser 5,5 mm Stiftdurchmesser 2 mm Pluspol innen) angesteckt werden kann.


Steuerbefehle / Kommandos

Das I2C-USB-Modem empfängt und sendet die Kommandos über einen virtuellen COM-Port mit folgenden Einstellungen:

  • 115200 Baud
  • no Parity
  • 8 Zeichenbits
  • 1 Stoppbit

Nachdem das Modem ein Kommando vollständig empfangen hat wird es auf den I2C-Bus angewendet. Anschließend wird vom Modem eine Antwort generiert und zum PC zurückgeschickt.

Diese Protokoll ist wie folgt aufgebaut:

  • der Befehl
  • die Anzahl der Bytes im Datenblock (maximal 128)
  • der Datenblock selbst und
  • das Ende-Zeichen (EOT= END OF TRANSMISSION).
 
Befehle
VERSION Mit diesem Befehl lässt sich die aktuelle Firmware-Version ermitteln.
Der Antwort-Frame enthält 3 Byte Nutzdaten, welche die Version der Firmware enthalten.
MODEM-CALL Dieser Befehl hat die Aufgabe das Modem „anzustoßen“. Somit lässt sich ganz einfach feststellen ob das Modem noch mit dem PC verbunden ist oder ob es Probleme mit der USB-Verbindung gibt.
PULLUP Der I2C-Bus braucht an einer Stelle im Netz eine Terminierung nach +5V. Dies wird in der Regel mit Widerständen gemacht. Bei der Kommunikation ziehen die Busteilnehmer diese High-Pegel auf Masse. Es gibt Anwendungen wo nicht am Master terminiert werden soll. Dann können die Pull-Up-Widerstände mit diesem Befehl abgeschaltet werden können.
I2C-SPEED Mit diesem Befehl kann die Taktgeschwindigkeit am I2C-Bus zwischen
40 Hz und 350 kHz eingestellt werden.
I2C-SET Mit diesem Befehl können zu Testzwecken die Signale INT, SCL und SDA einzeln auf High oder Low gesetzt werden.
I2C-GET Mit I2C-Get wird der aktuelle Zustand der Signale INT, SCL und SDA abgefragt
I2C-DATA Mit diesem Befehl können Sie Daten von einem I2C-Slave empfangen, oder Daten an einen I2C-Slave senden.
Ob Daten gesendet oder empfangen werden sollen erkennt das Modem an dem R/W-Bit in der Adresse.
Ist das R/W-Bit (Bit 0) „Low“, werden Daten geschrieben. Ist das R/W-Bit „High“, werden Daten gelesen.

Beispiel Daten lesen:
Um Daten von einem I2C-Slave zu lesen wird im Datenblock erst die Adresse abgelegt und dann die gewünschte Anzahl der zu lesenden Bytes angegeben.
Im Normalfall hat die Slave-Adresse eines I2C-Slaves nur 7 (bzw. 8) Bit. Da aber immer mehr IC´s mit 10 Bit breiter Adresse auf den Markt kommen wurde die Adresse in Byte aufgeteilt. Ist das MSB null, so interpretiert das Modem die übermittelte Adresse als eine 7 Bit Adresse. Stehen Daten im MSB, so wird ein 10 Bit breiter Adresszugriff generiert.

Im nachfolgenden Beispiel werden 5 Bytes von einem I2C-Slave an Adresse 161 gelesen.

Beispiel Daten schreiben:

Um I2C-Daten an einen Slave zu senden wird im Datenblock erst die Adresse abgelegt und dann die zu sendenden Daten hinterher geschoben.

Im nachfolgenden Beispiel werden 3 Bytes an einem I2C-Slave an Adresse 172 geschrieben.

 


Analyser / Sniffer

So ähnlich wird die Analysesoftware aussehen. Das Modem wird an einen I2C-Bus parallel eingeschleift, horcht die Kommunikation zwischen Master- und Slaves ab und dokumentiert diese zu einem angeschlossenen PC.

Damit wird es möglich I2C-Befehle z.B. zwischen Motherboard und Netzteil mitzuschreiben und ggf. eigene Anwendungen zu entwickeln oder zu verbessern.

Die "Sniffer-Software" wird voraussichtlich Ende des Jahres 2010 zur Verfügung stehen

Dokumentation

Detaillierte Beschreibung der Steuerbefehle i2c-usb-modem_kommandos.pdf (239 kB)
Datenblatt (1 Seite) i2c-usb-modem_db.pdf (392 kB)
Schaltplan (1 Seite) i2c-usb-modem_sp.pdf (23 kB)

I2C-USB-Modem-Test.zip (118 kB)
Excel-Makro
mit je einem Beispiel zur Ansteuerung der I2C-Ausgabekarte,
I2C-Eingabekarte und EEprom mit dem I2C-USB-Modem und der port.dll.
Ein Terminalprogramm mit dem die Funktion des I2C-USB-Modems und der angeschlossenen Slaves getestet werden kann.
Terminalprogramm i2c-usb-modem_terminalprogramm.zip (132 kB)
Beschreibung  i2c-usb-modem_terminalprogramm.pdf (81 kB)

 

Bausätze können Sie günstig in unserem Onlineshop in der Rubrik
"I2C-Komponenten" bestellen.