Bei dem Einsatz von Computer Peripherie aller Art für den PC ist der “universal serial bus” (USB) als Schnittstelle längst nicht mehr wegzudenken. Er erleichtert dem Anwender die Installation neuer Geräte wie z. B. Scanner, Videokameras, Druckern … und ist gegenüber den bisher bekannten seriellen Bus-Systemen ein Kandidat mit einer sehr hohen Datenübertragungsgeschwindigkeit.
All diese Neuerungen haben aber auch eine Schattenseite. Sehr einfache Interfaces und Anschlussmöglichkeiten von kleinen Geräten sind nicht mehr möglich. Eine Verbindung mit einem USB Gerät herzustellen ist komplex und kann nur mit Hilfe von speziellen Interfacebausteinen und speziellen Treibern bewältigt werden. Daher möchte ich in dieser Arbeit eine Interfaceplatine vorstellen, mit deren Hilfe es möglich ist, eine einfache Kommunikation mit dem PC über USB herzustellen, um z. B. Messwerte zu übertragen. Ein Schwerpunkt meiner Arbeit ist die Abänderung eines Treibers für eigene USB Geräte, die Ansteuerung unter Windows mit C++ sowie ein Softwareinterface auf Basis der DLL Technologie, um einen Zugriff mit JAVA-Programmen auf den USB zu ermöglichen.
Inhaltsverzeichnis
1. Einleitung
2. Einführung in den USB
2.1. Grundlegendes über den USB
2.2. Die Datenübertragung
2.2.1. Transferarten
2.2.2. BUS Topologie
2.2.3. Kommunikationsmodell und Endpoints
2.2.4. Enumeration/Renumeration
3. Verschiedene USB-Host-Controller
3.1. Gegenüberstellung unterschiedlicher Controller
3.2. Der AN2131
3.3. Ein einfaches Programmbeispiel
4. Ein EZUSB-Interface mit EEPROM
4.1. Grundlegendes
4.2. Aufbau und Funktion
4.2.1. Die Ports
4.2.2. Das EEPROM
5. Die EZ-USB Programmierung
5.1. Programmiertools und Vorgehensweise
5.2. Eine Abfrage des IO-Ports in C++
5.3. Setzen des IO-Ports C ++
5.4. Beispiel eines Datentransfers vom AN2131 zum Windows-PC
5.5. Aufspielen eigener Firmware auf den AN2131 mit einer C++Funktion
5.5.1. Beschreibung und Vorteile
6. USB - Treiberprogrammierung
6.1. Grundlegendes
6.2. Die Vendor ID
6.3. Das Driver - Development - Kit
6.4. Die Treiberdateien *.INF und *.SYS
6.5. Treiber generieren
6.6. eventuell auftretende Probleme
7. EZUSB Programmierung in JAVA
7.1. Grundlegende Probleme mit dem USB in Java
7.2. Die Wrapper Klassen
7.3. Eine DLL für Java Anwendungen
7.4. Ein Programmbeispiel
8. Literaturverzeichnis
9. Bildnachweis
1. Einleitung
Bei dem Einsatz von Computer-Peripherie aller Art für den PC ist der “universal serial bus” (USB) als Schnittstelle längst nicht mehr wegzudenken Er erleichtert dem Anwender die Installation neuer Geräte wie z.B. Scanner, Videokameras, Druckern und ist gegenüber den bisher bekannten seriellen Bus-Systemen ein Kandidat mit einer sehr hohen Datenübertragungsgeschwindigkeit. All diese Neuerungen haben aber auch eine Schattenseite. Sehr einfache Interfaces und Anschlussmöglichkeiten von kleinen Geräten sind nicht mehr möglich. Eine Verbindung mit einem USB Gerät herzustellen ist komplex und kann nur mit Hilfe von speziellen Interfacebausteinen und speziellen Treibern bewältigt werden.
Daher möchte ich in dieser Arbeit eine Interfaceplatine vorstellen, mit deren Hilfe es möglich ist, eine einfache Kommunikation mit dem PC über USB herzustellen, um z.B.
Messwerte zu übertragen. Ein Schwerpunkt meiner Arbeit ist die Abänderung eines Treibers für eigene USB Geräte, die Ansteuerung unter Windows mit C++ sowie ein Softwareinterface auf Basis der DLL Technologie, um einen Zugriff mit JAVA-Programmen auf den USB zu ermöglichen.
2. Einführung in den USB
2.1. Grundlegendes über den USB
Der USB (Universal Serial Bus) ist ein serieller Bus.
Daten werden wie bei der RS232 Schnittstelle nacheinander übertragen.
Im Unterschied zum USB kann die serielle Schnittstelle nur 1 Gerät verwalten. Der USB verwaltet bis zu 127 Geräte. Jedes angeschlossene Gerät hat eine Adresse und kann dadurch gezielt angesprochen werden.
Der USB ist mit dem Begriff „Plug and Play“ eng in einen Kontext zu bringen. Geräte können während der Laufzeit des Computers angeschlossen oder entfernt werden. Das entsprechende Betriebssystem erkennt das jeweilige Gerät an seiner vom Hersteller vergebenen Vendor / Geräte ID und lädt automatisch den entsprechenden Treiber oder führt ggf. eine Treiberinstallation durch (s. Kap. 6.2).
2.2. Die Datenübertragung
Alle Aktvitäten gehen bei der Datenübertragung vom PC aus. Daten werden in kurzen Paketen (8 bis 256 Byte) versendet und empfangen.
Der gesamte Datenverkehr hat einen Rahmen von einer Millisekunde. Innerhalb eines Rahmens ist es möglich, nacheinander mehrere Geräte zu verarbeiten. Dabei können Lowspeed- und Fullspeed- Pakete zusammen vorkommen. Werden mehrere Geräte angesprochen, sorgt ein Hub für die entsprechende Weiterleitung der Daten. Er verhindert auch, dass Fullspeed-Signale an Lowspeed- Geräte weitergeleitet werden.
Abbildung in dieser Leseprobe nicht enthalten
Abb.1 USB-Datenpakete
Die Datenrate einer Low-Speed-Verbindung liegt bei 1,5Mb/s, die eines High-Speed Signals bei 12Mb/s. Diese Geschwindigkeiten werden vom Master vorgegeben. Die jeweiligen Geräte empfangen durch Synchronisation den für sie bestimmten Datenstrom. Es gibt Verfahren, die verhindern, dass die Synchronisierung verloren geht.
All diese Vorgänge werden allein von der jeweiligen Hardware des USB-Chips übernommen.
Abbildung in dieser Leseprobe nicht enthalten
Abb.2 Datentransfer
2.2.1. Tranferarten
USB-Geräte können auf vier unterschiedliche Arten mit dem PC Daten austauschen (vgl.[2] ).
1. Control-Transfer: Zur Steuerung der Hardware werden Control-Requests verwendet. Sie arbeiten mit hoher Priorität und mit automatischer Fehlerüberwachung. Die Übertragungsrate ist hoch, da bis zu 64 Bytes in einem Request übertragen werden können.
2. Interrupt-Transfer: Von Geräten verwendet, die periodisch kleine Mengen an Daten liefern, wie z.B. Mäuse und Tastaturen. Dies geschieht dadurch, dass das Gerät periodisch, etwa alle 10 ms, nach neuen Daten fragt. Im Allgemeinen werden bis zu 8 Bytes übertragen.
3. Bulk-Transfer: Für größere Datenmengen, die eine Fehlerüberwachung benötigen, die aber nicht zeitkritisch sind. Beispiele sind Drucker und Scanner.
4. Isochronous-Transfer: Große Datenmengen mit einer definierten Datenrate, wie z.B. für Soundkarten. Es wird eine bestimmte Datenrate garantiert. Fehlerkorrektur findet nicht statt, da einzelne Übertragungsfehler weniger schlimm sind als Lücken in der Übertragung.
Für Anwendungen im Bereich Steuerungs- und Regelungstechnik bietet sich besonders der Control- Transfer an, bei dem hohe Datensicherheit mit hoher Übertragungsgeschwindigkeit gekoppelt werden.
2.2.2. BUS Topologie
Der USB Bus hat die als “Sternverteilung” bekannte Topologie. Den Sternpunkt bildet der USB-Root- Controller. Er ist meistens auf dem Mainboard angebracht. Eine der vielen Anschlussmöglichkeiten, vom Root-Controller ausgehend, zeigt folgende Grafik :
Abbildung in dieser Leseprobe nicht enthalten
Abb.3 Bus-Topologie
2.2.3. Kommunikationsmodell und Endpoints
Den Kern des Kommunikationsmodells bildet der USB Host (z.B. der Root-Controller im PC), der als Master arbeitet. Er verwaltet alle Aktivitäten auf den Datenleitungen, die an dem Port angeschlossen sind. Man nennt diese Form der Kommunikation “Host-Based-Comunication”.
Ablauf der Kommunikation:
- Der Host initialisiert alle 1ms ein SOF (start of a frame).
Mit dieser Information werden Datenpakete von bis zu 255Bytes versendet. Das gesendete Frame enthält auch Daten über:
- Traffic
- Typ der Übertragung
- Bandbreite (von der Peripherie angefordert).
Wenn ein USB Gerät einen Transfer initialisiert, fragt es bei der USB-Systemsoftware auf dem Host (PC) an. Der Host akzeptiert die Übertragung oder lehnt sie ab. Wird der Transfer angenommen (ACK), wird eine Routine mit Handshaking und Startparametern abgearbeitet. Bei einer Ablehnung durch den Host (NAK) wird dies dem USB-Gerät gemeldet, und das Gerät wiederholt seine Anfrage, bis der Host die Daten annimmt und ein ACK zurücksendet.
Endpoints :
Ein zentraler Punkt im USB Kommunikationsmodell ist die Datenübertragung mit Pipes zwischen Host und Peripherie. Diese Pipes können weiter heruntergebrochen werden auf die sog. „small Pipes“. Jede „small Pipe“ benötigt für jeden Datentyp eine noch „kleinere“ „Tiny Pipe“. Jede „Tiny Pipe“, genannt Endpoint, trägt einen einmaligen Datentyp, der für die Kommunikation zwischen dem USBGerät und dem Host erforderlich ist.
Ein Multimedia-USB-Device z.B. hat mehrere parallele Endpoints für:
- Sprache (isochronus Transfer)
- Daten (Bulk Transfer)
- Setup Informationen (Control Transfer).
Der AN2131 Chip hat insgesamt 31 Endpoints zur Verfügung. Siehe[4]
Abbildung in dieser Leseprobe nicht enthalten
Abb.4 Bus-Topologie
2.2.4. Enumeration / Renumeration
Der Prozess des Anmeldens eines USB Gerätes nennt man Enumeration.[7]
Enumeration ist ein Feature der EZ-USB Familie. Der Begriff ist von der Firma Cypress geprägt und versteht das erneute Konfigurieren eines USB-Gerätes während der Laufzeit incl. des Hochladens neuer Firmware auf den Chip.
Abbildung in dieser Leseprobe nicht enthalten
Abb.5 Enumeration / Renumeration
3. Verschiedene USB -Controller
3.1. Gegenüberstellung unterschiedlicher Controller
Es steht eine große Anzahl an USB Bausteinen zur Verfügung. Für jede spezifische Anwendung kann der richtige Baustein hinsichtlich der folgenden generellen Anforderungen ausgewählt werden:
- Kosten
- Komplexität der an den Chip gestellten Aufgaben
- Endpreis des Gerätes
- Anforderungen an den Chip
Nachfolgend sind einige Bausteine von verschiedenen Herstellern und deren Eigenschaften zusammengefasst[3].
Abbildung in dieser Leseprobe nicht enthalten
Abb. 6: verschiedene USB Bausteine
Abbildung in dieser Leseprobe nicht enthalten
Abb. 7 Ausführung USB - Bausteine
[...]
- Quote paper
- Niko Cyris (Author), 2004, USB Programmierung in Java und C++ mit dem EZ USB AN2131 Baustein und Treiberprogrammierung, Munich, GRIN Verlag, https://www.grin.com/document/32918
-
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X.