Embed
Email

USB

Document Sample

Shared by: Jun Wang
Categories
Tags
Stats
views:
3
posted:
1/8/2012
language:
pages:
44
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









Číslo vývodu Význam Barva

1 +5 V červená

2 Data – bílá

3 Data + zelená

4 GND černá

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

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

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čů.

Low Speed

Full Speed

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

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í)

Kódování







 0 – změna úrovně

1 – ponechání úrovně

 Na počátku přenosu sync-byte 00000001

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

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

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í

Architektura









 max. 7 hubů, max. 127 zařízení

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

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.

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

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

Průběh enumerace

1. zařízení zdvihne D+ nebo D–

2. hub informuje host, že je připojeno nové zařízení

3. host se zeptá, na jaký port je připojeno

4. host tento port aktivuje a provede reset USB sběrnice

5. hub dá zařízení proud 100mA, zařízení se resetuje

6. zařízení má nyní dočasně adresu 0

7. host si přečte začátek deskriptoru se základními údaji

8. host přiřadí zařízení jeho adresu

9. host si načte zbývající údaje deskriptoru

10. host přiřadí zařízení jednu z jeho konfigurací

Využití USB

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

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

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í

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()…

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

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

FT245BM

 převodník USB  FIFO

 rozhraní 8-bit

 signály na zápis, čtení, indikaci dat v

bufferu a plného bufferu

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

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

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š

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 */

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};

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 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;

}

}

}

}

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

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

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

Č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)

RTL8150

 konvertor USB – Ethernet

 není programovatelný, ale Realtek

poskytuje kompletní datasheet, schéma

zapojení a drivery pro Win a Linux

 www.realtek.com.tw

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)

Použité zdroje

 Elektronické zdroje

www.usb.org

www.mcu.cz

www.hw.cz

 Literatura

David Matoušek: USB prakticky s obvody FTDI



Related docs
Other docs by Jun Wang
Management Two
Views: 6  |  Downloads: 0
Management training Red Cross branch offices
Views: 6  |  Downloads: 0
Management subjekt_ CR
Views: 5  |  Downloads: 0
Management Styles_1_
Views: 22  |  Downloads: 0
Management stratégique
Views: 5  |  Downloads: 0
Management Standards at CARE - CARE Academy
Views: 6  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!