根据USB协议,工作在主机模式,USB DP/DM下拉到GND,工作在设备模式,上拉到VCC(DP上拉表示高全速设备,DM上拉表示低速设备,STM32在Device模式只支持高速或全速):
图片来源于《STM32F407数据手册》,红色为示意,实际在电路中不存在;
仅主机模式:

仅设备模式:

OTG模式:

OTG模式下,MCU根据VBUS检测脚与ID脚(内置上拉电阻)判断自己属于HOST或Device,如果ID=0,则为HOST,DP/DM需要下拉到地,如果ID=1且VBUS有电,则为Device模式,DP自动连接内部上拉电阻Rpu;
以下图片来源于《STM32F4XX中文参考手册》


内置的DP/DM上下拉电阻各为多少呢?查看《STM32F407数据手册》:可以发现只有DP有上拉电阻,说明STM32作为Device不支持低速模式;


STM32在USB通信中,根据DP/DM引脚的不同状态工作在主机或设备模式。在设备模式下,只支持高速或全速,不支持低速。OTG模式下,MCU通过VBUS和ID引脚判断角色,ID=0为HOST,DP/DM下拉;ID=1且VBUS有电则为Device,DP自动上拉。STM32内置的DP有上拉电阻,表明不支持低速设备模式。






