Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

USB Pavel Novák.

Podobné prezentace


Prezentace na téma: "USB Pavel Novák."— Transkript prezentace:

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 Číslo vývodu Význam Barva 1 +5 V červená 2 Data –
bílá 3 Data + zelená 4 GND černá

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 Low Speed 1.5 Mb/s Full Speed 12 Mb/s High Speed 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

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) Přes přerušení (Interrupt)
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) Izochronní (Isochronous)
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 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 */ x09, INTERFACE, 0x00, 0x00, 0x01, 0x03, 0x01, 0x02, 0x00, /* HID descriptor */ x09, 0x21, 0x00, 0x01, 0x00, 0x01, 0x22, sizeof(ReportDescriptor1), sizeof(ReportDescriptor1)>>8, /* Endpoint 1 descriptor */ x07, 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 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‘“  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

43 Další zajímavé obvody konventory USB – ATAPI USB – Ethernet konvertor
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


Stáhnout ppt "USB Pavel Novák."

Podobné prezentace


Reklamy Google