USB
Universal Serial Bus.
Serieller Bus, der heutzutage an jedem neuen PC zu finden ist und langsam aber sicher die RS-232- und Parallelport-Anschlüsse ersetzt.
Übertragungsgeschwindigkeiten:
- Low Speed: 1,5 MBit/s (USB 1.1 und 2.0)
- Full Speed: 12 MBit/s (USB 1.1 und 2.0)
- High Speed: 480 MBit/s (nur USB 2.0)
- SuperSpeed: 5 GBit/s (nur USB 3.0)
Die in Datenblättern oder Verpackungen gern verwendete Angabe "USB 2.0 Full Speed" darf man also nicht wörtlich verstehen, das sind trotz USB 2.0 nur 12 Mbit/s.
Zu beachten ist, dass es bei USB im Gegensatz zu RS-232 zwei Arten von Controllern gibt: Host- und Devicecontroller. Host bezeichnet dabei die steuernde Seite und ist z. B. in PCs zu finden; Devices sind die USB-Geräte, z. B. USB-Webcams. Diese Unterscheidung ist ziemlich wichtig, weil die meisten USB-Lösungen für Mikrocontroller USB-Devices darstellen und man deswegen dort weder Webcams noch USB-Speichersticks anschliessen kann. Mit der letzten Ergänzung des Standards (USB On-The-Go) gibt es die begrenzte Möglichkeit, dass Geräte Host-Funktionalität zur Kommunikation mit ausgewählten Peripheriegeräten erhalten.
Benutzt man ein USB-Device am PC, dann braucht man auch noch passende Treiber. Die aktuellen Betriebssysteme bringen meist eine Reihe von Treibern für Standardanwendungen (z. B. USB-Festplatte) mit. Gibt es keinen passenden Standardtreiber, dann muss man eben einen erstellen. Dazu werden bei manchen Chips kostenlose Treiber mitgeliefert, bei anderen muss man sie kaufen oder (aufwendig) selbst erstellen.
[Bearbeiten] Allgemeine Informationen
- USB-Hauptseite Die Homepage des USB Implementers Forum, Inc., creators of USB technology.
- libusb Allgemein ist die Treiberprogrammierung für USB das Hauptproblem. Die plattformübergreifende libusb (Win32-Port (nicht Vista!)) ermöglicht die Kommunikation mit USB-Geräten unter Verwendung eines Universaltreibers. Ein deutschsprachiges Projekt, erstellt von Weichinger Klaus, das libusb verwendet, findet man unter [1] (Programmiersprache C mit MINGW; Dokumentation, Sourcecode und Binärdateien).
- Diplomarbeit von Eik Arnold Viele Informationen über USB (Vergleich mit anderen Bussystemen, Elektrisches Interface, Transferarten, Übersicht über die verschiedenen USB Chips, ...)
- USB in a NutShell Eine kleine Wanderung durch die USB-Spezifikation
- Steuern und Messen mit USB - FT232, 245 und 2232 Das aktuelle Buch zu den USB-Controllern von FTDI. Viele Beispielprogramme in C, zwei Projektbeschreibungen: I2C-Bus mit LM75A und ein Web-Projekt. Bauteilesatz und USB-Modul mit dem FT2232 zum schnellen Einstieg in die Thematik. Buch / Teilesatz über Segor oder dieser Seite erhältlich.
- Universal Serial Bus Eine gute Einführung und detaillierte Beschreibung.
- Buch: Messen, Steuern, Regeln mit USB von B. Kainka.
[Bearbeiten] USB-Hostcontroller
[Bearbeiten] Host-Controller im Mikrocontroller
Es gibt eine erfreuliche Anzahl geeigneter Schaltkreise, nur für den Amateur unschön beschaffbar. Entsprechend der USB-Spezifikation kann jeder Full-Speed-Hostcontroller auch mit Low-Speed arbeiten.
| Hersteller
| IC
| Speed
| Pins
| Ucc/Uio
| CPU
| Takt
| Flash
| RAM
| ADU
| DAU/PWM
| Async
| Sync
| Extras
| Bezug
|
| Fujitsu
| MB96F338U
| Full
| 144
| 3-5 V
| 16bit / 16FX Core
| 4 MHz extern
| 544Kbyte
| 32Kbyte
| 36x10bit
| 20xPWM, 12xOCU
| 8
| 8
| 3xCAN, 2xI²C
| Glyn, EBV
|
| Fujitsu
| MB90F334
| Full
| 120
| 3,3 V
| 16bit / 16LX Core
| 4 MHz extern
| 384Kbyte
| 24Kbyte
| 16x10bit
| 6xPWM, 4xOCU
| 4
| 1
| 3xI²C
| Glyn, EBV
|
| Fujitsu
| MB90F337
| Full
| 64
| 3,3 V
| 16bit / 16LX Core
| 4 MHz extern
| 64Kbyte
| 4Kbyte
| -
| 4xPWM
| 2
| 1
| 1xI²C
| Glyn, EBV
|
| Cypress
| CY7C67300
| Full
| 100
| 3,3 V
| 16bit RISC
| 48 MHz
| 4K x 16bit OTP
| 8K x 16bit
| -
| 1
| 1
| 1
| IDE
|
|
| Atmel
| AT90USB647
| Full
| 64
| 3,3 - 5 V
| AVR
| 16 MHz
| 64 K
| 4 K
| 8 x 10 bit
|
|
|
|
| Farnell ca. 11,42 €
|
| Atmel
| AT32UC3B0128
| Full/OTG
| 64 (40)
| 3,3 V
| AVR32
| 60 MHz
| 128 K
| 32 K
| 8 x 10 bit
| (7+6) x PWM
| 2 (1x full)
| I²C, SPI, SSC
| Kernspannungsregler 1,8 V
| Farnell ca. 6 €
|
| Microchip
| PIC24FJ256GB106
| Full
| 64
| 3,3V/5V
| PIC24
| 16 MHz
| 64 KB
| 16 KB
| 10bit
| -
| -
|
| Spannungsregler
| Farnell ca. 5,70 €
|
| Microchip
| PIC32MX420FxxxH
| Full
| 64
| 3,3V/5V
| MIPS32
| 80 MHz
| ab 32 KB
| 8 - 32 KB
| 16 x 10bit
| -
| 1 mit IRDA
|
| Spannungsregler, JTAG
| Farnell ca. 4,83 €
|
| Philips/NXP
| LPC2388
| Full
| 144
| 3,3V/5V
| ARM7
| 72MHz
| 512KB
| 32KB
| 8 x 10bit
| 1 x 10bit, 6 PWM
| 2 USART, 2 CAN
| SPI, I²C, SSC
| SD/MMC, Ethernet 10 Mbit, Businterface, JTAG
| Digikey ca. 8 €
|
| ST
| STM32F10x
| Full
| 36..144
| 3,3V/5V
| Cortex-M3
| 72MHz
| 512KB
| 64KB
| 21 x 12bit
| 2 x 12bit, 32 PWM
| 5 USART, 1 CAN
| SPI, I²C, SSC
| Siehe Artikel STM32
| Farnell ab ca. 5 €
|
| ST
| STM32F4xx
| Full + Hi
| 64..176
| 3,3V/5V
| Cortex-M4
| 168MHz
| 1024KB
| 192KB
| 24 x 12bit
| 2 x 12bit, 32 PWM
| 6 USART, 2 CAN
| SPI, I²C, SSC
| Siehe Artikel STM32
| Mouser ab ca. 7 €
|
Alle mit „USB OTG“ beworbenen Schaltkreise sind als Host-Controller
und Device-Controller verwendbar. Mikrocontroller mit High-Speed-USB sind selten.
[Bearbeiten] Implementierung in Software auf Atmel AVR
Solche Hostcontroller sind nur für Low-Speed-Geräte geeignet, in der Regel Tastaturen, Mäuse und ggf. Joysticks oder ähnliche HID-Geräte.
Software-Implementierungen auf anderen Mikrocontrollern scheitern wegen zu geringer Taktfrequenzen bzw. Durchsatzraten (speziell interessant wäre MSP430 gewesen), oder – bei leistungsstärkeren Controllern – wegen Sinnlosigkeit durch Verfügbarkeit von Mikrocontrollern mit USB (siehe oben).
[Bearbeiten] Spezielle Schaltkreise
USB-Schaltkreise, die vorzugsweise für den Anschluss an ein „Externes Businterface“ eines Mikrocontrollers oder per SPI vorgesehen sind.
Außerdem gibt es eine Reihe Schaltkreise, die einen PCI-Bus haben. Diese sind für Mikrocontrollerprojekte in der Regel nicht zu gebrauchen.
[Bearbeiten] USB HOST taugliche Stacks
[Bearbeiten] Fertige Module mit einem USB-Host
- VDIP1 von FTDI (UART, SPI und parallel)
- STI 100 von elv (UART und SPI)
- Z-USB von rz-robotics (UART und SPI, kann auch stehend montiert werden)
- USBStickLogger OpenSource-Projekt, Bausatz verfügbar (UART)
[Bearbeiten] Implementierung in Software
- Diverse µCs von Cypress, siehe unten
- TUSBxxxx-Serie von Texas Instruments ebenfalls mit 8051-kompatiblem Mikrocontroller (Beispiel Projekt von Weichinger Klaus (EXPL_DHTML.C Virus ?))
- PIC18F2455/2550/4455/4550/67J50/67J55/87J50/87J55 sowie alle PIC24FXXXGBXXX von Microchip, üppig ausgestattet mit USB, seriellem Port (RS232/SPI), PWM-Ausgängen, A/D-Wandler und vielen IO-Pins
- Freescale
- 69HC908JB8 - 20 Pin DIP . . . MC68HC908JB8 ?
- 69HC908JB16 - Mehr Peripherie u.a. RS232
- 69HC908JG16 - Mit A/D wandler
- 69HC908JW32 - Mehr Speicher, mehr Ports
- LPC2000/3000-Reihe von NXP (LPC2888: High Speed USB 480Mbps)
- C8051F320 & C8051F340 von Silicon Laboratories (USB, UART, SPI, SMBus, 10-Bit-ADC, Komperator, integr. Spannungsregler & Oszillator)
- AT91SAM Familie von Atmel, ARM7-basiert, nicht OTG-fähig
- AVR32 (AT32UC3A/B) Familie von Atmel mit AVR32-Kern ohne MMU für einfachere Firmware, OTG-fähig, auch High-Speed, Externes Businterface, Ethernet. Alle AT32UC3A or -B's haben vorprogrammierten USB Device Firmware Upgrade (DFU) bootloader.[1]
- AT90USB Familie von Atmel.
Alle hier genannten Mikrocontroller haben keinen USB-Host (nur Client)!
Eine Auswahl:
| Hersteller
| IC
| Speed
| Pins
| Ucc/Uio
| CPU Takt
| Quarz
| Flash
| RAM
| ADU
| DAU/PWM
| Async
| Sync
| Extras
| Bezug
|
| Cypress
| AN2131 AN2135
| Full
| 44
| 3,3V/5V
| 8051 24MHz
| 12MHz
| 0
| 4KB
| -
| -
| UART
| I²C
|
| veraltet
|
| Cypress
| CY7C68013A
| High
| 56,100,128
| 3,3V/5V
| 8051 48MHz
| 24MHz Grundton
| 0
| 16KB
| -
| -
| 2 UART (ab 100 Pin)
| I²C
| GPIF (State Machine)
| Digikey ca. 11,28 €, Air Electronics ca. 9 €
|
| Cypress
| CYUSB3014
| Super
| 121 (BGA)
| 1,8V
| ARM9
| ?
| 0
| 256KB?
| -
| -
| 2 UART
| I²C
| GPIF II (State Machine)
| ?
|
| Microchip
| PIC18F2550
| Full
| 28
|
| PIC
| 12MHz
| 16K x 16bit
| 2KB
| 8 x 10bit
|
|
|
|
| Reichelt ca. 7,95 €
|
| Atmel
| AT91SAM7S64
| Full
| 64
| 3,3V/5V
| ARM7 55MHz
| für Bootloader: 18,432MHz
| 64KB
| 16KB
| -
| 4 PWM
| 2 USART
| SPI, I²C, SSC
| größere Chips auch mit Ethernet
| Reichelt ca. 6,25 €
|
| Philips/NXP
| LPC2378
| Full
| 144
| 3,3V/5V
| ARM7 72MHz
| bspw. 12MHz
| 512KB
| 32KB
| 8 x 10bit
| 1 x 10bit, 6 PWM
| 2 USART, 2 CAN
| SPI, I²C, SSC
| SD/MMC, Ethernet 10 Mbit, Businterface
| Digikey ca. 7,85 €
|
| Texas Instruments
| MSP430F55xx
| Full
| bis 80
| 3,3V
| MSP430 25MHz
| bspw. 24MHz
| bis 128KB
| bis 8+2KB
| 8 x 12bit
| PWM
| 2 USART
| SPI, I²C
| verschiedene Ausbaustufen
| TI zurzeit als Muster
|
| ST
| STM32F10x
| Full
| 36..144
| 3,3V/5V
| Cortex-M3
| 72MHz
| 512KB
| 64KB
| 21 x 12bit
| 2 x 12bit, 32 PWM
| 5 USART, 1 CAN
| SPI, I²C, SSC
| Siehe Artikel STM32
| Farnell ab ca. 5 €
|
- Ucc/Uio gibt die maximale Betriebsspannung und die maximale Eingangsspannung an Eingabeports an. 3,3V/3,3V heißt: nicht 5V-verträglich!
- Takt: CPU-Taktfrequenz, bei Microchip ehrlicherweise durch 4 geteilt
- Async: Anzahl und Art der asynchron-seriellen Schnittstellen (also mit Startbit operierend)
- Sync: Anzahl und Art der synchron-seriellen Schnittstellen (also mit einer Taktleitung, also auch I²C)
- SSC: Serielles Interface besonders für Audiochips, verschiedene Namen bei den Mikrocontroller-Herstellern
[Bearbeiten] Via µC ansteuerbare USB-Controller
| IC
| Hersteller
| Host oder Device
| IC-Pins
| Interface
| Beschreibung
| Bezugs-Quelle(n)
| Sonstiges
|
FT232 FT245
| FTDI
| Device
| 28-32
| RS232 parallel 8 bit
| 1 bidirektionale FIFO **
| Reichelt, ab 1,95 €
| libftdi - FTDI (bitbang) software collection von Intra2net (Opensource)
|
| FT232R
| FTDI
| Device
| 28-32
| RS232/Bitbang/CBUS
| 1 bidirektionale FIFO **
| Reichelt, ab 3,15 €
| libftdi - FTDI (bitbang) software collection von Intra2net (Opensource)
|
| FT2232D
| FTDI
| Device
| 48
| RS232 / parallel 8 bit / I2C, SPI, JTAG
| 2 bidirektionale FIFOs **
| csd-electronics Watterott electronic
| libftdi - FTDI (bitbang) software collection von Intra2net (Opensource)
|
| FT2232H
| FTDI
| Device
| 64
| RS232 / (synchron/asynchron) parallel 8 bit / I2C, SPI, JTAG
| 2 bidirektionale FIFOs, HS **
|
| libftdi - FTDI (bitbang) software collection von Intra2net (Opensource)
|
| FT4232H
| FTDI
| Device
| 64
| RS232 / I2C, SPI, JTAG (2 Kanäle)
| 4 bidirektionale FIFOs, HS **
|
| libftdi - FTDI (bitbang) software collection von Intra2net (Opensource)
|
| FT232H
| FTDI
| Device
| 48
| RS232 / (synchron/asynchron) parallel 8 bit /I2C, SPI, JTAG/CBUS
| 1 bidirektionale FIFOs, HS **
| Reichelt, ab 3,20 €
| libftdi - FTDI (bitbang) software collection von Intra2net (Opensource)
|
| PDIUSBD11
| Philips
| Device
|
| I²C
| USB-Device Controller
|
| abgekündigt
|
| PDIUSBD12
| Philips
| Device
| 28
| parallel 8 bit
| 1 bidirektionale FIFO **
| Reichelt, ab 2,65 €
|
|
| MAX3420E
| Maxim
| Device
| 24-32
| SPI
| Fullspeed-Controller, 4 Endpoints
|
|
|
| USBN960x
| National
| Device
| 28
| Datenbus 8 bit, SPI
| Fullspeed-Controller, 7 Endpoints, 3,3-V-Längsregler enthalten
| Reichelt, ab 4,65 €
| Siehe USBN960x, NRND
|
| CP210x
| Silabs
| Device
|
| UART
| USB2.0 kompatibler (arbeitet Fullspeed) UART-USB Umsetzer.
|
| Sehr kompakt, Intel MAC OSX: Forenbeitrag beachten
|
| CP2110
| Silabs
| Device
| 24-28
| UART
| UART-USB ohne Treiber (HID-Klasse)
|
|
|
| CP2112
| Silabs
| Device
| 24
| SMBUS
| SMBUS-USB HID
|
|
|
| PL2303
| Prolific
| Device
| 28
| RS232
| „USB CDC 1.1“-konform
|
| Im Gegensatz zum FT232 sollte kein Treiber erforderlich sein: Von wegen!
|
| OTI-6858
| Ours Technology Inc.
| Device
| 28
| UART
| USB to RS232 Bridge Controller - USB2.0 bis 12MB
|
|
|
| ARK3116T
| Arkmicro
| Device
|
| UART
| USB-to-UART Controller - USB2 bis 3MB)
|
|
|
| TUSB3410
| Texas Instruments
| Device
|
| UART
| USB to Serial Port Controller
| Digi-Key, ca. 5,60 €
| USB 2.0 full Speed, Basis 8052 µC
|
| VNC1L
| Vinculum
| 2x Host
|
|
| Dual USB Host-Controller
| Watterott electronic
| LVProg is an (X11/Qt)application for programming a ROM file into a Vinculum USB host controller from FTDI. (GPL v2)
Siehe auch:
USB-Stick am Mikrocontroller
|
| SL811HST
| Cypress
| 1x beides
| 48
| Datenbus 8 bit
| Controller 1 Port
| Digikey, Air Electronics ca. 8 €
| für OTG viel Außenbeschaltung erforderlich
|
| ISP1160
| Philips/NXP
| 2x Host
| 64
| Datenbus 16 bit
| Host-Controller 2 Ports
| Reichelt, ca. 6,85 €
| für ATmega unzweckmäßig, eher für ARM-Prozessoren
|
Reine FIFO-Schaltkreise sind nicht für benutzerspezifische
Deskriptoren geeignet.
Damit lassen sich nahezu keine klassenspezifische Geräte-Interfaces
realisieren.
Folglich kann man damit bspw. kein HID-Gerät bauen.
NRND = Not recommended for new designs = wird alsbald abgekündigt
UART: Gemeint sind die Signale RxD und TxD sowie Flusskontrolle /RTS und /CTS
RS232: Gemeint ist eine UART mit den 4 Modemsteuersignalen /DTR, /DSR, /DCD und /RI
Tipp: USB-Handy-Datenkabel arbeiten oft mit FT232-ähnlichen Chips!
USB-Transceiver können nur verwendet werden für:
- speziell dafür ausgelegte Mikrocontroller (PIC 18F2455/2550/4455/4550 u.ä.)
- FPGAs (wenn diese nicht selbst geeignete Portpins verfügen)
- V-USB (Software-Anpassungen erforderlich)
Vorteil: Zwischen Transceiver und Mikrocontroller kann eine galvanische Trennstufe angeordnet werden.
Heutzutage ist es besser, einen seriell ansteuerbaren USB-Controller (siehe oben) zu verwenden und dazwischen eine maßgeschneiderte galvanische Trennung.
Daher sind Transceiver heutzutage eher obsolet.
| IC
| Hersteller
| Speed
| IC-Pins
| Interface
| Beschreibung
| Bezugs-Quelle(n)
|
| MAX345xE
| Maxim
| ?
| 14-16
| -
| Transceiver
|
|
| ISP1106
| Philips/NXP
| Low, Full
| 16
| -
| Transceiver
| Reichelt, ca. 1,15 €
|
Herausforderung bei USB ist
- das USB-Signal bidirektional ist
- USB keine Steuerleitungen hat, man kann nur aus der vollständigen Dekodierung der Daten erfahren, in welche Richtung die Daten jetzt gehen müssen. Dieses Problem betrifft V-USB-basierte Projekte nicht, eine solche Leitung lässt sich leicht nachrüsten.
- es sehr kurze Antwortzeiten von den USB-ICs verlangt (im Bereich von ~10 Bitzeiten!)
- Es gibt auf dem Markt einige wenige, aufwändige und damit teure Lösungen. Wer also ein galvanisch getrennte Schnittstelle braucht, sollte nicht USB nehmen. Allerdings ist es leicht möglich, einen USB-RS232/RS485 Wandler galvanisch auf der RS232/RS485 Seite zu trennen.
- Eine einfache Lösung wäre einen FT232 zu verwenden und diesen auf der TTL-Seite mit Optokopplern zu trennen.
- Die zur Zeit einfachste und kostengünstigste Möglichkeit zur galvanischen Trennung ist der ADUM3160BRWZ oder der ADuM4160 von Analog Devices.
- Einschränkungen: nur Full- und Low-Speed, keine automatische Erkennung der Übertragungsrate.
- ADuM3160 im AD Newsletter: [2]
- Leerplatine für ADuM4160 im IT-WNS Webshop
- Forumsbeitrag mit Eagle 3D Bild und Schaltplan
- Suche nach USB und galvanischer Trennung im Forum
|