BAB3 - USB

February 14, 2019 | Author: cakMAD69 | Category: N/A
Share Embed Donate


Short Description

USB...

Description

1

Universal Serial Bus (USB) I. Apa itu USB ?

Seseorang yang telah menggunakan komputer selama lebih dari 3 atau 5 tahun akan mengetahui hal-hal apa saja yang hendak dipecahkan oleh USB. Di masa lalu, untuk menghubungkan berbagai maca alat ke komputer diperlukan berbagai macam cara pula : 

 Parallel port , dapat digunakan untuk mengubungkan  printer ,  scanner   atau  Zip drive. drive. Yang menjadi masalah adalah kebanyakan komputer hanya memiliki sebuah  parallel port   sehingga pemakai harus menggunakan alat-alat tersebut secara  bergantian. Belum lagi masalah kecepatan,  zip drive yang drive yang membutuhkan transfer data kecepatan tinggi menjadi lambat karena harus menggu me nggunakan nakan parallel  parallel port .



Serial port , umumnya digunakan untuk modem dan modem dan komunikasi langsung antar 2 komputer. Bila dibandingkan dengan  parallel port   maka  serial port   jauh lebih lambat.



Slot ISA atau PCI, digunakan oleh peralatan-peralatan lain yang memerlukan transfer data secara cepat. Sayangnya, prosedur instalasi card-card   yang datang  bersama alat-alat tersebut pada umumnya tidak mudah.

Tujuan utama dari USB adalah untuk mengakhiri segala ketidak nyamanan diatas. USB memberikan sebuah

bus  bus  yang terstandarisasi, mudah digunakan dan dapat

menghubungkan sampai 127 peralatan pada komputer. Setial alat yang duhubungkan memungkinkan untuk mencapai kecepatan transfer data sampai 6 MBps. Kecepatan transfer tersebut akan mencukupi untuk kebutuhan kebanyakan peralatan eksternal komputer. Dewasa ini hampir semua peralatan dapat menggunakan USB :  printer ,  scanner , mouse, mouse,  joystick , digital camera, camera, webcam, webcam, modem, modem, speaker , storage device, device, network device dan device dan lain-lain. Peralatan yang menggunakan USB dapat dihubungkan dengan komputer dengan sangat mudah. Konektor USB dapat dengan mudah ditemukan baik di belakang ataupun di depan casing  komputer.   komputer. Apabila peralatan tersebut baru untuk pertama kalinya dihubungkan dengan komputer, maka sistem operasi akan mendeteksinya secara otomatis dan meminta  pemakai untuk memasukkan driver disk   untuk peralatan tersebut. Apabila driver   telah terinstalasi maka komputer akan langsung menggunakan alat tersebut. Apabila peralatan itu untuk kemudian dilepas maka driver  akan  akan secara otomatis di-unload  di-unload .

2 Kebanyakan peralatan USB datang dengan langsung membawa suatu konektor USB tipe A, bila tidak maka peralatan tersebut pasti memiliki soket yang dapat dihubungkan dengan konektor tipe B.

Konektor tipe A

Konektor Tipe B

Standar USB menentukan bahwa : 

Konektor tipe A harus dihubungkan dengan komputer.



Konektor tipe B harus dihubungkan dengan peralatan l uar.

Dengan adanya dua jenis konektor tersebut maka dapat dipastikan tidak akan terjadi kesalahan dalam menghubungkan. menghubungkan.

II. USB H ub 

Apabila terdapat banyak sekali peralatan USB yang hendak dihubungkan dengan komputer, maka ada kemungkinan  port   USB pada komputer tidak cukup. Untuk mengtasi masalah ini diperlukan USB hub. hub. Standar USB menyatakan bahwa sebuah  port USB pada komputer dapat dihubungkan sampai dengan 127 peralatan dan USB hub  hub  adalah termasuk dalam standar tersebut.

USB H ub   dengan  dengan 4 port

3 Suatu hub standar hub standar memiliki 4 port  4  port . Setiap hub dapat hub dapat dihubungkan dengan hub lainnya, hub lainnya, ini berarti dengan membuat “rantai“rantai -hub” hub” akan banyak sekali peralatan USB yang dapat dihubungkan pada komputer. Suatu peralatan USB dan hub  hub  USB dapat memiliki  power  supply sendiri  supply sendiri atau dapat pula menggunakan suplai dari komputer. Suatu  self-powered   HUB diperlukan apabila akan terdapat banyak sekali peralatan USB yang tidak memiliki suplai sendiri akan dihubungkan ke hub  hub  tersebut. Namun, peralatan-peralatan besar seperti  printer  dan  scanner   pastilah memiliki  power supply  supply  sendiri, sehingga apabila terdapat banyak  peralatan seperti itu yang akan aka n dihubungkan maka ma ka yang diperlukan diperl ukan adalah suatu unpowered  USB hub. hub.

III. Standar dan Spesifikasi USB

USB memiliki banyak sekali kemampuan (fitur) dan ketentuan yang diantaranya adalah sebagai berikut : 

Komputer selalu dan hanya akan selalu bertindak sebagai host  (master).  (master).



Sampai 127 peralatan dapat dihubungkan dihubungkan dengan master port  baik  baik secara langsung atau melalui hub. hub.



Kabel USB dapat sampai 5 meter, tetapi dengan “merantai” hub  hub  maka panjang kabel bisa sampai 30 meter.



Suatu port  Suatu port  (USB  (USB 1.1) dapat memiliki kecepatan transfer maksimum 12 MBps.



Setiap peralatan USB dapat meminta bandwidth sampai bandwidth sampai 6 MBps (USB 1.1)



Setiap  port   USB pada komputer dapat memberikan suplai tegangan 5V dengan maksimum 500 mA.



 Low-power device, device , seperti mouse dapat mouse dapat menggunakan suplai yang diberikan oleh  port .





 High-power device, device, seperti printer  seperti printer  harus  harus memiliki power memiliki power supply sendiri. supply sendiri. Peralatan USB adalah hot-swappable, hot-swappable, ini berarti mereka dapat dihubungkan dan diputuskan ke port  ke  port  kapan  kapan saja.



Saat komputer memasuki mode  suspend atau power-saving  atau  power-saving  maka   maka suatu peralatan USB sebaiknya dapat ikut masuk ke mode tersebut demi menghemat tenaga.

4 Suatu kabel USB memiliki konfigurasi sebagai berikut : 

Dua buah kabel untuk suplai (merah (me rah untuk +5V dan hitam untuk  ground ). ).



Dua buah kabel data diferensial yang saling dipilin (putih untuk D- dan hijau untuk D+).



Pelindung (shield)

Saat host   dinyalakan atau pada saat ada peralatan baru yang dihubungkan, maka host   akan melakukan pemeriksaan (query)  (query)  terhadap peralatan-peralatan tersebut. Proses ini disebut enumeration. enumeration.  Host   juga akan menanyakan pada peralatan, tipe atau cara transfer data yang  bagaimana yang diinginkan oleh alat tersebut : 

Control , mode ini digunakan oleh host   untuk melakukan query  query  dan kontrol terhadap peralatan.



  yang akan mengirim data dalam  Interrupt , peralatan seperti mouse  mouse  dan keyboard  yang  jumlah sangat sedikit biasanya menggunakan menggunakan mode ini.



 Bulk , peralatan seperti printer  seperti printer  yang  yang menerima data dalam bentuk paket-paket yang  besar akan menggunakan menggunakan mode ini. Terdapat proses handshaking   untuk memastikan data yang dikirim benar.



seperti  speaker   yang akan dan harus menerima  Isochronous,  Isochronous, peralatan  streaming   seperti speaker  data secara terus menerus hampir real-time  real-time  akan menggunakan mode ini. Tidak ada pengecekan kesalahan pada mode ini, apapun datanya dianggap benar.

Secara khusus, bandwidth dari bandwidth dari bus dicadangkan bus dicadangkan seanyak 10% untuk keperluan paket paket kontrol. Setiap peralatan dapat meminta bandwidth  bandwidth  sampai maksimum 90% dari total kemampuan bus. bus. USB membagi-bagi bandwidth  bandwidth  kedalam  frame-frame.  frame-frame. Setiap  frame   frame  berisi 1500 byte dan byte dan sebuah  frame baru  frame baru selalu ada setial mili detik (USB 1.1). Mode interrupt dan isochronous  isochronous  selalu mendapatkan kesempatan pertama pada setiap  frame   frame  sehingga dapat dipastikan mereka akan selalu mendapatkan bandwidth yang bandwidth yang mereka minta. Mode bulk  hanya   hanya dapat mengunakan bandwidth yang bandwidth yang tersisa. Standar USB versi 1.1 mendukung dua jenis kecepatan transfer, mode  full speed dengan 12 MBps dan mode low speed   dengan 1.5 MBps. Dengan adanya mode lambat ini yang lebih kebal  Electromagnetic Interference (EMI) maka ongkos pembuatan alat dapat ditekan. Sedangkan USB 2.0 dapat mencapai kecepatan transfer sampai 480 MBps (mode high speed ). ).

