Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
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 (
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.