USB
Universal Serial Bus.
Serieller Bus, der heutzutage an jedem neuen PC zu finden ist und schon lange die RS-232 und Parallelport-Anschlüsse ersetzt hat.
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 auf 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 anschließen 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.
Allgemeine Informationen
- USB-Hauptseite Die Homepage des USB Implementers Forum, Inc., creators of USB technology.
- libusb Allgemein ist die Treiberprogrammierung für USB auf PC-Seite das Hauptproblem. Die plattformübergreifende libusb (unterstützt mittlerweile Windows direkt) ermöglicht eigenen Anwendungen die direkte Kommunikation mit USB-Geräten, unter Windows mittels eines Universaltreibers, u.a. auch über WinUSB. Ein deutschsprachiges Projekt, erstellt von Weichinger Klaus, das libusb verwendet, findet man unter [1] (Programmiersprache C mit MINGW; Dokumentation, Sourcecode und Binärdateien), ein weiteres hier (C++, GCC&MSVC, Linux&Windows). Indem man Geräte als WinUSB-Device markiert, werden sie auch unter Windows sofort ohne Treiber-Installation oder -Konfiguration nutzbar (ab Windows 8).
- 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.
- Wikipedia-Artikel: Universal Serial Bus
- Forumsbeitrag: Übersichten von Steckverbindern für USB, Audio, Video etc.
- USB to serial UART, eine Einleitung und Übersicht der verfügbaren ICs, engl.
USB-Hostcontroller
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.
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.
- Reine Softwarelösung, kann nur USB Low Speed (Seite auf japanisch, mit Babelfish übersetzen lassen).
- SIAM32 USB HC - Software Implemented Atmel Mega32 Universal Serial Bus Host Controller (Atmega32, GPL)
Software-Implementierungen auf anderen Mikrocontrollern scheitern wegen zu geringer Taktfrequenzen bzw. Durchsatzraten, oder – bei leistungsstärkeren Controllern – wegen Sinnlosigkeit durch Verfügbarkeit von Mikrocontrollern mit USB (siehe oben).
Spezielle Schaltkreise
USB-Schaltkreise, die vorzugsweise für den Anschluss an ein „Externes Businterface“ eines Mikrocontrollers oder per SPI vorgesehen sind.
- Produkte von NXP (ehem.Philips), bspw. ISP1760
- SL811HST von Cypress (Host/Device/OTG möglich)
- VNC1L von Vinculum
- MAX3421E z. B. verwendet im Arduino USB Host Shield von Circuits@Home
- ALFAT SoC Processor - A seamless way to access files on SD & MMC cards and on USB memory drives. Simple commands are used on UART (serial), SPI or I2C to access files at high rates.
Außerdem gibt es eine Reihe Schaltkreise, die einen PCI-Bus haben. Diese sind für Mikrocontrollerprojekte in der Regel nicht zu gebrauchen.
USB HOST taugliche Stacks
- Freier USB-Stack für Embedded Systeme (LGPL) von Benedikt Sauter (Treiber für SL811HS von Cypress). Source auf svn.berlios.de
- SIAM32 USB HC - Software Implemented Atmel Mega32 Universal Serial Bus Host Controller (Atmega32)
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)
- USBula Serial to USB-Flash-Drive Bridge Firmware, Demoboard verfügbar (UART)
USB-Devices
Implementierung in Software
- IgorPlug-USB - Reine Softwarelösung. Kann nur USB Low Speed (theoretisch 1.5Mbit/s).
- V-USB - gleiches Prinzip wie IgorPlug, aber Entwickler-Schnittstellen in C, englisch kommentierter Code. Projekt von Objective Development. Viele Folgeprojekte. Beispielsweise:
- AVR-CDC – Ein USB-RS232C-Interface mittels CDC-Protokoll (Communication Device Class) bspw. mit ATtiny45. Kein Treiber erforderlich, nur .INF-Datei. Von Osamu Tamura.
- CDC-IO Ein experimentelles 18-bit Parallelport mittels AVR-Mikrocontroller (ATmega8/48/88). Von Osamu Tamura.
- AVR-HID - Low budget USB sensor input into Pure Data/Supercollider and other free softwares based around the ATmega8 microcontroller. This allows for very fast, multiple sensor input at high resolutions on a range of platforms (GNU/Linux, MAC OS X, Windows). Based on workshops with Derek Holzer.
- USBtiny - Programmiergerät für AVR, Lizenz: GPL
- AVR steuert USB und Universeller USB-Treiber in der Zeitschrift Elektor März 2007. Reine Softwarelösung für ein USB-I/O-Board mit einem ATmega32 und einem open source USB Treiber.
- USB Client für universelle Steuerungsaufgaben mit PIC18F2455 oder PIC18F2550
- Für MSP430 gibt es mittlerweile eine Implementation [2] und einen darauf aufbauenden Bootloader [3].
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.
- Eine Experimentierplatine und eine GPL Library für den AT90USB1287 gibt es von Dr. Stefan Salewski. Siehe auch Forenbeitrag Anwendersoftware (Generic HID Demo) für den AT90USBKEY.
- LUFA (Lightweight USB Framework for AVRs) is an open source USB library for the USB-enabled AVR microcontrollers. It is written from scratch and provides an easy to use, clean interface for rapid firmware development (MIT). Alter Name: MyUSB
- FreakUSB Open Source USB Device Stack (mod. BSD Lizenz)
- Atmel
- ATmega(8|16|32)U2 -
- ATmega(16|32)U4 - 1x USB 2.0 full-speed/low speed device
- (USB Appnotes AVR270..273, 282, 287, 293)
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 € |
Silicon Laboratories | C8051T3xx, -T6xx, -F3xx, -F6xx | Full | 24 28 32 48 | 1,8..5,25V | 8051 | 25/48MHz | 8KB..64KB | 1,25..256KB | 1 x 10bit, 500 ksps, 23 ins | 5 x PWM | 2 x UART | SPI, I²C | Temperatursensor, Komparator, 4 x 16bit timer | Mouser OTP ab 0,81 €, Flash ab 1,11 € |
Atmel | SAM3U | High | 100 144 | 1,62..3,6V | Cortex M3 | 96MHz | 64..256KB | 20..52KB | 8-channel 12-bit 1MSPS, 8-channel 10-bit | bis zu 7 x PWM | bis zu 4 x UART | SPI, I²C, I2S, 1 HSMCI (SDIO/SD/MMC) | 3 x 16bit timer, 32-bit Real Time Timer, bis zu 96 IO-Pins | Mouser ab 4,09 € |
- 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
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 |
MCP2210 | Microchip | Device | 20 SOIC, SSOP | USB nach SPI (Master) Bridge, GPIO | USB SPI Bridge (HID-Klasse) + 9 GPIO / SPI CS | Reichelt, ca. 1,75 € | Durch HID simpel anzusteuern, aber in der Praxis nur (sehr) langsame SPI (ca. 80 kbit/s @ 12Mbit/s SPI). HW Ansteuerung sehr simpel. |
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
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 über 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 € |
USB-Converter
Es exisitieren eine Reihe von Adaptern, mit denen man ausgehend vom USB-Bus viele Standards und Protokolle emulieren und treiben kann, darunter RS-232, RS-422, RS-485, MODBUS und I2C. Siehe auch UART auf USB.
Tipps + Tricks
- Selbstgebastelte USB-Hardware an den PC nur über einen anständig konstruierten self-powered Hub anschließen - Forumbeitrag von Rufus t. Firefly
- Es ist sinnvoll eigene Entwicklungen mit den Tools von usb.org zu testen, usbcv kann z.B. Fehler in USB-Deskriptoren oder bei der Enumeration aufdecken: usb20cv usb30cv
Galvanische Trennung
Eine Galvanische Trennung für USB selbstzubauen ist sehr aufwändig. Die Herausforderung bei USB ist
- daß 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: [4]
- Leerplatine für ADuM4160 im IT-WNS Webshop
- Forumsbeitrag mit Eagle 3D Bild und Schaltplan
- Suche nach USB und galvanischer Trennung im Forum
- USB Isolator bei Electronics Shop
- USB-Isolator
- Intona, USB-Isolatoren
- Icron, USB-Extender
- USB 3.0 Super Speed Isolator
Analysetools
- USB Analyzer - (14 tägige Demoversion, Kaufversion ca. 80€)
- Wireshark - Eigentlich Netzwerk Sniffer, kann aber in neueren Versionen auch USB (insbesondere unter Linux) Wireshark Wiki, USB
- Microsoft Message Analyzer - Der Netzwerk Sniffer von Microsoft kann auch USB
- Sniff USB - USB Sniffer - freeware - Windows
- ALogic Analyzer - Protokoll-Dekoder für USB, UART, I2C und SPI. Software mit Demos zum Download.
- OpenVizsla (OpenVizsla auf kickstarter.com) - OpenSource USB sniffer, basierend auf XMOS und FPGA (under dev. right now)
- usbhid-dump - Linux-Tool zum Auslesen des USB-HID-Report-Descriptors
- USBDeview - Windows-Programm zur Darstellung aller USB-Geräte mit Ihren Parametern. (VID/PID, Seriennr., Treibern, usw)
Weblinks
- Links to USB Host and Device Controller Chips by Jan Axelson.
- USB over Network
- Mass storage host USB example
- ChaosradioExpress #86 USB - Der Universal Serial Bus im Detail. Podcast mit Tim Pritlove (Moderation) und Daniel Mack
- Bus Pirate at hackaday.com - How-to: The Bus Pirate, universal serial interface USB <-> I2C, SPI, UART.
- EasyUSB - Generischer USB Treiber für Windows
- USB Port Monitor
- AHID.DLL - Noch ein generischer USB Treiber für Windows (C++/C#/VB/MinGW/wxWidgets)
- Simple circuit prevents USB current overshoot during insertion von Luciano Bordogna
- USB unter Linux - Vortragsfolien von Krzysztof Opasiak
- engineersgarage.com - 6 teiliger USB-Artikel
- USB in a NutShell - Making sense of the USB standard
- USB-Tutorial mit STM32