5 USB dikontrol oleh host , dengan demikian hanya diperbolehkan ada satu host  untuk setiap bus (USB bus (USB 2.0 memungkinkan suatu protocol negosiasi sehingga dua host  dapat saling memilih untuk menjadi host ). ). Suatu USB host  bertanggung  bertanggung jawab penuh untuk mengontrol dan melangsungkan transaksi. USB menggunakan topologi  star  sehingga semua peralatan yang dihubungkan harus memiliki suatu pusat ( host   atau hub). hub). Dengan topologi ini diperoleh suatu keuntungan, yaitu pemakain arus oleh setiap  peralata dapat dikontrol dan bahkan bisa diputuskan apabila terjadi kondisi kelebihan arus. USB 1.1 memiliki dua standar protocol

(Host Controller Interface

Specification), Specification), yaitu : 

Universal Host Controller Interface (UHCI) yang dikembangkan oleh Intel dan Microsoft dengan tujuan membebankan kompleksitas pada  software sehingga desain hardware dapat hardware dapat disederhanakan.



Open Host Controller Interface (OHCI) yang dikembangkan oleh Compaq, Microsoft dan National Semiconductor dengan tujuan membebankan kompleksitas pada hardware sehingga hardware sehingga desain software desain software menjadi  menjadi sederhana.

USB 2.0 memiliki protocol khusus untuk mendukungnya yang disebut dengan  Enhanced Host Controller Interface (EHCI) yang dikembangkan oleh Intel, Compaq,  NET, Lucent dan Microsoft. EHCI dikembangkan dengan prinsip standarisasi sehingga suatu peralatan USB 1.1 akan dapat tetap dapat berjalan pada host  USB  USB 2.0. Untuk dapat me-load me-load driver   yang tepar maka suatu peralatan USB memiliki suatu kode yang disebut Vendor ID (VID) dan  Product ID  ID  (PID). VID/PID hanya dapat dikeluarka oleh USB Implementor's Forum dengan mendaftar dan melakukan  pembayaran.

Untuk

keperluan

non

komersial

(misalnya

pendidikan),

USB

Implementor's Forum mengijinkan pemakai untuk menggunakan VID/PID milik  pabrik manufakturing IC untuk digunakan pada IC USB ASIC yang didesain sendiri. Suatu manufaktur juga mungkin menjual PID untuk dipasangkan dengan VID milik mereka. Suatu pabrik pembuat IC USB kontroler untuk keperluan umum bahkan mengijinkan VID/PID IC tersebut untuk digunakan.

6 III.1 Spesifikasi Elektrik Sinyal Data

USB menggunakan transmisi data diferensial yang dikodekan dengan metoda NRZI (Non Return to Zero Invert) u Invert)  untuk ntuk mengirim data dengan field  dengan  field  sinkronisasi  sinkronisasi untuk melakukan sinkronisasi antara clock  dari   dari host   dan device. device. Transmitter  USB   USB 1.1 menggunakan cara-cara  berikut untuk mengirimkan bit bit data : 

Sinyal diferensial ‘1’ ditransmisikan dengan cara membawa pin D+ ke tegangan lebih dari 2.8V sambil di- pull-down ke  pull-down ke ground dengan resistor 15k, dan membawa  pin D- ke tegangan dibawah 0.3V 0.3V sambil di- pull-up ke  pull-up ke 3.6V dengan resistor 1.5k.



Sinyal diferensial ‘0’ ditransmisikan dengan cara membawa D+ ke tegangan kurang dari 0.3V dan D- ke tegangan lebih dari 2.8V, dengan konfigurasi resistor  pull-down dan  pull-down dan pull-up  pull-up yang  yang sama.

 Receiver USB 1.1 mendefinisikan : 

Sinyal diferensial ‘1’ apabila D+ setidaknya 200mV lebih tinggi dari D-. D -.



Sinyal diferensial ‘0’ apabila D+ setidaknya 200mV lebih rendah dari D -.

Pada USB 2.0, polaritas sinyal-sinyal sinyal- sinyal tersebut dibalik. Untuk memudahkan maka kode “J” dan “K” digunakan untuk melambangkan status dari transmisi serial tersebut. Pada USB 1.1, “J” state “J” state adalah diferensial ‘0’ sedangkan pada USB 2.0, “J” state “J”  state adalah  adalah diferensial ‘1’.  Namun, sebenarnya transceiver USB tidak selalu menggunakan mode diferensial. Beberapa status dari bus dapat bus dapat ditunjukkan dari status tunggal D+, D- atau keduanya secara terpisah. Sebagai contoh, Single Ended Zero (SE0) yang dibuat dengan cara membawa D+ dan D- keduanya ke tegangan lebih kecil dari 0.3V. SE0 apabila diberlakukan selaman lebih dari 10 mS digunakan untuk me-reset me- reset device. device. Ini berarti sinyal diferensial dan  single ended  sama-sama penting, sehingga suatu USB device controller   tidak bisa hanya melakukan sampling pada salah satunya. Suatu low speed  atau full   atau  full speed bus memiliki bus memiliki impedansi 90 ohm dengan toleransi +/15%. Mode High Mode  High speed   menggunakan constant current source 17.78 source  17.78 mA untuk mengurangi noise. noise.

III.2 Identifikasi Kecepatan

Agar dapat melakukan identifikasi apakah suatu peralatan adalah low spedd   atau full atau  full  speed   maka digunakan suart resistor  pull-up.  pull-up. Sebenarnya resistor ini tidak hanya berguna sebagai identifikasi kecepatan, namun juga sebagai indikator bagi host  apakah   apakah ada atau tidak ada peralatan yang dihubungkan.

7

F ul l Spee peed Device   menghubugkan resistor pull-up   pada  pada D+

