aus RN-Wissen, der freien Wissensdatenbank
Wechseln zu: Navigation, Suche



USB-Logo
Universal Serial Bus – Der USB-Bus (eigentlich sollte man ja US-Bus sagen) erfreut sich immer mehr steigender Beliebtheit.

Seine wirklich universelle Einsetzbarkeit führte mittlerweile sogar so weit, dass bisherige Standardschnittstellen in neuen PCs oder Notebooks immer mehr verdrängt werden, ja sogar ganz an den Geräten verschwanden.

Grund, auch einen Artikel für diese Schnittstelle zu schreiben. Zunächst beschränke ich mich auf die allgemene Definition. Im Anhang unter "Weblinks" ist sogar ein Link zu meinem fertigen Projekt eines USB-Adapters, welcher gerade für das Roboternetz zugeschitten ist.

Weitere Projekte sind bereits gedanklich am entstehen, z.B. ein USB-ISP Programmer, aber ich bitte um Geduld...

USB-Standards

USB 1.1

  • LowSpeed 1,5 MBit/s für Geräte mit niedriger Bandbreite
z.B. Maus und Tastatur
  • FullSpeed 12 MBit/s für Geräte mit mittlerer Bandbreite
z.B. Modem, LAN, Audio
  • integrierte Stromversorgung bis 500mA je Port, ohne Anmeldung am Host sind höchstens 100 mA vorgesehen
  • Hot-Plug fähig: d.h. Geräte können bei laufendem Betrieb angeschlossen werden.
  • Durch USB-Hubs und entsprechende Kaskadierung können bis zu 127 Geräte angeschlossen werden.
  • Energiemanagement unterstützt Suspend und Resume (Stand-By)
  • Protokolle zur Fehlererkennung und Fehlerbehandlung
  • synchrone und asynchrone Übertragungsarten
  • maximale Kabellänge ca. 5 Meter

USB 2.0

  • HighSpeed 480 MBit/s für Geräte mit Hoher Bandbreite
z.B. für Video, externe Festplatten und CD-Brenner
  • Stecker und Programmierung von USB 2.0 entsprechen dem von USB 1.1

USB Anschlüsse

USB-A

Der USB-A Anschluss wird (meist) an PCs oder USB-Hubs verwendet (Host). Es können mehrere Geräte (Devices) angeschlossen werden.

USB-B

Der USB-B Anschluss wird (meist) für Endgeräte verwendet, es können/sollen keine weiteren Geräte (Devices) angeschlossen werden.

USB mini-B

Der USB mini-B bzw. USB-B mini wird wie der "normale" USB-B Anschluß verwendet. Verwendung vor allem bei Kleingeräten, bei denen aus Platzgründen keine "normale" Buchse Platz findet.


USB (Einbau-) Buchsen

USB-A Buchse

USB Buchse Typ A

Risszeichnung


USB-B Buchse

USB Buchse Typ B

Risszeichnung


USB mini-B Buchse

USB Buchse Typ mini B

Risszeichnung


USB Pinout

USB Pinout
Pin Name Signal
1 VCC (+5V DC max. 500mA/Port)
2 D- (Data minus)
3 D+ (Data plus)
4 GND (Masse)

Anschluss von Mikrocontrollern und Geräten (Interface-ICs und Module)

USB zu seriell Bausteine (USB-UART Wandler)

Diese Bausteine werden für die Kommunikation zwischen PC und Mikrocontroller genommen. Dabei ist es ziemlich egal, welcher Mikrocontroller eingesetzt wird, funktionieren tut alles solange ein Hardware UART (RS232-Schnittstelle) an Bord ist. Software-UART sollte auch gehen, allerdings mit niedrigeren Übertragungsraten.

USB zu seriell Bausteine werden am USB-Bus als "Device" angeschlossen und stellen damit ein Endgerät dar. Man kann damit keine anderen USB-Endgeräte (Drucker, Festplatte, Speicherstick, Kamera, etc.) ansteuern, dazu braucht man einen USB-Host (siehe weiter unten)!

