BAB3 - USB
February 14, 2019 | Author: cakMAD69 | Category: N/A
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