L ow Speed Speed Device   menghubugkan resistor pull-up   pada  pada D-

 High Speed device  device  selalu memulai koneksi sebagai  full speed device (1.5k device (1.5k to 3.3V). Setelah dia akan melakukan high speed chirp (transisi chirp  (transisi JKJKJK secara cepat) pada sat device reset  untuk   untuk meminta koneksi high speed  pada   pada host  atau   atau hub jika hub jika mereka dapat mendukungnya. Setelah beroperasi pada high speed   maka resistor  pull-up   pull-up  akan dinonaktifkan.

8 Suatu USB 2.0 compliant device  device  tidak harus mendukung high speed , sama halnya bahwa USB 1.1 compliant device tidak device tidak harus mendukung  full speed  dan   dan juga low speed   sekaligus. Namun, suatu high speed device  device   tidak boleh mendukung low  speed . Suatu USB host   atau hub  hub  yang USB 2.0 compliant   harus mendukung semua mode kecepatan.

III.3 Spesifikasi Clock 

 High-speed data didata  di-clock  clock  pada   pada 480.0 MBps dengan toleransi +/- 500 ppm.  Full-speed data di data di--clock  pada   pada 12.0 MBps dengan toleransi +/- 2.500 ppm (0,25 %).  Low-speed data diclock   pada 1.5 MBps dengan toleransi +/- 15.000 ppm (1,5 %). Dengan demikian suatu  peralatan low speed  dapat  dapat hanya menggunakan ceramic resonator  untuk  untuk menghasilkan clock nya. Namun, suatu peralatan high speed  harus  harus menggunakan crystal  yang  yang presisi.

III.4 Spesifikasi V BUS

Tegangan yang dapat diberikan oleh host USB, VBUS, berkisar antara 4.4V sampai 5.25B. Suatu peralatan USB akan menyatakan pemakaian arusnya dalam satuan per 2 mA  pada saat host   melakukan enumeration. enumeration. Sebuah peralatan tidak bisa menaikkan konsumsi arusnya lebih dari yang telah dispesifikasikan pada saat konfigurasi. Terdapat 3 jenis  peralatan USB : 

 Low-power bus powered powered device



 High-power bus powered device



Self-powered device

Suatu low-power bus powered device mengambil device  mengambil arus sepenuhnya dari V BUS dan tidak  boleh mengambil arus lebih dari satu unit load  yang  yang besarnya 100 mA. Suatu high-power bus  powered device mengambil device  mengambil arus sepenuhnya dari V BUS dan tidak boleh mengambil arus lebih dari satu unit load   pada saat konfiurasi, setelah itu, sesuai spesifikasi yang dideskripsikan  pada saat enumeration, enumeration, ia dapat mengkonsumsi sampai maksimum 5 unit load   (500 mA). Suatu  self-powered device dapat device dapat mengambil arus dari V BUS  sampai maksimal sebesar 1 unit load   dan menggunakan suplai eksternal untuk sisa kebutuhannya. Apabila karena suatu kondisi maka suplai eksternal mengalami gangguan peralatan jenis ini harus diatur agar tidak menggunakan lebih dari 100 mA. Apabila host  mematikan  mematikan VBUS karena suatu hal, maka suatu  self-powered device harus device harus sudah menonaktifkan resistor pull-up resistor  pull-up atau  atau pull-down  pull-down ke  ke D+ atau D(yang digunakan untuk identifikasi kecepatan) tidak lebih dari 10 detik.

9 Untuk membatasi arus sesaat (inrush current)  current)  pada saat suatu peralatan ditancapkan (plugged), (plugged), maka kapasitor decuupling  yang  yang boleh digunakan adalah maksimum 10 uF. Untuk mencegah timbulnya  flyback   yang muncul pada ujung kabel pada saat suatu peralatan dilepaskan (unplugged), (unplugged), maka harus digunakan kapasitor decoupling  dengan   dengan ukuran minimal 1 uF.

Suspend nd M ode  III.5 Suspe

Pada saat komputer memasuki mode  suspend maka suatu peralatan USB hanya boleh menggunakan arus maksimal sebesar 500 uA untuk setiap unit load  yang   yang telah diminta pada saat konfigurasi. Arus ini termasuk arus yang mengalir pada resistor  pull-up   pull-up  dan  pull-down yang digunakan oleh peralatan tersebut. Suatu peralatan USB harus masuk ke mode  suspend  apabila  apabila tidak ada aktifitas apapun  pada bus  bus  selama lebih dari 3 mS. Setelah itu, peralatan mempunyai waktu maksimal 7 mS untuk masuk ke mode  suspend . Ini berarti 10 mS setelah aktifitas pada bus  bus  berakhir total, semua peralatan USB harus sudah masuk ke mode  suspend . Peralatan USB dalam mode  suspend  harus  harus tetap mengaktifkan resistor pull-up resistor  pull-up seleksi  seleksi kecepatannya untuk tetap terkoneksi dengan host atau hub. hub. USB mengirimkan paket khusus yang bernama  start of frame  frame  atau keep alive  alive  secara  periodik untuk mencegah agar aktifitas bus tidak bus tidak terhenti sama sekali pada saat tidak ada data. Spesifikasi paket khusus ini adalah : 

 High speed bus akan bus akan mengirim micro-frame setiap micro-frame setiap 125.0 uS +/- 62.5 nS



 Full speed bus akan bus akan mengirim frame mengirim frame setiap  setiap 1.0 mS +/- 500 nS



 Low speed bus  bus  akan mengirim sebuah keep-alive, keep-alive, yang adalah suatu kode  End of  Packet (EOP) setiap 1.0 mS hanya dan hanya jika tidak ada low speed  data  data yang perlu dikirim.

Suatu peralatan USB akan kembali aktif apabila ia mendeteksi adanya sembarang sinyal pada bus. bus. Peralatan yang memiliki kemampuan remote wakeup diperbolehkan wakeup diperbolehkan untuk memberikan sinyal pada host  untuk  untuk meminta host kembali aktif.

IV. Protokol USB

Tidak seperti RS232 dimana data yang dikirim tidak memiliki peraturan tertentu, USB tersusun atas beberapa layer protokol. Protokol layer bawah pada umumnya dikontrol langsung oleh IC USB cotroller  sedangkan   sedangkan  software hanya  software hanya perlu mengatur layer yang lebih tinggi.

10 Setiap transaksi USB terdiri atas : 

Token packet , merupakan header yang mendefinisikan paket apa selanjutnya yang mengikutinya.



Optional data packet , yang berisi data sebenarnya (payload). (payload).



Status packet , yang digunakanan untuk meng- acknowledge  acknowledge  transaksi dan sebagai media untuk melakukan error correction. correction.

Sistem USB adalah terpusat pada host , ini berarti suatu peralatan USB tidak dapat mengirim data pada host  tanpa  tanpa diminta. Host  diminta.  Host  akan  akan mengirim token packet  yang  yang berisi kode apakah host  akan mengirim atau meminta data ke atau dari device. device.

IV.1 Struktur Paket USB

Data pada USB dikirimkan LSB-nya terlebih dahulu. Paket USB pada umumnya tersusun atas beberapa field  beberapa field  :  : 

, setiap paket harus diawali dengan  field   ini. Field  ini.  Field  ini   ini terdiri atas 8 bit pada Sync  low dan low dan full  full speed dan 32 bit pada high speed . Paket ini berguna untuk untuk melakukan sinkronisasi clock  antara  antara host  dan  dan device. device.



PID, PID adalah Packet adalah  Packet ID. ID. Paket ini berguna sebagai identifikasi dari tipe paket

yang sedang dikirim. Group

PID Value

Packet Identifier

Token

0001

OUT Token

1001

IN Token

0101

SOF Token

1101

SETUP Token

0011

DATA0

1011

DATA1

0111

DATA2

1111

MDATA

0010

ACK Handshake

1010

 NAK Handshake

1110

STALL Handshake

0110

 NYET (No Response Yet)

Data

Handshake

11

Special

1100

PREamble

1100

ERR 

1000

Split

0100

Ping

Terdapat 4 bit untuk setiap ID, tetapi untuk memastikan agar diterima secara tepat maka 4 bit tersebut di-invert  di-invert   dan diulang sehingga total menjadi 8 bit sebagai  berikut : PID0 

PID1

PID2

PID3

nPID0

nPID1

nPID2

nPID3

ADDR , paket ini berukuran 7 bit dan berisi alamat ke device  device  manakah paket ini

ditujukan. Alamat 0 adalah tidak valid. 

ENDP, paket ini berukuran 4 bit sehingga memungkinkan untuk mengakses

sampai 16 endpoint . Namun, low speed device hanya device  hanya boleh memiliki maksimum 4 endpoint . 

CRC, suatu cyclic redundancy checks  checks  diterapkan pada setiap data yang dikirim.

Setiap token packet  memiliki   memiliki 5 bit CRC sedangkan paket data memiliki CRC 16  bit. 

packet). Ditransmisikan dalam wujud Single EOP, menunjukan akhir paket (end of packet).  Ended Zero (SE0) Zero (SE0) selama kira-kira waktu 2 bit dan diikuti dengan sebuah J selama waktu 1 bit.

IV.2 Tipe-Tipe paket USB

Terdapat 4 jenis paket yang berbeda pada USB : 

, menunjukan tipe transaksi : Tok en Packet 

o I n , menunjukkan bahwa host  ingin  ingin meminta data , menunjukkan bahwa host  ingin  ingin mengirim data Ou t  o Out  , digunakan untuk memulai control transfer . o Setup  Paket ini memiliki format sebagai berikut : Sync