Die Firma FTDI bietet relativ preisgünstige Bausteine (etwa 5€ pro Stück), für den USB an. Diese Bausteine ermöglichen die Kommunikation zwischen PC und Mikrocontroller, indem der physikalisch vorhandene USB-Bus "ausgeblendet" wird und statt dessen eine wesentlich einfachere UART-Kommunikation stattfindet. Dazu wird am PC ein virtueller COM-Port installiert (macht WinXP beim anstecken automatisch) und der Mikrocontroller wird auf die Leitungen RXD/TXD des Wandlerchips angeschlossen. Am PC kann man nun mit einem Terminalprogramm(z.B. HTerm) das virtuelle COM-Port öffnen, und Daten oder Steuerkommandos verschicken. Der Mikrocontroller bekommt diese Daten dann auf die RS232- Schnittstelle (UART), und kann auch zurückantworten. Weder d. Terminalprogramm noch der Mikrocontroller merken, dass die Kommunikation eigentlich über USB läuft. (Was auch gut ist, denn das USB-Protokoll ist ziemlich komplex). Trotzdem kann man die Vorteile von USB (z.B. stabile 5V-Spannungsversorgung bis max 500mA, einfacher Anschluss an alle PC's und Laptops, usw.) nutzen.

Die bekanntesten USB-Seriell Wandlerchips sind folgende:

  • FTDI FT232BL
    FT232BL im TQFP Gehäuse
    Ist schon etwas veraltet, und wurde durch das FT232R ersetzt.
  • FTDI FT232RL
    FT232RL im SSOP Gehäuse
    Ist zur Zeit aktuell, aber sehr schlecht zu löten, da die Pinabstände nur 0.65mm (SSOP28-Gehäuse) betragen. Mit etwas Übung geht es, aber nach Möglichkeit sollte man fertige Module nehmen. Ein Datenblatt findet sich hier
  • SiLabs CP210x

Entsprechende Treiber werden von FTDI kostenfrei zur Verfügung gestellt. Somit kann man sich rein auf die Schaltungsentwicklung konzentieren.

USB-Host Bausteine

USB-Hosts werden für den Anschluss von USB-Endgeräten (Devices) wie

  • externe Festplatten,USB-Sticks
  • Kameras,Webcams,Handys
  • Jostick
  • Drucker
  • Tastatur,Maus
  • WLAN-Stick
  • usw.

an Mikrocontroller verwendet. Dabei muss der Host neben der Spannungsversorgung (5V) auch die Abwicklung des USB-Protokolls beherrschen. Das ist nicht ganz einfach, deshalb gibt es fertige ICs (wie z.B. den VNC1L von FTDI), die diese Funktionalität bereits enthalten. Leider hat der VNC1L ein Gehäuse mit 0.5mm Pinabstand, das sich kaum noch mit der Hand löten lässt und bei zuviel Hitze auch mal den Geist aufgibt. Ziemlich blöd bei einem Preis von 14,65€ pro IC (Reichelt). Besser ist es ein fertiges Modul zu nehmen, wobei diese auch nicht wirklich günstig sind, aber immerhin fertig gelötet, getestet und mit Firmware:

Die Ansteuerung der Module erfolgt mit SPI, UART (RS232) oder beim VDIP1 auch im Parallel-Modus. UART lässt sich am einfachsten programmieren, deshalb sollte man es auch nehmen. Im VNC1L ist ein Firmware enthalten, das einfach über UART gesendete Buchstabenkombinationen ("Befehle") angesprochen wird. Für die Ansteuerung von Festplatten (oder USB-Sticks) sind ziemlich viele Befehle bereits vorhanden (Ordner und Dateien anlegen/löschen/öffnen/schliessen/usw.) und im (englischen) Datenblatt auch gut beschrieben: download. Eine grobe Beschreibung auf Deutsch findet sich auch ab Seite 7 im Datenblatt des Z-USB.

Achtet darauf, dass die Firmware beim Kauf schon aufgespielt ist (dies ist beim VDIP1 und Z-USB definitiv der Fall, beim ST 100 vermutlich auch. Bei mir war auf dem VDIP1 eine veraltete Firmware, der Z-USB hatte eine aktuelle).

Ein nagelneuer VNC1L-Chip hat KEINE aufgespielte Firmware (!!), und muss erst über die serielle Schnittstelle (inkl. Handshake-Leitungen) programmiert werden. Dazu gibt es eine Anleitung bei FTDI, allerdings benötigt man dafür einen FT232-Baustein (siehe oben) und die Leitungen RTS und CTS. Die Programmierung über ein USB-Stick funktioniert nur, wenn auf der VNC1L bereits ein funktionsfähiger Firmware installiert ist!

Persönliche Erfahrungen

Zuerst habe ich mir vor etwa 2 Jahren ein VDIP1 von FTDI gekauft, da ich am meinem Quadrokopter gerne ein paar Daten loggen wollte. Es funktionierte auf Anhieb, einfach ein FT232-Wandlerbaustein (USB <--> UART) angeklemmt, und mit HTerm konnte man sofort kommunizieren. Es unterstützt sogar die parallele Ansteuerung, was ich allerdings nie getestet habe, da es doch ziemlich viele freie Pins des Atmega verbraucht. Als Nachteil hat sich herausgestellt, dass die dünnen Beinchen sich schnell verbiegen und bei mehrfachen an- und abstecken gerne mal brechen. Natürlich genau dann, wenn man es gerade nicht reparieren kann :-)

Nachdem der VDIP1 bei einer Wasserlandung den Geist aufgegeben hat, kam ein Z-USB-Modul von rz-robotics. Es lässt sich mit FT232 und HTerm genauso einfach in Betrieb nehmen (wen wunderts, es ist auch das gleiche IC drauf), macht aber von der Konstruktion her einen deutlich solideren Eindruck. An den Ecken sind Befestigungsbohrungen, die Beinchen sind viel stabiler aber es ist auch etwas größer als der VDIP1. Beim Kauf kann man auswählen, welchen Montagesatz man gerne haben möchte. Nimmt die verschraubte Variante, damit sitzt das Ding bombenfest. Die Ansteuerung ist exakt das gleiche wie beim VDIP1, der Code hat ohne Änderungen problemlos auch mit der Z-USB funktioniert.

Von der STI 100 kann ich leider nicht berichten, den habe ich bisher nur gesehen, aber nicht getestet.

Siehe auch

Weblinks

Darwin.nuernberg 11:27, 21. Apr 2006 (CEST)