然后我模拟了充电器供电状态,把USB的D+和D-线接到继电器,设备休眠时断开D+和D-线,发现USB任然无法进入挂起状态,工作LED灯闪,但是HID设备已被电脑弹出了。我按键后,设备正常工作,电脑同时也识别到了HID设备。依据USB协议,USB Full Speed设备3ms内没接收到握手帧就应该进入挂起的,搞不清楚这个工作机制。
有没高手指点下,先感谢。
USB HID 键盘正常工作时是中断传输的,主机会在一定时间(由描述符确定)之内查询设备是否有数据需要传输,示波器也能看到一直有信号,挂起后就不再查询了,示波器看也没有信号了,USB功能处于休眠状态,而芯片休眠指单片机CPU不再工作,进入低功耗状态,USB设备一般通过USB线供电,非电池供电的可移动设备,对功耗不敏感,单片机进入低功耗状态是可选的,一般的应用是单片机识别电脑是否睡眠,电脑睡眠,主机会挂起USB总线,比如电脑正常工作,单片机接的LED是流水灯,电脑睡眠,流水灯变成呼吸灯,由于呼吸灯需要由单片机控制,此时单片机就不能进入低功耗模式了