USB接口是否需要上拉电阻
0赞经常在一些开发板上看到USB接口的D+/D-线上接上下拉电阻,有的则什么都不接。对这点比较困惑。
在USB协议的官网上,http://www.usb.org/developers/docs/usb20_docs/#usb20spec
查看了resistor_ecn文档。
首先USB总线也会有idle状态和transmit态。
在刚开始的时候usb host会检测总线的状态,如果都为低则说明暂时没有device请求接入。所以host侧才会有两个下拉电阻默认设置为idle态。
而D+/D-上的上拉电阻则是来指明usb device是low或full/high设备。D+上拉说明是full/high设备,D-上拉说明是low设备。
上下拉的阻值有个比较大的范围,spec上有详细说明。一般都习惯host的下拉是15K,device的上拉是1.5K,精度5%。但是也有些设计为了提高信号质量,会在末端做戴维南匹配,device侧也会有下拉。
上拉到3.3V电平,范围是3.0V~3.6V。如果有戴维南匹配的话,下值可以到2.7V。也可以用7.2K电阻上拉到5V电平。好像最新的规范都修改到下值2.7V。
当D+/D-线上高电平消失超过2.5us,则总线释放device进入idle状态。
设计中都会直接上拉的3.3V电平,也有的使用三极管或mos串电阻来控制状态。我打算直接用一个stm32的IO来控制这个电平。
这有一篇非常好的研究文档:https://wenku.baidu.com/view/98d223156c175f0e7cd13766.html?re=view
“USB设备端上拉电阻功能研究”
Micro USB Receptacle 母座(正视左边是pin1)
Plug公头(公头母座都有AB两种类型)
Pin |
名称 |
线的颜色 |
描述 |
1 |
VBUS |
Red(红) |
电源正5 V |
2 |
D− |
White(白) |
数据线负 |
3 |
D+ |
Green(绿) |
数据线正 |
4 |
ID |
none(无) |
支持OTG功能 A:接地,host B:悬空,device |
5 |
GND |
Black(黑) |
信号地线 |
Low-Speed(1.5Mb/s),Full-Speed(12Mb/s),High-Speed(480Mb/s)