1 / 44

USB

USB. Pavel Novák. Široké použití . Parametry. sériové rozhraní rychlost 1.5, 12, 480 Mb/s připojení zařízení až na vzdálenost 5 m možnost napájení z konektoru až 127 připojených zařízení podpora plug&play. Konektory. Typ A. Typ „mini“. Typ B. Vývody konektoru. Kabel.

patty
Télécharger la présentation

USB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. USB Pavel Novák

  2. Široké použití 

  3. Parametry • sériové rozhraní • rychlost 1.5, 12, 480 Mb/s • připojení zařízení až na vzdálenost 5 m • možnost napájení z konektoru • až 127 připojených zařízení • podpora plug&play

  4. Konektory Typ A Typ „mini“ Typ B

  5. Vývody konektoru

  6. Kabel • stíněný nebo nestíněný (pro Low Speed, max. délka 3 metry) • data krouceným párem, napájení rovně • stínění je připojeno jen na straně počítače k pinu GND, zařízení ho již nepřipojuje

  7. Verze USB • 1.1 • přenosová rychlost max. 12 Mb/s • 2.0 • doplněna nejrychlejší vrstva • přenosová rychlost max. 480 Mb/s

  8. Definice rychlosti zařízení • Zařízení mohou být připojena za chodu, je třeba jejich zařízení rozpoznat a určit rychlost, s jakou jsou schopna komunikovat. • Řešení: změna napětí na některém z datových vodičů.

  9. Low Speed

  10. Full Speed

  11. High Speed • Zapojeno stejně jako Full Speed a z počátku také tak komunikuje, zvýšení rychlosti softwarově. • Zařízení USB 1.1 nemusí podporovat Full Speed • Zařízení USB 2.0 nemusí podporovat High Speed

  12. Přenos dat • není přenášen hodinový signál • příjemce se synchronizuje podle dat • kódování NRZI • bit stuffing • datové vodiče přenáší vzájemně negovaný signál (snížení vlivu rušení)

  13. Kódování • 0 – změna úrovně1 – ponechání úrovně • Na počátku přenosu sync-byte 00000001

  14. Bit Stuffing • příjemce se synchronizuje podle dat nutno zajistit dostatečný počet změn • po každých 6-ti jedničkách vložena nula • příjemce nuly navíc odstraňuje • paket obsahující víc než 6 jedniček za sebou je ignorován

  15. Napájení • hub dodává 4.75 – 5.25 V, max. pokles o 0.35 V • zařízení odebírá max. 100 mA • zařízení může požádat až o 500 mA, pokud jsou k dispozici, dostane je • zařízení může specifikovat, že potřebuje méně • hub napájený po sběrnici je schopen dodávat max. 100 mA na port

  16. Organizace sběrnice • one-master, tj. většinou počítač, veškerá aktivita vychází od něj • zařízení může zahájit přenos jen po vyzvání

  17. Architektura • max. 7 hubů, max. 127 zařízení

  18. Typy přenosů I • Řídící (Control) • k řízení HW, vysoká priorita, chybová kontrola, najednou lze přenést až 64 B • Přes přerušení (Interrupt) • vhodné pro zařízení, která chtějí trvale přenášet málo dat (myš, klávesnice). • počítač se periodicky dotazuje

  19. Typy přenosů II • Hromadný (Bulk) • nízká priorita, zabezpečení proti chybám • vhodné pro zařízení jako scanner, tiskárna • Izochronní (Isochronous) • stálá rychlost, bez chybového zabezpečení • vhodné pro zvukové karty apod.

  20. Koncové body (endpoints) • každé zařízení na sběrnici má adresu • k adrese se přidává číslo „koncového bodu“ • koncový bod 0 pro řídící přenosy • max. 15 (6) koncových bodů • přenos se pak chová pro program jako pipe mezi koncovým bodem a programem

  21. Enumerace • enumerace = rozpoznání zařízení • po připojení zařízení je třeba se dozvědět co je zač – OS se dotazuje zařízení na parametry • parametry jsou posílány v přesně definovaných blocích, tzv. deskriptorech

  22. Průběh enumerace • zařízení zdvihne D+ nebo D– • hub informuje host, že je připojeno nové zařízení • host se zeptá, na jaký port je připojeno • host tento port aktivuje a provede reset USB sběrnice • hub dá zařízení proud 100mA, zařízení se resetuje • zařízení má nyní dočasně adresu 0 • host si přečte začátek deskriptoru se základními údaji • host přiřadí zařízení jeho adresu • host si načte zbývající údaje deskriptoru • host přiřadí zařízení jednu z jeho konfigurací

  23. Využití USB

  24. Obvody FTDI • Future Technology Devices International • vyrábí čipy konvertující „klasická“ rozhraní na USB Výhody: • není třeba znalost USB pro komunikaci přes ni Nevýhody: • v zapojení je jeden čip navíc • není možné využít všechny možnosti USB

  25. FT232BM • převodník USB  UART • při připojení k RS232 komunikace 300-1000 Bd • 7-bitový nebo 8-bitový přenos • HW nebo SW handshake • USB 1.1 nebo 2.0 (pouze Full Speed) • uložení VID a sériového čísla zařízení pro USB ve vnější EEPROM

  26. FT232BM – ovladače • ovladače umožňující obsluhování zařízení jako virtuálního sériového portu • Win, MAC, Linux • D2XX ovladače pro přímý přístup k zařízení

  27. FT232BM – D2XX • Přenos dat:FT_Open(), FT_OpenEx()FT_Read(), FT_Write()FT_Close() • Nastavování parametrů:FT_SetBaudRate(), FT_SetDataCharacteristics(), FT_SetTimeouts(), FT_GetStatus(), FT_SetFlowControl()…

  28. FT232BM – D2XX – EEPROM • Pomocí tohoto API lze naprogramovat připojenou EEPROM – FT_EE_Program() • Možné nastavení parametrů: • VID, PID, manufacturer, manufacturer ID • Description, Serial Number • MaxPower, SelfPowered • USBVersion

  29. FT232BM • ASIX prodává za 172,- bez DPH • Nabízí též modul UMS2 (680,- bez DPH) • čip s pamětí a krystalem pro osazení do patice – kompletní převodník USB  UART

  30. FT245BM • převodník USB  FIFO • rozhraní 8-bit • signály na zápis, čtení, indikaci dat v bufferu a plného bufferu

  31. PIC16C745 • 6 MHz / 24 MHz • 1 instrukce na tik kromě skoků (2 tiky) • RISC (35 instrukcí) • 8 K paměti na program, 256 bytů na data (Harvardská architektura) • 22 I/O pinů • USB/UART • 3x timer • 5-ti kanálový A/D převodník

  32. PIC16C745 – podpora USB • pouze Low Speed • 3 koncové body (0,1,2) – podle specifikace • obsahuje SIE (serial interface engine) • příjem dat: přerušení, ve spec. registru je zapsána adresa, kde jsou, a kolik jich je • poslání dat: zapíší se do určené části paměti, zapíše se adresa a počet do registru a nahodí se bit, že jsou předána SIE • zpracování po max. 8 bytech

  33. PIC16C745 – podpora USB • Microchip poskytuje knihovnu pro práci s USB • InitUSB(), PutUSB(), GetUSB() • musí se naspecifikovat deskriptory • ke stažení příklad chovající se jako USB myš

  34. const char ReportDescriptor1 [] = {0x05, 0x01, /* usage page */ 0x09, 0x02, /* usage mouse */ 0xa1, 0x01, /* collection (application) */ 0x09, 0x01, /* usage (pointer) */ 0xa1, 0x00, /* collection (linker) */ 0x05, 0x09, /* usage page (buttons) */ 0x19, 0x01, /* usage minimum (1) */ 0x29, 0x03, /* usage maximum (3) */ 0x15, 0x00, /* logical minimum (0) */ 0x25, 0x01, /* logical maximum (0) */ 0x95, 0x03, /* report count (3 bytes) */ 0x75, 0x01, /* report size (1 bit) */ 0x81, 0x02, /* input (3 bits) */ 0x95, 0x01, /* report count (1 byte) */ 0x75, 0x05, /* Report size (5 bits) */ 0x81, 0x01, /* input (constant 5 bit padding) */ 0x05, 0x01, /* usage page (generic desktop) */ 0x09, 0x30, /* usage X */ 0x09, 0x31, /* usage Y */ 0x15, 0x81, /* logical minimum -127 */ 0x25, 0x7F, /* logical maximum 127 */ 0x75, 0x08, /* report size (8) */ 0x95, 0x03, /* report count 2 */ 0x81, 0x06, /* input (2 position butes X & Y) */ 0xc0, 0xc0}; /* end collection */

  35. const unsigned int ReportDescrSize = sizeof(ReportDescriptor1); const char DeviceDescriptor [] = {0x12, DEVICE, 0x10, 0x01, 0x00, 0x00, 0x00, 0x08, 0xD8, 0x04 ,0x01, 0x00, 0x00, 0x02, 0x01, 0x02, 0x00, 0x01}; const char ConfigDescriptor [] = {0x09, CONFIGURATION, 0x22, 0x00, 0x01, 0x01, 0x00, 0xA0, 0x32, /* Interface Descriptor */ 0x09, INTERFACE, 0x00, 0x00, 0x01, 0x03, 0x01, 0x02, 0x00, /* HID descriptor */ 0x09, 0x21, 0x00, 0x01, 0x00, 0x01, 0x22, sizeof(ReportDescriptor1), sizeof(ReportDescriptor1)>>8, /* Endpoint 1 descriptor */ 0x07, ENDPOINT, 0x81, 0x03, 0x04, 0x00, 0x0A}; const char HIDDescriptor [] = {0x09, 0x21, 0x00, 0x01, 0x00, 0x01, 0x22, sizeof(ReportDescriptor1), sizeof(ReportDescriptor1)>>8}; const char String0 [] = { 4, STRING, 9, 4}; const char String1 [] = {54, STRING, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'c', 0, 'h', 0, 'i', 0, 'p', 0, ' ', 0, 'T', 0, 'e', 0, 'c', 0, 'h', 0, 'n', 0, 'o', 0, 'l', 0, 'o', 0, 'g', 0, 'y', 0, ',', 0, ' ', 0, 'I', 0, 'n', 0, 'c', 0, '.', 0}; const char String2 [] = {92, STRING, 'P', 0, 'i', 0, 'c', 0, '1', 0, '6', 0, 'C', 0, '7', 0, '4', 0, '5', 0, '/', 0, '7', 0, '6', 0, '5', 0, ' ', 0, 'U', 0, 'S', 0, 'B', 0, ' ', 0, 'S', 0, 'u', 0, 'p', 0, 'p', 0, 'o', 0, 'r', 0, 't', 0, ' ', 0, 'F', 0, 'i', 0, 'r', 0, 'm', 0, 'w', 0, 'a', 0, 'r', 0, 'e', 0, ',', 0, ' ', 0, 'V', 0, 'e', 0, 'r', 0, '.', 0, ' ', 0, '2', 0, '.', 0, '0', 0, '0', 0};

  36. void main() { static bit Button_RA4 = 0; unsigned char i; unsigned char vector = 0; unsigned char buffer [4]; const signed char table [] = {-4, -4, -4, 0, 4, 4, 4, 0}; // The table array contains the directional data for simulated mouse movement. The Y direction // leads the X direction by two in the array (i.e (-4,4) then (-4,0) then (-4, 4) then (0, 4) // etc.) X vectors are positive from left to right on the screen. Y vectors are positive for // top to bottom. The result of all these vectors is the cursor moving in a continual octogon. TRISB = 0; PORTB = 0; TRISA = 0x10; // RA4 is and input PORTA = 0; for (i = 0; i < 50; i ++); // Small delay (greater than 16us) in order to InitUSB (); // allow SIE to come online before beginning USB // initialization buffer [0] = 0; i = 15; OPTION = 0x07; // TMR0 prescaler 1:256

  37. while (1) { if (T0IF) { // Poll all functions every 10.9ms T0IF = 0; ServiceUSB(); // Service USB functions if (i > 14) { // Increment octogon vectors buffer[1] = table[vector & 0x07]; // X vector (limit to length of table array) buffer[2] = table[(vector+2) & 0x07]; // Y vector (leads X by two) // (limit to length of table array) i = 0; vector++; } if (ConfiguredUSB()) { // Wait until device is configured before using // EP1. If Endpoints 1 or 2 are used before // the device is configured, errors will occur. if (PutEP1(4, buffer)) // Increment i if EP1 IN buffer is accessible i++; // to the PIC. If not accessible, try again next time. } if (Button_RA4 && RA4) Button_RA4 = 0; if (!RA4 && !Button_RA4) { // if RA4 button is pressed on PICDEM USB board RemoteWakeup(); // perform remote wakeup Button_RA4 = 1; } } } }

  38. PIC16C745 - dostupnost • ASIX prodává za 108,- bez DPH • nenašel jsem levný programátor • nejlevnější od ASIX – programátor PRESTO – 1980,- bez DPH

  39. TUSB3210 • podobný procesor od Texas Instruments • události na USB sběrnici také vyvolávají přerušení, které je nutné ošetřit • programuje se přes USB, nainstaluje se ovladač a zkompilovaný kód se nahrává do čipu při jeho resetu (např. při připojení) • pro trvalé uložení programu je nutná externí EEPROM připojená přes I2C

  40. AT90S, ATmega8 • „obyčejný“ AVR bez podpory USB • USB si sám vykomunikoval Igor Češko www.cesko.host.sk/hardware.php • k dispozici zdrojové kódy pro převodník USB – 8-pinový I/O port a záznamník do EEPROM přes USB • oba lze koupit např. na obchod.hw.cz

  41. Čipy Ubicom řady SX • Michael Hetherington • podobně jako Igor Češko pro AVR • zdrojový kód, čip se přihlásí jako USB klávesnice a napíše „California dreamin‘“  • http://www.sxlist.com/techref/ubicom/lib/io/dev/keys/usbdemo-mh.htm • prodává MES Praha (www.mespraha.cz)

  42. RTL8150 • konvertor USB – Ethernet • není programovatelný, ale Realtek poskytuje kompletní datasheet, schéma zapojení a drivery pro Win a Linux • www.realtek.com.tw

  43. Další zajímavé obvody • konventory USB – ATAPI • ISP-1581 (Phillips), PL-2507 (Prolific), TUSB6250 (Texas Instruments) • USB – Ethernet konvertor • PL-2311 (Prolific) • DA převodníky (ext. zvuk. karty, …) • PCM2702 (Texas Instruments) • IrDA – USB konvertor • STIr4200 (SigmaTel)

  44. Použité zdroje • Elektronické zdroje www.usb.org www.mcu.cz www.hw.cz • Literatura David Matoušek: USB prakticky s obvody FTDI

More Related