PID

ADDR  ENDP

CRC5

EOP

12 

, terdapat dua tipe data untuk USB 1.1, yaitu : Data Dat a Packet  Packet 

o Data0 o Data1 USB 2.0 memiliki jenis data tambahan :

o Data2 o MData Paket ini memiliki format sebagai berikut : Sync

PID

Data

CRC16

EOP

Ukuran data maksimum untuk low-speed device  device  adalah 8 byte, byte, untuk  full-speed device adalah device adalah 1023 byte dan byte dan untuk high-speed device adalah device adalah 1024 byte. byte. 

, paket ini hanya berisi PID dan memiliki 3 tipe : H andshake Packet 

o ACK , suatu acknowledgment   yang menunjukkan bahwa paket telah dikirim dengan sukses.

o NAK , suatu tanda bahwa device  device  untuk sementara waktu tidak dapat menerima atau mengirim data. Dalam transaksi tipe interrupt   juga digunakan untuk memberi informasi pada host  bahwa   bahwa tidak ada data yang harus dikirim. device dalam kondisi stall  kondisi  stall  o STALL, suatu kondisi yang menyatakan bahwa device dalam sehingga dibutuhkan tindakan dari host . Secara lengkap, paket ini memiliki format sebagai berikut : Sync

PID

EOP

, tersusun atas  frame   frame  berukuran 11 bit yang Start of Frame(SOF) Packet  digunakan untuk mencegah agar bus  bus  tidak pernah benar-benar idle. idle. Paket ini memiliki format sebagai berikut : Sync

PID

Frame Number

CRC5

EOP

IV.3 Endpoint dan Pipe ?

Suatu endpoint  dapat   dapat dideskripsikan sebagai  sources or sinks of data. data. Suatu endpoint  dapat dikonfigurasi sebagai output buffer  (menerima   (menerima data dari host ) atau sebagai input buffer  (untuk mengirim data ke host ). ). Suatu peralatan USB dapat memiliki satu atau beberapa endpoint , namun, harus selalu mendukung endpoint zero (EP0) zero (EP0) yang akan selalu digunakan untuk menerima kontrol baik pada saat enumeration atau enumeration atau pada saat operasional.

13 Pada saat peralatan USB mengirim dan menerima data ke dan dari endpoint , maka client software akan mentransfer data tersebut melalui sesuatu yang disebut dengan  pipe.  pipe. Suatu  pipe   pipe  adalah sebuah logical connection  connection  antara host   dan endpoint . Suatu  pipe   pipe  juga dikonfigurasikan oleh beberapa parameter : 

Besarnya bandwidth yang bandwidth yang dialokasikan untuknya.



Arah aliran data (out  (out  atau  atau in). in).



Ukuran paket atau buffer  maksimum.  maksimum.



Tipe transfer (control  (control , bulk , interrupt  atau  atau isochronous). isochronous).

Suatu peralatan USB selalu dan harus memiliki sebuah default pipe yaitu pipe yaitu bi-directional pipe yang dihubungkan dengan endpoint zero out (EP0 OUT) dan endpoint zero in (EP0 IN). Terdapat dua jenis pipe jenis pipe :  : 

, tidak memiliki format data yang khusus. Melakukan transfer data Str eam Pi pe  secara sekuensial sesuai arah yang telah dikonfigurasikan sebelumnya. Digunakan untuk transfer data bulk , interrupt  dan  dan isochronous. isochronous.



, memiliki format data khusus. Merupakan  pipe   pipe  khusus yang M ess essage Pipe  digunakan untuk transfer data control .

ransfer  IV.3.1 Control T ransfer 

Digunaka untuk operasi perintah dan status. Diperlukan untuk melakukan kontrol pada  peralatan USB pada saat enumeration maupun enumeration maupun operasional. Transfer tipe ini dapat dikirimkan sewaktu-waktu oleh host   dan selalu ada bandwidth  bandwidth  yang dicadangkan untuknya. Pada kecepatan rendah, ukuran paket kontrol adalah harus selalu 8 byte. byte. Pada kecepatan penuh (full  speed) ukuran  speed) ukuran paket ini adalah harus selalu 64 byte. byte. Sedangkan pada kecepatan tinggi dapat  berukuran 8/16/32/64 8/16/32/64 byte. byte. Control transfer  dapat  dapat terdiri sampai 3 tahap : 

, adalah pada saat request  dikirimkan.  dikirimkan. Terdiri atas 3 paket, yaitu : Setu Setup p Stage 

o Setup Token, Token, yang berisi alamat dan nomor endpoint o  Data Packet , yang selalu memiliki PID Data0, digunakan untuk mendeskripsikan request .

o  Handshake Packet , berupa ACK yang akan dikirimkan oleh peralatan apabila data kontrol yang diterima benar (PID dan CRC benar). Apabila terjadi kesalahan maka device akan device akan dan harus membiarkan (ignore) paket (ignore) paket kontrol tersebut tanpa mengirim NAK ataupun STALL.

14 

, bersifat opsional dan dapat tersusun atas satu atau beberapa transfer Data Dat a Stage  Stage  IN atau OUT. Prinsip pengiriman data adalah sebagi berikut :

o Tipe IN, host  ingin  ingin menerima data kontrol dari device. device. Apabila Setup Stage yang telah diterima sebelumnya (berisi permintaan IN) benar maka device akan mengirimkan data yang diminta atau NAK apabila tidak ada data yang dikirim.   ingin mengirim data ke device. device. Setelah Setup Stage maka Stage  maka o Tipe OUT, host  ingin host   akan langsung mengirimkan data yang dimaksud. Apabila device sukses menerima maka device akan device akan mengirim ACK, apabila sedang sibuk akan mengirim NAK, sedangkan apabila ada kesalahan pada endpoint  maka akan dikirim STALL.



, digunakan untuk melaporkan hasil dari request  secara  secara keseluruhan. Status Stage  Stage  berisi tipe IN maka setelah host  menerima  menerima data dengan o Apabila Setup Stage berisi  benar dari device,  akan mengirim token OUT yang diikuti dengan  zero device, host  akan length data packet .  Device   Device  akan mengirim ACK apabila telah siap menerima perintah selanjutnya, apabila masih sibuk akan dikirim NAK. Apabila terjadi kesalahan kesala han akan dikirim STALL.

15

o OUT, apabila Setup Stage  Stage   berisi tipe OUT maka setelah mengirim data, host   akan mengirim token IN yang akan direspon oleh device  device  dengan mengirim  zero length Data0 untuk mengindikasikan sukses dan NAK untuk meminta pengiriman diulang. Apabila ada kesalahan, akan dikirim STALL.

Pada saat enumeration maka enumeration maka untuk meminta device descriptor  dari   dari device, device, maka host akan mengirim Setup Packet  pada  pada EP0 yang tersusun atas 3 tahap : 1. Setup Token

2. Data0

Packet

3. Ack Handshake

Sync

PID

ADDR  ENDP

CRC5

EOP

Address & Endpoint Number 

Sync

PID

Data0

CRC16

EOP

Device Descriptor Request

Sync

PID

EOP

Device Ack. Setup Packet

Apabila device dapat device dapat menerima 3 tahap diatas dengan baik, maka IN request  selanjutnya   selanjutnya dari host  maka  maka device akan device akan mengirimkan data-datanya dalam 1x3 atau 2x3 tahap : 1. In Token

Sync

PID

ADDR

2. Data0 Packet

Sync

PID

3. Ack Handshake

Sync

PID

EOP

1. In Token

Sync

PID

ADDR

2. Data1 Packet

Sync

PID

3. Ack Handshake

Sync

PID

ENDP

Data0

CRC16

EOP  Address & Endpoint Endpoint Number  Number 

EOP

First 8 Bytes of Device Descriptor 

Host Acknowledges Packet

ENDP

Data1

EOP

CRC5

CRC5

CRC16

EOP  Address & Endpoint Endpoint Number  Number 

EOP

Last 4 bytes + Padding

Host Acknowledges Packet

16 Jika sukses make host   akan mengirim  zero length packet .  Device   Device  akan membalas dengan  paket status : 1. Out Token

