USB主机是如何检测到USB的插入的呢?这要从USB集线器接收端说起。
这里我们用单片机和电脑PC分别作从机设备和主机举例子。
那么电脑PC的USB端口的D+和D-上面会分别接一个15kΩ的下拉电阻。这样的话,当电脑PC的端口悬空时(也就是没有设备插入时),D+和D-一直处于低电平状态。
但是在单片机上,D+或者D-会接1.5kΩ的上拉电阻到3.3V上,具体1.5kΩ是接在D+还是D-上面,是由设备的速度决定的。对于全速设备和高速设备,上拉电阻是接在D+上面的,而低速设备是接在D-上面的。在这里我们加上设备是全速设备,也就是这个1.5kΩ的上拉电阻是在D+上面的。
当我们的单片机和电脑PC通过USB线连接时,电脑PC的D+上面的电平就会因为单片机的插入而拉高,电脑PC端口检测到这个状态就会报告为USB主控制器,这样就检测到了USB设备的插入。然后会根据检测被拉高的数据线是D+还是D-来判断插入的是什么速度类型的设备。USB高速设备先是被识别为全速设备,然后通过集线器和设备两者的确认,再切换到高速模式下。再高速模式下,是电流传输模式,这时要将D+上的上拉电阻断开。