Konverter USB I2C - polygon

Transcrição

Konverter USB I2C - polygon
Polygon
USB-I2C
Industrie-Automation
Konverter USB
I2C
Eigenschaften
•
•
•
•
•
•
•
USB 1.1 und USB 2.0 kompatibel
Versorgung über USB-Anschluss
100 kbit/s Datenrate (I2C Standard-Mode)
5 V Versorgung für I2C-Peripherie
Interrupt-Eingang
6-polige Modular-Buchse (RJ11)
Virtual COM port (VCP) und Direkt-Treiber (DLL)
Beschreibung
USB-I2C ist ein Konverter-Modul, das am USB-Port eine I2C-Schnittstelle zur Verfügung stellt. Das Modul hat
einen Sendepuffer von 384 Byte (Daten an USB) und einen Empfangspuffer von 128 Byte (Daten von USB). Die
I2C-Leitungen sind über bidirektionale Pegelwandler nach außen geführt und können an Bus-Signale höherer
Spannung (≥ 5V) angeschlossen werden. Extern müssen pull-up-Widerstände oder Stromquellen gemäß Spezifikation vorgesehen werden. Die Belegung der Anschlüsse entspricht den Empfehlungen von Philips.
Es gibt Treiber für Windows '98, Windows ME, Windows 2000 und Windows XP, wahlweise als VCP (Virtual
COM Port) oder als DLL mit WDM-Treiber zur Anbindung an eigene Software ( VC++, C++ Builder, Delphi, VB,
LabView, etc.); auch für Apple OS-8, OS-9 und OS-X sowie Linux (ab Kernel 2.4.0) stehen Treiber zur Verfügung.
Anschlussbelegung
RJ11
1
2
3
4
5
6
SDA
VDD
VSS
SCL
INT
-
Externe Pull-Ups
V+
1k5
1k5
SDA
SCL
123456
Zum Anschluss an den USB wird ein Kabel mit Stecker A zu Stecker B benötigt (Typ A/B).
www.polygon-online.com
1
Polygon
USB-I2C
Industrie-Automation
Treiber-Installation
Für das USB-I2C Modul wird ein komplettes Treiberpaket mitgeliefert. Im Bedarfsfall können aktuelle Treiber
auch von unserer Website heruntergeladen werden: http://www.polygon-online.com/customer.html.
Die VCP-Treiber (Virtual COM Port-Treiber) für Windows werden vom Betriebssystem als eine weitere serielle
Schnittstelle - zusätzlich zu den bereits vorhandenen Hardware-Schnittstellen - gesehen. Applikations-Software greift damit auf das USB-Modul in der gleichen Weise zu, wie sie auf eine serielle Standard-Schnittstelle
zugreifen würde; z.B. über die Windows VCOMM-API-Aufrufe oder über eine COM-Port-Bibliothek.
Die Direkt-Treiber für Windows bieten eine Alternative zu den VCP-Treibern. Damit kann Applikations-Software über eine DLL direkt anstatt über COM-Ports auf das USB-Modul zugreifen. Der Direkt-Treiber besteht aus
einem Windows WDM-Treiber, der mit dem USB-Modul über den Windows USB-Stack kommuniziert, und eine
DLL, die die Schnittstelle zwischen WDM-Treiber und Applikations-Software (geschrieben in C++, Delphi,
Visual Basic etc.) bildet. Eine INF-Installationsdatei und ein De-Installationsprogramm runden das Treiberpaket ab.
Treiber für die Apple-Betriebssysteme einschließlich OS-8, OS-9 und OS-X stehen ebenfalls zur Verfügung.
Während OS-8 und OS-9 sich den gleichen Satz Treiber teilen, werden für OS-X (alias OS-10) abweichende
Treiber benötigt.
Ab dem Linux-Kernel 2.4.0 sind Treiber für das USB-Modul bereits im Kernel vorhanden und werden daher
nicht zusätzlich benötigt.
Die Installation der Treiber erfolgt in der für das jeweilige Betriebssystem üblichen Weise. Eine detaillierte
Beschreibung ist als separate PDF-Datei dem Treiberpaket beigefügt bzw. kann von unserer Website heruntergeladen werden.
Kommunikation
Dem für das Kommunikations-Protokoll nötigen byte-orientierten Datenstrom werden zwei zusätzliche Steuerbyte
vorangestellt. Diesen folgen das Adress-Byte, ggf. ein oder mehrere Sub-Adress-Byte und die Daten-Byte.
Das erste Steuerbyte legt fest, ob die nachfolgenden Daten für den Modul-internen Parameterspeicher oder die
I²C-Schnittstelle gedacht sind und wieviele Sub-Adress-Byte gesendet werden. Dieses Byte hat folgenden
Aufbau:
int
sub
c5
c4
c3
c2
c1
bit7
bit 7:
bit 6:
bit 5-0:
int:
sub:
c5-c0:
c0
bit0
Ist dieses Bit gesetzt, werden Modul-interne Daten geschickt
Ist dieses Bit gesetzt, folgt dem Adress-Byte ein Sub-Adress-Byte
Anzahl der Sub-Adress-Byte, die geschrieben oder gelesen werden
(binär, c5=msb, c0=lsb)
Das zweite Steuerbyte legt die Anzahl der Datenbyte fest, die geschrieben oder gelesen werden:
d7
d6
d5
d4
d3
bit7
d2
d1
d0
bit0
Eine typische Bytefolge zum Schreiben eines Datenworts in ein I²C-EEPROM (z.B. 24LC64) sieht dann so
aus:
2
01000001
00000001
10100000
00000000
01010101
Steuerbyte 1
Steuerbyte 2
Adress-Byte
Sub-Adresse
Datum
www.polygon-online.com
Polygon
USB-I2C
Industrie-Automation
Die Steuerbyte im Beispiel besagen, dass der Adresse (I²C-Adresse des 24LC64-Bausteins) 1 Sub-Adresse
(die EEPROM Speicherstelle) und 1 Datenbyte folgen. Beim Schreiben auf die I²C-Schnittstelle sind bis auf die
Steuerbyte alle folgenden Byte gemäß der I²C-Spezifikation zu behandeln - mit einer Ausnahme: werden vor
dem Lesen aus einem I²C-Baustein zuerst Daten geschrieben (Sub-Adresse, Parameter, etc.), dann folgt
üblicherweise eine Wiederholung der I²C-Adresse mit gesetztem Schreib-/Lesebit. Dies entfällt hier; stattdessen
wird in der I²C-Adresse das Schreib-/Lesebit von vornherein gesetzt. Im folgenden Beispiel werden 8 Byte ab
der EEPROM-Speicherstelle 10h gelesen:
01000001
00001000
10100001
00010000
...
Steuerbyte 1
Steuerbyte 2
Adress-Byte
Sub-Adresse
Daten
Es werden also 4 Byte dem Modul übergeben und 8 Byte vom Modul zurückgegeben (+ 1 Statusbyte, s.u.).
Die Kommunikation mit einem I²C-Baustein wird durch ein Statusbyte abgeschlossen, das das Modul dem
USB schickt: Ist es Null, liegt kein Fehler bei der I²C-Kommunikation vor; andernfalls wird ein Wert ungleich
Null (in der Regel ‘1’) gesendet.
Modul-interne Kommunikation
Um einen Parameter ins USB-Modul zu schreiben, folgen den Steuerbyte die Adresse des Parameters und der
Parameterwert; also zum Beispiel:
10000000
00000001
01111110
00001110
Steuerbyte 1
Steuerbyte 2
Adress-Byte
Parameter
Wie bei der I²C-Kommunikation ist auch hier im Adress-Byte das letzte Bit (bit 0) ein Schreib-Lese-Schalter:
ist es auf ‘1’ gesetzt, dann werden Parameter gelesen und auf die USB-Schnittstelle geleitet, ist es ‘0’, dann
werden die Daten, die über die USB-Schnittstelle kommen, in das Modul geschrieben.
Um einen Parameter zu lesen, wird also die Bytefolge
10000000
00000001
01111111
Steuerbyte 1
Steuerbyte 2
Adress-Byte
auf die USB-Schnittstelle geschrieben. Anschließend kann hier ein Byte abgeholt werden.
Im USB-Modul sind z.Zt. nur folgende Parameter wirksam:
Adresse: 3F (0111111r)
Bedeutung: I²C-Periode
Wertebereich: 1 ... 254
Einem Wert von 7 (00000111) für die I²C-Periode entspricht eine I²C-Taktrate von ca. 100 kHz; je höher der
Wert, desto niedriger die Taktrate: 35 (00100011) liefert eine Taktrate von 20 kHz.
Adresse: 3E (0111110r)
Bedeutung: Echo
Wertebereich: 0 ... 255
Ist der Parameter Echo ungleich Null, werden alle von der USB-Schnittstelle kommenden Zeichen (Byte) als
Echo auf die USB-Schnittstelle zurückgeschrieben. Dies dient zur Kontrolle einer korrekten Übertragung an
das angeschlossene USB-Modul. Ist der Parameter-Wert gleich Null, wird dieses Echo unterdrückt.
Achtung:
Da der Parameter-Adresse das Schreib-/Lese-Bit angehängt wird, verschieben sich die Adressen
um ein Bit: aus 3F wird 7E beim Schreiben und 7F beim Lesen!
www.polygon-online.com
3
Polygon
USB-I2C
Industrie-Automation
Abmessungen
43
51
20
Polygon
Ingenieur-Büro für Industrieautomation
Dipl.-Phys. Detlef Mahr
Basler Str. 103
D-79100 Freiburg
tel +49 761 4001093
fax +49 761 4001094
email: [email protected]
www.polygon-online.com
4
www.polygon-online.com