Sync

PID

ADDR  ENDP

CRC5

EOP

Address & Endpoint Number  Nu mber 

2. Data0 Packet

Sync

PID

Data0

CRC16

EOP

Zero Length Packet

3. Ack Handshake

Sync

PID

EOP

Device Ack. Entire Transaction

IV.3.2 I nterr nterr upt T ransfer  ransfer 

Berbeda dengan mikrokontroler, dimana interrupt   dibangkitkan oleh device, device, pada USB interrupt  di- pooling   pooling   oleh host   dalam batas waktu tertentu. Transfer jenis ini memiliki spesifikasi sebagai berikut : 





 Latency maksimum  Latency maksimum dijamin Stream pipe satu arah (uni-directional)  Error detection

Pada kecepatan rendah, ukuran data maksimum adalah 8 byte. byte. Pada kecepatan penuh (full speed)  speed)  ukuran data maksimum adalah 64 byte. byte. Sedangkan pada kecepatan tinggi dapat mencapai 1024 byte. byte.

17 ansf er  IV.3.3 I sochr onous Tr ansf

Tipe transfer ini digunakan pada umumnya untuk melakukan  streaming  pada data audio dan video yang sangat sensitif dengan waktu. Transfer jenis ini memiliki spesifikasi sebagai berikut : 



Terjadi secara periodik   Bandwidth   Bandwidth  dijamin sehingga pada saat  setup   setup  akan ditolak (denied)  (denied)  oleh hosi apabila bandwidth bus tersisa bus  tersisa tidak mencukupi





Stream pipe satu arah (uni-directional)  Error detection dengan CRC namun host tidak akan mengirim ulang data yang salah





Pada mode full  mode full  &  & high speed saja  No data toggling  (data  (data tidak berubah-ubah tipe dari Data0 dan Data1)

Pada kecepatan penuh (full speed)  speed)  ukuran data maksimum adalah 1023 byte. byte. Sedangkan pada kecepatan tinggi dapat mencapai 1024 byte. byte. Tidak ada handshake  packet  yang dapat dikirim oleh device untuk device untuk menyatakan sukses tidaknya transfer (ACK, NAK atau STALL).

Transfer  IV.3.4 Bul k Transfer 

Digunakan untuk mengirimkan data berukuran besar secara sewaktu-waktu. Hanya dapat menggunakan sisa bandwidth  bandwidth  yang tersisa (tidak dipakai oleh tipe-tipe transfer yang lainnya). Transfer jenis ini memiliki spesifikasi sebagai berikut : 

Digunakan untuk mentransfer large bursty data



 Error detection dengan CRC dan host akan mengirim ulang data yang salah



 Bandwidth dan  Bandwidth dan latency tidak latency tidak dijamin



Stream pipe satu arah (uni-directional)



Pada mode full  mode full  &  & high speed saja

Pada kecepatan penuh (full speed)  speed)  ukuran paket adalah 6/16/32/64 byte. byte. Sedangkan pada kecepatan tinggi dapat mencapai 512 byte. byte.

18

IV.4 Manajemen Bandwidth 

Transfer periodik (interrupt  (interrupt  dan   dan isochronous) isochronous) yang harus dikonfigurasikan pada saat enumeration hanya enumeration hanya akan diterima sampai maksimal 90% dari  frame total  frame total yang tersedia pada  full speed , sedangkan pada high speed  hanya  hanya diperbolehkan sampai 80% dari microframe total yang ada. Mengingat 10% bandwidth dicadangkan bandwidth dicadangkan untuk kontrol maka, pada bus yang bus yang penuh, transfer tipe bulk  akan  akan mendapat latency yang latency yang besar.

IV.5 USB Descriptor 

Deskripsi dari peralatan USB tersusun atas hierarki sebagai berikut :

19 Setiap descriptor  diatas  diatas tersusun atas format sebagai berikut : Offset

Field

Size

Value

0  bLength

1

 Number 

Size of Descriptor in Bytes

1  bDescriptionType

1

Constant

DescriptorType

2

n

...

Start of parameters for descriptor 

...

Description

Apabila dalam praktek, ukuran dari descriptor  yang   yang diterima host  lebih   lebih kecil atau lebih besar dari yang dispesifikasikan maka host  akan  akan membiarkan hal itu. returned.

Descrii ptor  IV.5.1 Device Descr

Setiap peralatan USB hanya boleh memiliki sebuah device descriptor .  Descriptor  ini   ini tersusun sebagai berikut : Offset

Field

Size

Value

Description

0  bLength

1

 Number 

Size of the Descriptor in Bytes (12 bytes)

1  bDescriptorType

1

Constant

Device Descriptor (0x01)

2  bcdUSB

2

BCD

USB Specification Number which device complies too.

4  bDeviceClass

1

Class

Class Code (Assigned by USB Org) If equal to Zero, each interface specifies it’s own class code If equal to 0xFF, the class code is vendor specified. Otherwise field is valid Class Code.

5  bDeviceSubClass

1

SubClass

Subclass Code (Assigned by USB Org)

6  bDeviceProtocol

1

Protocol

Protocol Code (Assigned by USB Org)

7  bMaxPacketSize

1

 Number 

Maximum Packet Size for Zero Endpoint. Valid Sizes are 8, 16, 32, 64

8

idVendor 

2

ID

Vendor ID (Assigned by USB Org)

10

idProduct

2

ID

Product ID (Assigned by Manufacturer)

12  bcdDevice

2

BCD

Device Release Number 

14

iManufacturer 

1

Index

Index of Manufacturer String Descriptor 

15

iProduct

1

Index

Index of Product String Descriptor 

16

iSerialNumber 

1

Index

Index of Serial Number String Descriptor 

17  bNumConfigurations

1

Integer 

 Number of Possible Configurations

20 bcdUSB  menyatakan versi USB terbaru yang didukung oleh device. device. Harga ini dikodekan

dalam BCD (Binary Coded Decimal) dalam Decimal)  dalam bentuk 0xJJMN dengan JJ adalah versi mayor, M adalah versi minor dan N adalah versi sub minor. Pada USB 1.0 harga tersebut adalah 0x0100, untuk USB 1.1 adalah 0x0110 dan untuk USB 2.0 adalah 0x0200.

bDeviceClass, bDeviceSubClass bDeviceSubClass dan bDeviceProtocol  digunakan oleh sistem operasi untuk

mengetahui kelas dari device. device. Apabila berisi 0x00, berarti satu device  device  dapat mendukung  banyak class yang class yang masing-masing akan dideskripsikan pada interface descriptor .

bMaxPacketSize  menunjukkan ukuran paket maksimum untuk EP0.

idVendor dan idProduct digunakan oleh sistem operasi untuk me-load me- load driver  yang  yang sesuai.

Vendor ID ditetapkan oleh USB-IF.

device yang dibuat oleh vendor. bcdDevice yang dikodekan dalam BCD berisi vers dari device yang

iManufacturer , iProduct   dan iSerialNumber  merupakan data  string   opsional yang berisi

detail dari peralatan, apabila tidak digunakan harus diisi index nol.

device. bNumConfigurations  menunjukkan jumlah konfigurasi yang didukung device.

Descri ptor IV.5.2 Confi gurati on Descri

Satu device dapat device dapat memiliki lebig dari satu konfigurasi. Setelah host  memeriksa   memeriksa semua konfigurasi yang didukung device  device  maka host   akan mengirimkan perintah (control packet) yang berisi nomor konfigurasi yang diterima. Offset

Field

Size

Value

0  bLength

1

 Number 

Size of Descriptor in Bytes

1  bDescriptorType

1

Constant

Configuration Descriptor (0x02)

2

2

 Number 

Total length in bytes of data r eturned

4  bNumInterfaces

1

 Number   Number of Interfaces

5  bConfigurationValue

1

 Number 

Value to use as an argument to select this configuration

6

1

Index

Index of String Descriptor describing this configuration

wTotalLength

iConfiguration

Description

21 Offset

Field

Size

Value

Description

7  bmAttributes

1

Bitmap

