ISSUE:使用CPLD配置USB3300的方案将ECG的数据处理后上传PC,发现电脑始终无法识别出USB设备???
调试发现D+没有接上拉电阻!!!
关于USB的上下拉电阻,不是随便接个任意阻值的电阻就ok了。
① 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 OTG(on the go) 就是既可以做host又可以做client
我们一般是作为client接受pc传输数据,作为host时可以接打印机直接把手机中的照片打印出来
判别是host还是client是靠USB_ID这根pin
当作为client时,USB_ID基本是悬空的(内部有上拉)
如果侦测到USB_ID被拉低,就被认为是作为host,向外输出
所以需要外部client设备把USB_ID拉低
主USB自动识别从设备为高速还是低速就靠上拉电阻在D+还是D-上区别,电阻阻值的不规范会影响usb自动识别分配资源,出现不能发现硬件或使用到一般硬件发现失败等现象,所以不要随便上下拉电阻,先规范USB的硬件接口电路。
看了好多开发板, USB的D+都是通过1.5K上拉到3.3V的,而对USB主机来说,USB的工作电压是5V的,是否应该上拉到USB线的5V更合理?
USB是5v供电,但通信的电平是3.3v
在USB主机端,D+和D-都有个15K的下拉,设备连接上,这个上拉到1.5K的电阻可以在相应的信号线上(如D+)提供一个上升的脉冲以供HOST检测。这个值和时间,USB的协议里都用