USB Interface


COMPUTER
USB-Interface
Experimente mit dem Universal Serial Bus
Von Burkhard Kainka
Das Thema USB ist in aller Munde. Diese neue serielle Schnittstelle hat
die Chance, viele der bisherigen PC-Schnittstellen langfristig abzulösen.
Deshalb wird sich auch Elektor mit dem Thema beschäftigen.
Vor der Praxis aber erst einige
wenige Grundlagen zu Universal
Serial Bus. In der USB-Version 1.1
gibt es Lowspeed-Geräte mit 1,5
Mb/s und Fullspeed-Geräte mit 12
Mb/s. Bereits die geringere Übertra-
gungsgeschwindigkeit überragt die
möglichen Baudraten an der seriel-
len Schnittstelle um ein Vielfaches.
Bisher kam es oft zu der unangeneh-
men Situation, dass alle Schnittstel-
len des PC bereits belegt waren. Der
USB bringt hier den Vorteil, dass mit
dem Anschluss eines zusätzlichen
Busverteilers (Hub) wieder vier neue
Ports freistehen. Insgesamt können
bis zu 127 Geräte angeschlossen
werden.
Der USB-Anschluss liefert gleich
auch die Betriebsspannung für klei-
nere Geräte. Bis zu 100 mA können
ohne weiteres entnommen werden.
Mit einer speziellen Anmeldung des
Bedarfs dürfen es auch 500 mA sein.
Typische Laboranwendungen kom-
men oft mit wesentlich weniger aus.
Der Wegfall eines zusätzlichen Ver-
sorgungskabels pro Gerät hilft im
Kampf gegen den allgemeinen
Kabelsalat.
USB-Geräte können grundsätzlich
im laufenden Betrieb angeschlossen
und getrennt werden. Das Betriebs-
system lädt automatisch den erfor-
derlichen Treiber. Diese erweiterte
Plug-And-Play-Fähigkeit erleichtert
den Umgang mit mehreren Geräten
erheblich. Ein neu angeschlossenes
COMPUTER
Gerät erhält automatisch eine Bus- 6 MHz
RESONATOR
R/CEXT
Nummer (Enumeration). Das
CY7C63001
Betriebssystem liest vorher einige
Informationen aus dem Gerät und
lädt automatisch den passenden
INSTANT-ON RAM 8-bit
OSC
Treiber.
NOW TM 128 Byte Timer
Jedes USB-Gerät ist daher von vorn-
herein wesentlich intelligenter als
EPROM RAM
ein Gerät an der RS232-Schnitte-
2K/4K Byte
128 Byte
stelle. Es muss sich dem Betriebssy-
Power
stem durch eine Reihe von Beschrei-
on
Reset
Interupt USB PORT PORT
bungstabellen (Deskriptoren) zu
Controller Engine 0 1
erkennen geben, so dass der richtige
Watch
Dog
Treiber ausgewählt werden kann.
Timer
Beim ersten Anschluss verlangt das
System nach einer Diskette mit dem
D+, D- P0.0 - P0.7 P1.0 - P1.3
Treiber. Bei allen folgenden Neuan-
VCC / VSS
000079 - 12
schlüssen wird der Treiber automa-
tisch geladen, so dass der Anwen-
Bild 1. Blockschaltbild des CY7C63001
der nicht mehr eingreifen muss.
Trennt man das Gerät wieder vom
PC, dann wird der Treiber automa-
tisch aus dem Speicher entfernt. zessor ein OTP-ROM für das Leitungen herausgeführt sind, sowie RAM
Die Anwendung des USB ist derzeit Betriebsprogramm (Firmware), zwei und Timer.
leider auf PCs mit dem Betriebssy- Ports, von denen insgesamt zwölf Das hier vorgestellte USB-Interface basiert
stem Windows 98 eingeschränkt.
Unter Windows 95 ist USB zwar ab
der Version SR2 prinzipiell möglich,
5V
jedoch wird nicht die volle Zuverläs-
sigkeit erreicht. Für die Arbeit mit
dem USB-Interface wird daher Win- R1 R2 R3
C1
R4
IC2
dows 98 empfohlen. Windows NT4
8
100n
unterstützt den USB überhaupt
71
TH DQ
nicht, erst NT5 und Windows 2000.
62
CLK
TL R5
S1
D1 D2
5 3
C2
Allerdings ist die zu diesem Projekt
TC RST
gehörende Software nicht unter Win-
100n
4
dows 2000 getestet.
K2
DS1620
12
JP1 JP2 VCC
1 10
P0.0 XI
X1
Die Schaltung
2
P0.1
K3
K1
3
IC1
P0.2
USB Type B
1 4 11
Das USB-Interface basiert auf dem P0.3 XO
6MHz
20 1
P0.4
Mikrocontroller CY7C63000 von
19 13 2
P0.5 D 
CY7
Cypress. Dieser Controller wurde in
18
P0.6
C63001
3 4
17 14
erster Linie für kleine USB-Geräte
P0.7 D +
A CP
5
P1.0
wie Mäuse und Joystickports ent-
16 9
P1.1 CEXT
wickelt und enthält eine vollständige
6
P1.2
USB-Engine für den Lowspeed-USB. 15
P1.3
10 VSS VPP
Die beiden Datenleitungen D+ und
7 8
D- werden direkt am Controller
angeschlossen. Bild 1 zeigt das 000079 - 11
Blockschaltbild des ICs. Der Control-
ler enthält neben einem RISC-Pro-
Bild 2. Vollständiges Schaltbild des USB-Interface mit Thermosensor.
Anzeige
10k
470
&!
270
&!
47
&!
1k5
COMPUTER
1
Stückliste
000079-1 H2
R4 H5
Widerstände:
+
K1
R1 = 470 &!
0
R2 = 270 &!
R3 = 10 k
C1
K3
R4 = 47 &!
R5 = 1k5
X1
JP2
Kondensatoren:
C1,C2 = 100 n
C2
R1
R2
D1 D2
R3
Halbleiter:
H4
JP1
S1
D1 = LED rot
D2 = LED grün (low effectivity)
Bild 4. Bildschirmdarstellung der
IC1 = CY7C63001ACP (EPS
originalen Cypress-Demo.
000079-41)
IC2 = DS1620 (Dallas)
Außerdem:
JP1,JP2 = 2-polige Jumper
K1 = 10-polige Platinenanschluss-
klemme (oder 2Å"5)
K2 = Lötnägel
K3 = USB-Platinenverbinder Typ B
(Farnell 153-503)
S1 = Drucktaster 1Å"an
X1 = Keramischer Resonator 6
MHz (Murata CSA6.00MG bei
Farnell 295-292 oder Newport
ZTA6.00MT)
Gehäuse: 61Å"22Å"80 mm3 (Conrad
Bild 5. Das Programm erlaubt den
522848)
Zugriff auf alle Portfunktionen des
Diskette EPS 000079-11
Bild 3. Auf dieser Platine wird das USB-Interface
Controllers und zeigt auch die
Platine EPS 000079-1
aufgebaut.
Temperatur an.
auf einer Applikation von Cypress. Mit dem dung funktionierten allerdings die Die beiden Busleitungen D+ und D-
Starterkit CY3640 hat Cypress sein USB-Ther- Portzugriffe nicht vollständig. Die sind auf einen USB-Verbinder Type
mometer herausgegeben. Das Kit diente in Firmware wurde daher modifiziert B geführt. Wer einen solchen Ver-
erster Linie zum Kennenlernen des Prozes- und erhielt zusätzliche Funktiona- binder nicht auftreiben kann, darf
sors und der Schaltungstechnik. Inzwischen litäten. auch das USB-Kabel direkt auf der
ist das Starterkit in dieser Ausführung nicht Bild 2 zeigt die Schaltung. Die Tem- Platine verlöten. Das USB-Interface
mehr lieferbar, lebt aber in diesem Elektor- peratur misst ein Dallas-Chip erhält seine Betriebsspannung (+5
Projekt weiter. Man kann die ersten Erfah- DS1620, der insgesamt drei Portlei- V, Masse) über den Bus. Die zweite
rungen mit dem USB sammeln und das USB- tungen (P0.0...P0.2) belegt. Die rest- (rote) LED D1 - hier sollte ein ener-
Interface für viele unterschiedliche Zwecke lichen neun Leitungen (P0.3...P0.7, giesparender Typ eingesetzt wer-
ernsthaft einsetzen. Das USB-Interface P1.0...P1.3) sind für allgemeine den - signalisiert das Vorhanden-
besitzt folgende Funktionen: Anwendungen auf die Klemmver- sein der Betriebsspannung. Sie
binder-Leiste K1 geführt. Zusätzlich kann auch an den Lötnägeln (0, +)
 Messung der Temperatur kann eine grüne LED (kein Low-cur- für weitere Applikationen verwen-
 Abfrage eines Tasters rent-Typ!) über den Jumper JP1 an det werden, allerdings sorgt der 47-
 Einstellung der Helligkeit einer LED den Portanschluss P13 gelegt wer- &!-Widerstand R4 dafür, dass auch
 Insgesamt neun frei zugängliche I/O-Port- den. Diese LED zeigt die erfolgreiche im Kurzschlussfall nicht mehr als
pins Enumeration und kann in 16 Stufen die erlaubten 100 mA aus dem USB-
in der Helligkeit eingestellt werden. Anschluss fließen.
Das USB-Interface ist voll kompatibel zur Der Taster S1 ist über Jumper JP2 Der Controller wird von einem kera-
ursprünglichen Thermometer-Applikation von mit dem Port P1.2 verbunden. Der mischen Resonator mit 6 MHz und
Cypress. Es können daher alle Beispielpro- Taster toggelt ein internes Register zwei (nicht drei!) Anschlüssen
gramme und der Thermometer-Treiber einge- des Programms, das über den USB getaktet. Die nötigen Kondensatoren
setzt werden. In der ursprünglichen Anwen- abgefragt werden kann. sind im Controller schon integriert.
H1
IC2
IC1
R5
H3
000079-1
(C) ELEKTOR
COMPUTER
Aufbau und Test
Infos im Netz
Der Aufbau der kleinen Platine in Bild 3
Microsoft VB5
sollte keinerlei Probleme hervorrufen. Für
www.microsoft.com/msdownload/vbcce.htm
beide ICs dürfen Fassungen verwendet wer-
den. Klemme 10 an K1 ist bei der im EPS-Ser-
Cypress Controller CY7C63001ACP
vice lieferbaren Platine nicht verbunden,
http://www.cypress.com/cypress/prodgate/usb/cy7c63001.html
man kann (wenn gewünscht) den Anschluss
auf der Platinenunterseite mit einem kurzen
Dallas Temperatursensor
Draht an Masse oder +5 V legen. Im hier
http://www.dalsemi.com/datasheets/pdfs/1620.pdf
abgedruckten Layout führt Klemme 10 Mas-
Listing 1. Das Modul USB1.BAS mit Deklarationen
Attribute VB_Name =  Module1
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type
Declare Function CreateFile Lib  kernel32 Alias  CreateFileA
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long,
ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES,
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long,
ByVal hTemplateFile As Long) As Long
Declare Function DeviceIoControl Lib  kernel32 (ByVal hDevice As Long,
ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize
As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long,
lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long
Declare Function CloseHandle Lib  kernel32 (ByVal hObject As Long) As Long
Public Security As SECURITY_ATTRIBUTES
Public gOverlapped As OVERLAPPED
Public hgDrvrHnd As Long
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_WRITE = &H2
Public Const FILE_SHARE_READ = &H1
Public Const OPEN_EXISTING = &H3
Anzeige
COMPUTER
Listing 2. Zugriff auf alle Ports und Funktionen
Dim sFileName As String USB_IO
Dim htemp As Long End Sub
Dim lIn As Long, lInSize As Long, lOut As Long, lOut-
Size As Long, lSize As Long Private Sub HScroll1_Change()
Dim lTemp As Long Wert = HScroll1.Value * 8 + 7
Sub USB_IO() WrRAM 46, Wert
sFileName =  \\.\Thermometer_0 Label4.Caption = Str$(Wert)
hgDrvrHnd = CreateFile(sFileName, GENERIC_WRITE Or End Sub
GENERIC_READ, FILE_SHARE_WRITE Or FILE_SHARE_READ,
Security, OPEN_EXISTING, 0, 0) Private Sub HScroll2_Change()
lTemp = DeviceIoControl(hgDrvrHnd, 4&, lIn, lInSize, WrRAM 47, HScroll2.Value
lOut, lOutSize, lSize, gOverlapped) Label5.Caption = HScroll2.Value
htemp = CloseHandle(hgDrvrHnd) End Sub
End Sub
Private Sub HScroll3_Change()
Sub Brightness(Level) Brightness HScroll3.Value
lIn = Level * 256 + 14 Label6 = HScroll3.Value
lInSize = 2 End Sub
lOutSize = 1
USB_IO Private Sub Timer1_Timer()
End Sub lIn = 11
lInSize = 1
Function RdPort(Port) As Integer lOutSize = 3
lIn = Port * 256 + 20 USB_IO
lInSize = 2 Temp = ((lOut \ 256) And 255) / 2
lOutSize = 2 Minus = (lOut \ 65536) And 255
USB_IO If Minus > 0 Then Temp = Temp * -1
RdPort = (lOut / 256) And 255 Button = (lOut \ 16777216) And 255
End Function Label7.Caption = Str$(Temp)
Label8.Caption = Str$(Button)
Sub WrRAM(Adresse, Wert) Label9.Caption = Str$(RdPort(0))
lIn = 65536 * Wert + Adresse * 256 + 23 Label10.Caption = Str$((RdPort(1)) And 15)
lInSize = 3 End Sub
lOutSize = 1
sepotenzial. Die USB-Platinenbuchse nimmt Wenn alles fertig aufgebaut und kein Interface mit einem USB-Kabel vom
über die Kabelabschirmung Kontakt mit offensichtlicher Bestückungsfehler Typ A-B an den PC an. Nach einem
Masse auf, die eigentliche Masse (das 0-V- zu finden ist, kommt der große kurzen Moment erkennt Windows,
Potenzial) ist Pin 4 der Buchse. Moment. Schließen Sie das USB- dass eine neue Hardware ange-
15h: Write Port
Funktionen
lIn: Wert (0...255), Port (0,1), 15h (Länge: 3 Bytes)
iOut: Status (Länge: 1 Byte)
0Bh: Read Thermometer
lIn: 0Bh (Länge: 1 Byte)
16h: Read RAM
iOut: Button, Vorzeichen, Temp, Status (Länge: 4 Bytes)
lIn: Adresse (0...255), 16h (Länge: 2 Bytes)
iOut: Wert, Status (Länge: 2 Bytes)
0Eh: Set LED Brightness
lIn: Helligkeit (0...15), 0Eh (Länge: 2 Bytes)
17h: Write RAM
iOut: Status (Länge: 1 Byte)
lIn: Wert (0...255), Adresse (0...255), 17h (Länge: 3 Bytes)
iOut: Status (Länge: 1 Byte)
14h: Read Port
lIn: Port (0,1), 14h (Länge: 2 Bytes)
18h: Read ROM
iOut: Wert, Status (Länge: 2 Bytes)
lIn: Index, Adresse (0...255), 18h (Länge: 3 Bytes)
iOut: Wert, Status (Länge: 2 Bytes)
COMPUTER
Die Format Datei USBElektor.FRM (Listing 2)
Diskette EPS 000079-11 erlaubt den Zugriff auf alle Portfunktionen des
Controllers. Zusätzlich sollten alle ursprüngli-
CypressSemiconductorsCYPRESS.INF Info zur Installation der USB-Treiber
chen Funktionen des Thermometers erhalten
Thermometer.exe Cypress-Demosoftware
bleiben. Zur Ansteuerung des Treibers
USB_20e.ASM Assembler für Controller
benötigt man einige Informationen, die im fol-
Usb_20e.hex HEX-Datei für Controller
genden erläutert werden. Dieses Programm
Usb_20e.lst Quellkode für Controller
erzeugt eine Monitordarstellung wie in Bild 5.
USBTherm.sys USB-Treiber
Beim Aufruf des Treibers mit DeviceIoControll
USBelektor.vbp Visua Basic-Projekt
übergibt man eine Treiber-Funktionsnummer,
USBelektor.frm Visual Basic Format-Datei
einen Eingangspuffer lIn und einen Aus-
usb1.bas Visual Basic Modul
copyright.txt Copyright-Hinweise gangspuffer lOut. Während die Treiber-Funk-
contetns.txt Inhalt der Diskette
tionsnummer immer 4 ist, wird die eigentli-
che Aktion mit einem Steuerbyte in lIn aus-
gewählt. Der Treiber liefert je nach Funktion
zwei bis vier Bytes zurück. Das niederwer-
tigste Byte enthält immer eine Statusinfor-
Programmierung in
schlossen wurde. Es erscheint ein mation zum Erfolg des Zugriffs. Neben dem
Fenster mit der Aufforderung, eine Auslesen des Thermometers gibt es spezielle
VisualBasic
Diskette mit dem passenden Treiber Funktionen zum Einstellen der LED-Helligkeit
einzulegen. Kommen Sie dem nach Ein Interface ist nur dann richtig und für Zugriffe auf Speicher und Ports des
und legen Sie die Diskette mit der interessant, wenn man es auch mit Controllers. All dies ist im Kasten Funktionen
Bezeichnung EPS000079-11 ins Lauf- eigenen Programmen ansteuern aufgelistet.
werk A ein. Das System findet hier kann. Der eigene Zugang auf das Die Funktion Write Port funktioniert mit dem
die Datei CypressSemiconductorsCY- Gerät gelingt über ein kleines vorhandenen Treiber nur zum Teil. Es wurde
PRESS.INF zur Beschreibung des VisualBasic-Programm. Verwendet daher ein Weg gesucht, bei unverändertem
Geräts und des Treibers. Es lädt dar- wurde VB5CCE, das von Microsoft Treiber und nur durch Änderungen an der
aufhin den eigentlichen Treiber kostenlos zum Download zur Verfü- Firmware des Controllers alle Portausgaben
USBTherm.sys Sobald dieser Vor- gung gestellt wird und voll funkti- zu ermöglichen. Die Lösung fand sich in der
gang abgeschlossen ist, wird das onsfähig, aber nicht in der Lage ist, Verwendung des WriteRAM-Kommandos.
Gerät enumeriert, also am System ausführbare Stand-alone-Applikatio- Zwei zusätzliche RAM-Variablen wurden defi-
angemeldet. Nun leuchtet nicht nur nen zu erzeugen. niert:
die rote LED, sondern (wenn JP1 Nach der Installation des Programm-
gesteckt ist) auch die grüne auf. pakets öffnet man das Projekt in Port0-Ausgaben: 2Eh
Die auf der Diskette enthaltene Laufwerk A, selektiert und öffnet Port1-Ausgaben: 2Fh
Demosoftware Thermometer.exe USBelektor.VBP. Das Projekt umfasst
von Cypress realisiert ein Thermo- das Modul USB1.BAS (siehe Kasten) Nun müssen die Portdaten direkt in
meter mit grafischer Anzeige des mit einigen Deklarationen und die bestimmte Speicheradressen im RAM des
Temperaturverlaufs. Der Anwender Format-Datei USBElektor.FRM, die Controllers geschrieben werden. Die Firm-
kann über den Taster auf dem nicht nur für die grafische Darstel- ware aktualisiert dann die Portausgänge. Das
Board zwischen der Anzeige in lung auf dem Monitor, sondern auch Betriebsprogramm befindet sich übrigens in
Grad Celsius und Fahrenheit für die richtige Applikation (Kommu- der Datei USB_20e.asm auf der Diskette.
umschalten, wenn JP2 gesetzt ist. nikation mit dem Cypress-Controller, (000079)rg
Außerdem lässt sich die Helligkeit Verarbeitung der Daten) verantwort-
der grünen LED verändern. Der lich zeichnet. Das Programm startet
Controller enthält dazu einen 4-Bit- durch einen Druck auf das RUN-
D/A-Wandler zur Einstellung der Menü. Literatur:
Stromsenke an den Ausgängen des Für Zugriffe auf SYS-Treiber benötigt
Ports 1. Die Software erlaubt aber man die Windows-Funktionen Crea- B.Kainka
nur die Einstellung an Port P1.3. teFile, CloseHandle und DeviceIo- Messen, Steuern, Regeln mit USB
Die Monitordarstellung des Ther- Control. Sie werden hier im Modul Franzis-Verlag
mometers zeigt Bild 4. USB1.BAS deklariert. erscheint Herbst 2000
Anzeige


Wyszukiwarka

Podobne podstrony:
VAG Tacho USB interface info
1 KROK Instalacja interfejsu BMW USB i INPY5 0
Instrukcja interfejs Renault USB
Uniwersalny modu‡ interfejsowy USB
04b USB Audio Interface
Programowy interfejs USB w AVR
Implementacja klasy HID interfejsu USB w STM32
USB Uniwersalny interfejs szeregowy komusb
Instrukcja instalacji interfejsu ELM327 USB
QART Serwis s c Pamięci flash z interfejsem USB USB 2 0
design user interface?ABE09F
PS4 ZB4 501 UM3 UM4 Interface Converter h1371g
Konwerter USB na podczerwień
CDRLab pl Hiren s Boot USB
Instrukcja obsługi Przenośna uniwersalna ładowarka USB Nokia DC 18
02 Jądro komórkowe w interfazie Cykl komórkowy
Interfejs FMS(1)

więcej podobnych podstron