D7 Reserved, set to 1. (USB 1.0 Bus Po wered) D6 Self Powered D5 Remote Wakeup D4..0 Reserved, set to 0.

8  bMaxPower 

1

mA

Maximum Power Consumption in 2mA units

Suatu konfigurasi pada dasarnya adalah suatu hirarki dengan ukuran total wTotalLength yang berbentuk :

bNumInterfaces  menunjukkan jumlah interface untuk interface untuk konfigurasi tersebut.

bConfigurationValue   berisi kode yang akan dikembalikan host   pada saat menyetujui salah

satu konfigurasi yang ditawarkan.

iConfiguration  adalah indek ke suatu string  suatu string  yang  yang berisi teks informasi tentang konfigurasi.

device  adalah  self-powered   ataukah menggunakan bmAttributes   berisi petunjuk apakah device  suplai dari bus dan bus dan apakah device tersebut device tersebut mendukung remote wakeup. wakeup.

22 bMaxPower menunjukkan arus maksimum yang akan dipakai device dalam device dalam satuan per 2 mA

sampai maksimum 500 mA.

nterf ace ace Descri Descri ptor IV.5.3 I nterf Offset

Field

Size

Value

0  bLength

1

 Number 

Size of Descriptor in Bytes (9 Bytes)

1  bDescriptorType

1

Constant

Interface Descriptor (0x04)

2  bInterfaceNumber 

1

 Number 

 Number of Interface

3  bAlternateSetting

1

 Number 

Value used to select a lternative setting

4  bNumEndpoints

1

 Number 

 Number of Endpoints used for this interface

5  bInterfaceClass

1

Class

Class Code (Assigned by USB Org)

6  bInterfaceSubClass

1

SubClass

Subclass Code (Assigned by USB Org)

7  bInterfaceProtocol

1

Protocol

Protocol Code (Assigned by USB Org)

8

1

Index

Index of String Descriptor Describing this interface

iInterface

Description

bInterfaceNumber  indkes dari descriptor yang dimulai dari nol.

indicates the index of the interface descriptor. This should be zero based, and incremented once for each new interface descriptor.

bAlternativeSetting  dapat digunakan untuk mendefinisikan interface  interface  alternatif yang dapat

dipilih pada saat device operasional. device operasional.

23 bNumEndpoints berisi jumlah endpoint  yang  yang dimiliki device tanpa device tanpa menghitung EP0.

bInterfaceClass,

bInterfaceSubClass   dan

bInterfaceProtocol

digunakan

untuk

mendefinisikan class  class  standar yang didukung oleh device, device, misalnya HID (Human Interface  Device),  Device), communications, communications, mass storage, storage, dan lain-lain.

iInterface  berisi deskripsi string deskripsi string dari interface. interface.

IV.5.4 Endpoint D escri ptor ptor

Digunakan untuk mendeskripsikan endpoint   selain EP0. Memiliki struktur sebagai  berikut : Offset

Field

Size

Value

Description

0  bLength

1

 Number 

Size of Descriptor in Bytes (7 bytes)

1  bDescriptorType

1

Constant

Endpoint Descriptor (0x05)

2  bEndpointAddress

1

Endpoint

Endpoint Address Bits 0..3b Endpoint Number. Bits 4..6b Reserved. Set to Zero Bits 7 Direction 0 = Out, 1 = In (Ignored for Control Endpoints)

24 Offset

Field

3  bmAttributes

Size

1

Value

Bitmap

Description

Bits 0..1 Transfer Type 00 = Control 01 = Isochronous 10 = Bulk 11 = Interrupt Bits 2..7 are reserved.

If Isochronous endpoint, Bits 3..2 = Synchronisation Type (Iso Mode) 00 = No Synchonisation 01 = Asynchronous 10 = Adaptive 11 = Synchronous Bits 5..4 = Usage Type (Iso Mo de) 00 = Data Endpoint 01 = Feedback Endpoint 10 = Explicit Feedback Data Endpoint 11 = Reserved 4

wMaxPacketSize

2

 Number 

Maximum Packet Size this endpoint is capable of sending or receiving

6  bInterval

1

 Number 

Interval for polling endpoint data transfers. Value in frame counts. Ignored for Bulk & Control Endpoints. Isochronous must equal 1 and field may range from 1 to 255 for interrupt endpoints.

bEndpointAddress  menunjukkan nomor endpoint  yang  yang sedang dideskripsikan.

bmAttributes  menunjukkan tipe endpoint .

wMaxPacketSize menunjukkan ukuran paket maksimum.

bInterval  menunjukkan interval  pooling  dalam   dalam satuan frame satuan  frame,, ini berarti kelipatan dari setiap

1 mS untuk low / full speed  dan  dan 125 uS untuk high speed .

25 IV.5.5 Stri ng D escri ptor

Digunakan

untuk

menampung

informasi-informasi

tambahan.

Apabila

tidak

digunakan haris diisi dengan nol. Dikodekan dalam format Unicode. String   indeks 0 harus  berisi daftar dari bahasa yang didukung. Format untuk  string descriptor zero adalah zero adalah sebagai  berikut : Offset

Field

Size

Value

Description

0  bLength

1

 Number 

Size of Descriptor in Bytes

1  bDescriptorType

1

Constant

String Descriptor (0x03)

2

wLANGID[0]

2

number 

Supported Language Code Zero (e.g. 0x0409 English - United States)

4

wLANGID[1]

2

number 

Supported Language Code One (e.g. 0x0c09 English - Australian)

n

wLANGID[x]

2

number 

Supported Language Code x (e.g. 0x0407 German - Standard)

Sedangkan string-string  Sedangkan string-string  lainnya  lainnya memiliki format sebagai berikut : Offset

Field

Size

Value

Description

0

Blength

1

 Number 

Size of Descriptor in Bytes

1

BdescriptorType

1

Constant

String Descriptor (0x03)

2

Bstring

n

Unicode

Unicode Encoded String

IV.6 Spesifikasi Request 

Suatu request   harus sudah diproses dalam waktu maksimum 5 detik, kecuali untuk  beberapa yang khusus khusus sebagai berikut : 

Standard Device requests tanpa requests tanpa data stage harus stage harus selesai dalam 50 mS.



Standard Device requests dengan requests dengan data stage harus stage harus mulai mengirim data dalam 500 mS. Setiap paket data berurutan harus dikirim dalam maksimal 500 mS setelah  paket sebelumnya. Status stage harus stage harus selesai maksimal dalam 50 mS setelah paket data terakhir ditransmisikan.



SetAddress command  harus  harus selesai dalam 50 mS, untuk kemudian device memiliki device memiliki setidaknya 2 mS untuk mengubah address internalnya address internalnya sebelum request  selanjutnya  selanjutnya dikirimkan.

26 Setiap request  memiliki  memiliki format sebagai berikut : Offset

Field

Size

Value

Description

0  bmRequestType

1

Bit-Map

D7 Data Phase Transfer Direction 0 = Host to Device 1 = Device to Host D6..5 Type 0 = Standard 1 = Class 2 = Vendor 3 = Reserved D4..0 Recipient 0 = Device 1 = Interface 2 = Endpoint 3 = Other 4..31 = Reserved

1  bRequest

1

Value

Request

2

wValue

2

Value

Value

4

wIndex

2

Index or Offset

Index

6

wLength

2

Count

 Number of bytes to transfer if there is a data phase

bmRequestType  berisi arah aliran, tipe dan resipien dari request .

 yang diminta. bRequest berisi kode request  yang

wValue  dan wIndex  digunakan untuk menunjukkan parameter-parameter yang akan

mengikuti.

phase). wLength berisi panjang data yang akan mengikuti (bila ada data phase).

evi ce Reques Requests  ts  IV.6.1 Standar d D evi

Terdapat 8 jenis device request  standar   standar yang dispesifikasikan oleh USB seperti yang ditunjukkan pada tabel berikut ini : bmRequestType

bRequest

wValue

wIndex

wLength

Data

1000 0000b

GET_STATUS (0x00)

Zero

Zero

Two

Device Status

0000 0000b

CLEAR_FEATURE (0x01)

Feature Selector 

Zero

Zero

 None

