您的位置:首页 > 移动开发 > Android开发

Android + kernel USB host 如何判断插入的设备是高速还是低速的设备

2014-08-31 14:19 417 查看
d+ d-

0 0 PC

0 1 错误设备

1 0 非标准充电器

1 1 标准充电器



usb有主从设备之分,主设备有:pc,现在市面上的那些插u-disk即可播放mp3的“mp3”之类的,usb信号是差分信号,信号线为D+, D-。 在usb host 端, D+,D-各接一个15kohm 的下拉电阻,而在usb device端,这时就有高速低速设备的区别了。usb1.0, 1.1,2.0协议中都有定义高低速设备以满足不同情况的需求,这些在硬件上的区别就是:高速设备:d+接一个1.5kohm的上拉电阻,d-不接;低速设备则相反。
这样当usb device插入到host中时,如果是高速设备,则d+被拉高,d-不变;低速设备则与之相反。这个上拉过程需要大概2.5us的时间,host这这个时间内便检测到了该信号,即可判断有device plug in,和该device的类型,然后开始通讯。

Usb充电器的D+,D-是短路的,因此可以通过检测数据线的连接方式来判断是usb充电还是usb传数据。

USB OTG(on the go)就是既可以做host又可以做client,我们一般是作为client接受pc传输数据,作为host时可以接打印机直接把手机中的照片打印出来。判别是host还是client是靠USB_ID这根pin,当作为client时,USB_ID基本是悬空的(内部有上拉),如果侦测到 USB_ID被拉低,就被认为是作为host,向外输出,所以需要外部client设备把USB_ID拉低。
http://blog.csdn.net/qq258711519/article/details/10469765
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: