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