www.mikrocontroller.net

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.

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Ü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] USB-Devices

[Bearbeiten] Implementierung in Software

[Bearbeiten] Spezielle USB-µC

  • 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!

[Bearbeiten] USB-Transceiver

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 €

[Bearbeiten] Tipps + Tricks

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

[Bearbeiten] Analysetools

[Bearbeiten] Weblinks

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net