0000 0000b

SET_FEATURE (0x03)

Feature Selector 

Zero

Zero

 None

27 bmRequestType

bRequest

wValue

wIndex

wLength

Data

0000 0000b

SET_ADDRESS (0x05)

Device Address

Zero

Zero

 None

1000 0000b

GET_DESCRIPTOR (0x06)

Descriptor Type & Index

Zero or Language ID

Descriptor Length

Descriptor 

0000 0000b

SET_DESCRIPTOR (0x07)

Descriptor Type & Index

Zero or Language ID

Descriptor Length

Descriptor 

1000 0000b

GET_CONFIGURATION (0x08)

Zero

Zero

1

Configuration Value

0000 0000b

SET_CONFIGURATION (0x09)

Configuration Value

Zero

Zero

 None

Get Status request   akan membuat device  device  mengembalikan 2 byte  byte  pada data phase  phase   dengan format sebagai berikut : D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

Reserved

D5

D4

D3

D2

D1

D0

Remote Wakeup

Self Powered

 dan   dan Set F eatur e    dapat digunakan untuk mengeset suatu harga boolean.  dapat boolean. Fitur Clear Clear F eature  yang dapat diset adalah DEVICE_REMOTE_WAKEUP DEVICE_REMOTE_WAKEUP dan TEST_MODE.

  digunakan pada saat enumerasi untuk memberikan alamt unik pada peralatan Set Set A ddr ess  ess  USB. Suatu USB device akan device  akan mengeset alamat internalnya dengan alamat yang diberikan Set  Address setelah  Address setelah keseluruhan status keseluruhan status stage komplit. stage komplit.

Get D escri cr i ptor atau Set D escri cr i ptor digunakan untuk mengambil dan menentukan informasi

mengenai suatu deskriptor. Permintaan untuk mengirim configuration descriptor   akan mengembalikan keseluruhan device descriptor  lengkap   lengkap dengan semua interface dan endpoint descriptor   pada satu transaksi. Suatu interface dan endpoint descriptor   tidak dapat diakses secara langsung la ngsung dengan request ini. String descriptor  mengandung  mengandung ID dari suatu bahasa untuk memungkinkan dukungan dukungan pada banyak bahasa.

28 Get Configuration digunakan untuk mengambil informasi mengenai konfigurasi aktif dari

suatu peralatan. Harga nol apabila dikembalikan menyatakan bahwa

device  device  tidak

terkonfigurasi sedangkan harga bukan nol menunjukkan bahwa device telah device telah terkonfigurasi.

device.  Request   ini memberikan Set Configuration  digunakan untuk mengaktifkan suatu device. harga bConfigurationValue (pada byte  byte  rendah dari wValue) yang telah dikirimkan melalui configuration descriptor  sebelumnya  sebelumnya untuk menyatakan persetujuan host  terhadap  terhadap konfigurasi yang diminta.

Requests  ts  IV.6.2 Standard I nr terf ace Reques

Terdapat 5 jenis interface request  standar  standar yang dispesifikasikan oleh USB seperti yang ditunjukkan pada tabel berikut ini : bmRequestType

bRequest

wValue

wIndex

wLength

Data

1000 0001b

GET_STATUS (0x00)

Zero

Interface

Two

Interface Status

0000 0001b

CLEAR_FEATURE (0x01)

Feature Selector 

Interface

Zero

 None

0000 0001b

SET_FEATURE (0x03)

Feature Selector 

Interface

Zero

 None

1000 0001b

GET_INTERFACE (0x0A)

Zero

Interface

One

Alternate Interface

0000 0001b

SET_INTERFACE (0x11)

Alternative Setting

Interface

Zero

 None

interface yang dimana request  tersebut  tersebut ditujukan dengan format sebagai wIndex berisi nomor interface yang  berikut : D15

D14

D13

D12

D11

D10

D9

D8

D7

Reserved

D6

D5

D4

D3

D2

D1

D0

Interface Number 

Get Statu Statu s   digunakan untuk meminta status dari suatu interface.  digunakan interface. Untuk sekarang, device harus device harus

mengembalikan dua byte, byte, yaitu : 0x00, 0x00. Fungsi ini dicadangkan dicadangkan untuk masa depan.

 dan  dan Set F eatur  digunakan untuk menagaktifkan dan menonaktifkan fitur dari  digunakan Clear Clear F eature  eatur e  interface. interface. Fungsi ini dicadangkan untuk masa depan.

29   dan Set I nterf ace    digunakan untuk mengaktifkan konfigurasi interface Get Interface  alternatif.

Requests IV.6.3 Standar d Endpoi nt Requests

Terdapat 4 jenis interface request  standar  standar yang dispesifikasikan oleh USB seperti yang ditunjukkan pada tabel berikut ini : bmRequestType

bRequest

wValue

Windex

wLength

Data

1000 0010b

GET_STATUS (0x00)

Zero

Endpoint

Two

Endpoint Status

0000 0010b

CLEAR_FEATURE (0x01)

Feature Selector  Endpoint

Zero

 None

0000 0010b

SET_FEATURE (0x03)

Feature Selector  Endpoint

Zero

 None

1000 0010b

SYNCH_FRAME (0x12)

Zero

Two

FrameNumber 

Endpoint

wIndex berisi informasi arah aliran data dan nomor endpoint  dengan  dengan format sebagai berikut : D15

D14

D13

D12

D11

D10

D9

D8

Reserved

D7

D6

Dir 

D5

D4

Reserved

D3

D2

D1

D0

Endpoint Number 

  digunakan untuk mengetahui apakah suatu endpoint   berada dalam keadaan  stall  Get Statu Statu s  atau halt . D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

Reserved

D1

D0 Halt

  dan Set F eatur e    digunakan untuk mengaktifkan atau mematikan fitur dari Clear Clear F eature  suatu endpoint . Untuk sekarang hanya ada satu fitur, yaitu ENDPOINT_HALT (0x00), yang memungkinkan host   untuk meng- stall  dan   dan meng-clear  meng-clear  suatu   suatu endpoint . Suatu endpoint  selain   selain EP0 sebaiknya dikonfigurasi untuk memiliki fitur ini.

 digunakan untuk melaporkan endpoint synchronisation frame. frame . Synch Fr ame 

V. Rangkaian Modul USB dengan AN2131QC

Dibawah ini digambarkan rangkaian modul USB  Interface dengan IC Cypress EZUZB AN2131QC. Kemudian tiga skema selanjutnya secara berturut-turut adalah skema rangkaian demo yang menggunakan modul tersebut.

30

31

32

33

34

35 VI. Program Demo Rangkaian Modul USB

Dibawah ini disertakan 4 buah program demo untuk digunakan pada board  rangkaian  rangkaian USB seperti yang digambarkan pada poin V diatas.

// ***** Demo Circuit : Buttons & LEDs // ***** #include #include #include

C++ Headers

// ***** USBI2CIO Header & Library extern "C" { #include } #pragma comment( lib, "usbi2cio" )

// ***** EZUSB I/O Port Configuration #define EZ_MODE 0x0001FF00 // ***** Circuit Selection #define EZ_SELECT_BAL 0x00070000 #define EZ_SELECT_ADDA 0x000F0000 #define EZ_SELECT_MASK 0x000F0000 // ***** For Buttons & #define EZ_WRMASK_BAL #define EZ_RDMASK_SW1 #define EZ_RDMASK_SW2

LEDs Circuit 0x000000FF 0x00000100 0x00000200

