ch582M:程序里面如何知道USB是否连接到主机了

      正在开发一款产品,     现在需要在空闲时候进入低功耗 ,但进入低功耗之后USB无法通信,

     我需要知道USB是否连接到电脑, 如果有连接,则不进入 低功耗

     


     请问有这种函数,或者解决方案吗?

您好,“不连接时”,USB接口是物理拔出的,还是物理接入但电脑没有识别。

如果是物理拔出状态,为了判断电脑是否物理接入,可以将USB座子外壳不接GND,接到582的GPIO引脚上,接入电脑时,外壳同时接GND以提供低电平。CH582在休眠时可以保持USB配置,D+引脚上的1.5K上拉是可以保持的。如果需要尽可能节省引脚,USB的信号线在电脑端是有15K的下拉电阻的,可以在MCU休眠前关闭USB功能,将UD+或UD-信号脚输入上拉,配置为GPIO下降沿唤醒引脚,接入电脑时由UD+或UD-信号线上主机端的下拉提供唤醒电平,唤醒后重新初始化USB功能进行枚举。

如果已经处于物理接入的状态,MCU读到D-引脚上有接到主机的下拉电阻,或者读到USB外壳已经接了GND,但电脑没有识别,可以关闭USB使能,延时10ms后重新初始化USB,让电脑端重新枚举。

对于物理拔出电脑的判断,可以在USB代码的SUSPEND中置标志,判断是否断开进入休眠。


多谢


只有登录才能回复,可以选择微信账号登录