FAQ:USB实现OTG插入检测说明
1、USB 检测启动:

如果应用需要某些条件满足后再启动USB检测,可以把对应的“usb_otg_init(NULL, &otg_data);”接口挪到对应条件满足地方。
USB检测原理
一、USB接线
标准的USB连接使用4芯电缆,分别是5V的电源线(Vbus)、差分数据线负(D-)、差分数据线正(D+)以及地线

二、USB检测原理
usb host:D+、D-连接15K下拉电阻到地,没有设备插入的时候,两条数据线为低电平
usb slave:在D+或者D-上连接1.5K上拉电阻到3.3v电源,上拉电阻连接在D+还是D-取决于设备速度,低速设备连接在D-,全速和高速设备连接在D-
检测过程:
1、usb设备插入,usb host检测到D+/D-被拉高
2、起中断通知usb host控制器
3、对设备进行枚举
三、SDK的USB 从机检测实现
1.usb设备控制器为全速设备
2.检测定时器,默认周期250ms,检测到插入后周期改成50ms,进行3次滤抖
a.默认是用D+检测是否插入
DP检测依赖比较器检测,DM没有比较器,比较器的输出连到寄存器的1bit,软件读这个bit
正输入端(不接电脑只有DP15k下拉,接了电脑是芯片15k下拉电阻并联电脑15k下拉电阻变成7.5k),接电脑时,DP的正输入端电压比负输入端低,输出低电平给寄存器
b.D+复用串口的时候,用D-检测(设置成输入、上拉180k)
3.检测到插入,D+(usb控制器对应bit为低)/D-(被拉低并消抖完成后),打开D+的1.5k上拉检测到D+/D-被拉低并消抖完成后,打开D+的1.5k上拉
4.usb host开始对usb slave枚举


