Apakah perangkat USB yang bekerja sendiri harus terhubung ke VCC dari port host?

16

Periferal USB mandiri menyediakan daya sendiri, jadi tidak apa-apa untuk menghubungkan hanya D +, D- dan GND ke port host, atau apakah Anda selalu harus menghubungkan + 5V juga, kemudian menunggu fase negosiasi untuk perangkat untuk memberi tahu tuan rumah bahwa itu swadaya dan karenanya tidak menginginkan kekuatan apa pun, terima kasih banyak?

Perangkat khusus yang saya cari didasarkan pada USB-to-serial adapter FTDI FT4232H, tapi saya benar-benar berharap untuk jawaban umum untuk pertanyaan itu.

kbro
sumber
1
FTDI memiliki banyak catatan aplikasi dan info tentang ini di lembar data mereka. Apakah Anda melihatnya di sana?
Gustavo Litovsky
Lembar data FTDI ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf menunjukkan VBUS yang terhubung ke RESET # melalui jembatan resistor, sehingga (mungkin) mencabut kabel USB menyebabkan perangkat melakukan reset (jika menggunakan bus) , jelas, mencabut kabel USB akan sepenuhnya mematikan daya perangkat!). Tetapi pertanyaannya adalah, apakah beban pada VBUS berarti sesuatu untuk host USB, dan apakah kurangnya beban dengan meninggalkan VBUS n / c merusak sesuatu di handshaking USB?
kbro
USB biasanya tidak tahu apakah ada sesuatu yang terhubung. Kecuali jika Anda menarik lebih dari 100mA, ia tidak dapat memastikan apakah ada sesuatu yang terhubung.
Gustavo Litovsky
@ GustavoLitovsky, sebenarnya, host USB tidak memiliki sarana sama sekali untuk membedakan antara arus atau arus 100 mA yang diambil dari port-nya. Satu-satunya cara yang didefinisikan dalam spesifikasi USB adalah ketika arus berlebih terjadi, yang jauh di atas 500 atau 900 mA. Namun, semuanya dapat dirancang menggunakan sirkuit ekstra dan pin GPIO ekstra.
Ale..chenski

Jawaban:

6

Jawaban umum untuk pertanyaan ini adalah ya, VBUS (+ 5V dari kabel) harus terhubung ke perangkat bahkan jika itu swadaya. Alasannya adalah sebagai berikut:

Untuk memulai proses koneksi di sisi host, perangkat harus menarik D + (dalam mode FS / HS), atau D- (dalam hal perangkat LS).

Namun, spesifikasi USB memiliki persyaratan wajib bahwa tidak ada perangkat USB yang harus sumber arus apa pun pada pin antarmuka kecuali jika terhubung ke kabel, lihat bagian 7.1.5.1, yang berbunyi,

Sumber tegangan pada resistor pull-up harus berasal dari atau dikendalikan oleh daya yang disediakan pada kabel USB sedemikian rupa sehingga ketika VBUS dilepas, resistor pull-up tidak memasok arus pada jalur data ke mana ia terpasang.

Jika perangkat USB tidak memiliki kontrol ini, salah satu jalur data akan menjadi sumber arus. Penegasan prematur tentang pull-up adalah sumber masalah bagi beberapa host USB lama. Itu sebabnya aturan ini dilembagakan, dan ada tes khusus untuk ini dalam program sertifikasi USB-IF.

Oleh karena itu, USB VBUS adalah sinyal "side-band" penting dalam protokol koneksi USB. Dengan demikian, IC perangkat USB normal memang memiliki pin input terpisah untuk merasakan keberadaan host USB. Beberapa produsen IC (mis. FT232H, MCP2221, dll.) Melewatkan persyaratan ini, dengan asumsi bahwa chip mereka hanya akan digunakan dalam konfigurasi bertenaga bus, di mana persyaratan kontrol pull-up terpenuhi secara otomatis. Namun, ketika mendesain chip ini menjadi desain mandiri, beberapa upaya sirkuit tambahan diperlukan untuk menghubungkan kemungkinan pull-up dengan kehadiran VBUS pada port USB.

Mengenai protokol koneksi USB "jabat tangan", USB tidak bergantung pada arus yang diambil dari VBUS. Protokolnya adalah ini: Port host harus memiliki VBUS aktif; VBUS terhubung ke perangkat; perangkat melihat VBUS dan menarik 1.5k pada salah satu kabel D + / D; host melihat koneksi ini, dan setelah penundaan 100 ms menegaskan pensinyalan USB_RESET (SE0 dll.).

Ale..chenski
sumber
18

Dengan perangkat yang diaktifkan sendiri tidak menghubungkannya 5V ke 5V host, Anda dapat meniup catu daya yang manapun. GNDdan D+, D-akan baik-baik saja.

Pikiran Anda bahwa tingkat untuk D+dan D-dinilai untuk + 3.6V maks, bukan ke 5V seperti yang Anda harapkan!

jippie
sumber
4
Namun perlu memantau VBUS untuk mendeteksi kondisi putuskan / sambung, karena bagian dari negosiasi awal USB melibatkan penarik pada D + dan D-. Kami pernah mengalami masalah di mana hub tidak dapat menghitung perangkat dengan benar tergantung pada urutan di mana hub self-powered dan perangkat self-power dihidupkan, kecuali jika Anda mengamati VBUS. Solusinya adalah menggunakan pembagi potensial pada VBUS untuk menanganinya.
Jxj
1
Untuk alasan yang sama, resistor pullup - yang keduanya memberi tahu host bahwa perangkat telah terhubung, dan mengidentifikasi kecepatan awalnya - harus dirujuk ke VBUS, bukan pasokan lokal perangkat.
Dave Tweed
1
Hmmm - kotak info "Perangkat Mandiri" di usbmadesimple.co.uk/ums_2.htm mengatakan hal yang sama - jangan tarik D + atau D- di atas VBUS. Lebih menariknya, jangan mengemudi D + atau D- ketika VBUS mati. Datasheet FT4232H ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT4232H.pdf menunjukkan VBUS terhubung ke RESET # yang akan dikaitkan dengan "jangan mengemudi ketika VBUS mati", tetapi tampaknya tidak ada menjamin bahwa D + / D- selalu di bawah VBUS saat reset. Saya pikir seluruh poin tentang reset adalah bahwa D + berada di atas atau di bawah D-, bukan yang dekat dengan VBUS.
kbro