RK平台下USB_OTG提供的接口和返回的状态
1、GADGET连接状态
用于查询控制器工作于device模式时gadget连接HOST(PC机)状态,可用于判断外接为充电器还是PC;本接口目前仅支持kernel函数调用接口:int get_gadget_connect_flag(void)
返回值为:0 无PC连接
1 设备已经通过USB连接到PC
2、系统中VBUS状态
控制器作为device功能时,一直通过VBUS_DET信号监控VBUS状态,VBUS如果为高,一般是设备通过USB线连接到PC。Kernel函数调用接口为:int dwc_vbus_status(void)
VBUS状态查询节点:/sys/bus/platform/drivers/usb20_otg/vbus_status (read_only)
vbus_status可能的值为:0 VBUS为低电平(0V)
1 VBUS为高电平(5V)
2 VBUS为高,且DP/DM信号均为高电平(国际标准充电器判断)
3、开机检测VBUS状态
系统开机时可能会出现低电导致不能正常开机的情况,这时候无法使用系统正常运行的接口,又需要检测是否外接充电器来确定是否充电,所以提供kernel函数接口:int dwc_otg_check_dpdm(void)
4、设备主动连接PC使能
/sys/bus/platform/drivers/usb20_otg/dwc_otg_conn_cn (read & write)
dwc_otg_conn_en可能的值为: 0 设备检测到VBUS后不发起USB连接
1 设备检测到VBUS后会发起USB连接
USB充电器检测
USB模块提供的VBUS状态和PC连接状态变化情况如下,充电模块如需使用请务必了解状态的变化过程:
1、无连接,VBUS状态为0,gadget连接状态为0;
2、刚连接到PC或充电器,VBUS状态为1,gadget连接状态为0;
3、device会发起连接,如果是信号较好的PC,可以很快连上(1、2s内),如果信号较差,设备会retry 3次,每次时间约为1s,连上后VBUS状态为1,gadget连接状态为1;
4、如果外接不是PC,那么3次连接超时后,会给出DP,DM的状态,如果是标准充电器VBUS状态为2,gadget连接状态为0;如果非标准充电器,VBUS状态为1,gadget连接状态为0.
==============================================================================