// ***** For ADC & DAC Circuit #define EZ_WRMASK_DAC_DTA 0x000000FF #define EZ_WRMASK_ADC_W R 0x00020000 #define EZ_WRMASK_ADC_R D 0x00040000 #define EZ_RDMASK_ADC_INT 0x00010000 #define EZ_RDMASK_ADC_DTA 0x0000FF00 // ***** The Main Program int main(void) { // ..... Variables unsigned char aucData[8] = { 1, 2, 4, 8, 16, 32, 64, 128 }; char cCnt, cDir, acSerial[9]; WORD wTmp; DWORD dwIn; HANDLE hDev; // ..... Initialization if((hDev = DAPI_OpenDeviceInstance("UsbI2cIo", NULL)) == INVALID_HANDLE_VALUE) goto ERROpen; if(DAPI_ConfigIoPorts(hDev, EZ_MODE) == 0) goto ERRConfig; if(DAPI_WriteIoPorts(hDev, EZ_SELECT_BAL, EZ_SELECT_MASK) == 0) goto ERRWrite; cDir = 1; // ..... Show some information printf("Found a USBI2CIO device :\n"); wTmp = DAPI_GetDllVersion(); printf(" DLL version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); wTmp = DAPI_GetDriverVersion(); printf(" Driver version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetFirmwareVersion(hDev, &wTmp); printf(" Firmware version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetSerialId(hDev, acSerial); printf(" Serial ID "); for(cCnt = 0; cCnt 7) cCnt = 0; if(cCnt < 0) cCnt = 7; // Wait Sleep(200); if(kbhit()) getch(); } // ..... Exiting DoExit:; DAPI_WriteIoPorts(hDev, 0x00000000, EZ_WRMASK_BAL); DAPI_CloseDeviceInstance(hDev); printf("Press any key to exit ...\n"); getch(); return(0); // ..... Error handlers ERROpen: printf("Couldn't open USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRConfig: DAPI_CloseDeviceInstance(hDev); printf("Set port configuration of USBI2CIO device failed !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRRead: DAPI_CloseDeviceInstance(hDev); printf("Error reading ports from USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRWrite: DAPI_CloseDeviceInstance(hDev); printf("Error writing ports to USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); }

37 // ***** Demo Circuit : ADC // ***** #include #include #include

C++ Headers

// ***** USBI2CIO Header & Library extern "C" { #include } #pragma comment( lib, "usbi2cio" )

// ***** EZUSB I/O Port Configuration #define EZ_MODE 0x0001FF00 // ***** Circuit Selection #define EZ_SELECT_BAL 0x00070000 #define EZ_SELECT_ADDA 0x000F0000 #define EZ_SELECT_MASK 0x000F0000 // ***** For Buttons & #define EZ_WRMASK_BAL #define EZ_RDMASK_SW1 #define EZ_RDMASK_SW2

LEDs Circuit 0x000000FF 0x00000100 0x00000200

// ***** For ADC & DAC Circuit #define EZ_WRMASK_DAC_DTA 0x000000FF #define EZ_WRMASK_ADC_W R 0x00020000 #define EZ_WRMASK_ADC_R D 0x00040000 #define EZ_RDMASK_ADC_INT 0x00010000 #define EZ_RDMASK_ADC_DTA 0x0000FF00 // ***** The Main Program int main(void) { // ..... Variables unsigned char ucData, ucOld; char cCnt, acSerial[9]; WORD wTmp; DWORD dwIn; HANDLE hDev; // ..... Initialization if((hDev = DAPI_OpenDeviceInstance("UsbI2cIo", NULL)) == INVALID_HANDLE_VALUE) goto ERROpen; if(DAPI_ConfigIoPorts(hDev, EZ_MODE) == 0) goto ERRConfig; if(DAPI_WriteIoPorts(hDev, EZ_SELECT_ADDA, EZ_SELECT_MASK) == 0) goto ERRWrite; if(DAPI_WriteIoPorts(hDev, 0x00000000, EZ_WRMASK_DAC_DTA) == 0) goto ERRWrite; // ..... Show some information printf("Found a USBI2CIO device :\n"); wTmp = DAPI_GetDllVersion(); printf(" DLL version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); wTmp = DAPI_GetDriverVersion(); printf(" Driver version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetFirmwareVersion(hDev, &wTmp); printf(" Firmware version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetSerialId(hDev, acSerial); printf(" Serial ID "); for(cCnt = 0; cCnt > 8); // Print the read value if(ucData != ucOld) { ucOld = ucData; printf("%03d\n", ucData); } // Wait if(kbhit()) { DAPI_CloseDeviceInstance(hDev); getch(); return(0); } } return(0); // ..... Error handlers ERROpen: printf("Couldn't open USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRConfig: DAPI_CloseDeviceInstance(hDev); printf("Set port configuration of USBI2CIO device failed !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRRead: DAPI_CloseDeviceInstance(hDev); printf("Error reading ports from USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRWrite: DAPI_CloseDeviceInstance(hDev); printf("Error writing ports to USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); }

39 // ***** Demo Circuit : DAC // ***** #include #include #include

C++ Headers

// ***** USBI2CIO Header & Library extern "C" { #include } #pragma comment( lib, "usbi2cio" )

// ***** EZUSB I/O Port Configuration #define EZ_MODE 0x0001FF00 // ***** Circuit Selection #define EZ_SELECT_BAL 0x00070000 #define EZ_SELECT_ADDA 0x000F0000 #define EZ_SELECT_MASK 0x000F0000 // ***** For Buttons & #define EZ_WRMASK_BAL #define EZ_RDMASK_SW1 #define EZ_RDMASK_SW2

LEDs Circuit 0x000000FF 0x00000100 0x00000200

// ***** For ADC & DAC Circuit #define EZ_WRMASK_DAC_DTA 0x000000FF #define EZ_WRMASK_ADC_W R 0x00020000 #define EZ_WRMASK_ADC_R D 0x00040000 #define EZ_RDMASK_ADC_INT 0x00010000 #define EZ_RDMASK_ADC_DTA 0x0000FF00 // ***** The Main Program int main(void) { // ..... Variables unsigned char ucData; char acSerial[9], cCnt; WORD wTmp; HANDLE hDev; // ..... Initialization if((hDev = DAPI_OpenDeviceInstance("UsbI2cIo", NULL)) == INVALID_HANDLE_VALUE) goto ERROpen; if(DAPI_ConfigIoPorts(hDev, EZ_MODE) == 0) goto ERRConfig; if(DAPI_WriteIoPorts(hDev, EZ_SELECT_ADDA, EZ_SELECT_MASK) == 0) goto ERRWrite; // ..... Show some information printf("Found a USBI2CIO device :\n"); wTmp = DAPI_GetDllVersion(); printf(" DLL version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); wTmp = DAPI_GetDriverVersion(); printf(" Driver version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetFirmwareVersion(hDev, &wTmp); printf(" Firmware version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetSerialId(hDev, acSerial); printf(" Serial ID "); for(cCnt = 0; cCnt > 8, wTmp & 0x00FF); wTmp = DAPI_GetDriverVersion(); printf(" Driver version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetFirmwareVersion(hDev, &wTmp); printf(" Firmware version %02d.%02d\n", wTmp >> 8, wTmp & 0x00FF); DAPI_GetSerialId(hDev, acSerial); printf(" Serial ID "); for(cCnt = 0; cCnt > 8); break; } } // Write port if(DAPI_WriteIoPorts(hDev, DWORD(ucData & ucTm), EZ_WRMASK_DAC_DTA) == 0) goto ERRWrite; // Update data if(ucTm) ucTm = 0; else ucTm = 255; // Wait if(kbhit()) { DAPI_CloseDeviceInstance(hDev); getch(); return(0); } } return(0); // ..... Error handlers ERROpen: printf("Couldn't open USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRConfig: DAPI_CloseDeviceInstance(hDev); printf("Set port configuration of USBI2CIO device failed !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRRead: DAPI_CloseDeviceInstance(hDev); printf("Error reading ports from USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); ERRWrite: DAPI_CloseDeviceInstance(hDev); printf("Error writing ports to USBI2CIO device !\n"); printf("Press any key to exit ...\n"); getch(); return(-1); }

43 VII. Daftar Pustaka

EZ-USB Manual Technical Reference, Cypress Semiconductor, www.cypress.com

http://computer.howstuffworks.com/usb.htm/printable

http://www.beyondlogic.org/usbnutshell/usb1.htm http://www.beyondlogic.org/usbnutshell/usb2.htm http://www.beyondlogic.org/usbnutshell/usb3.htm http://www.beyondlogic.org/usbnutshell/usb4.htm http://www.beyondlogic.org/usbnutshell/usb5.htm http://www.beyondlogic.org/usbnutshell/usb6.htm

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF