|
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
- Mit der Sniffer Funktion können Sie die Telegramme auf dem I2C-Bus belauschen.
Die Hardware
|
Als USB-Baustein wurde der 2005FT232R USB UART von Future Technology Devices International kurz FTDI verwendet.
Der Chip ist zwar etwas teurer 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.
Die Antwort 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
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 Terminalprogramm erweitert.
|
Bausätze können Sie günstig in unserem Onlineshop in der Rubrik
"I2C-Komponenten" bestellen. |
|