 |
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).
|
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
 |
Bausätze können Sie günstig in unserem Onlineshop in der Rubrik
"I2C-Komponenten" bestellen. |
|