CH585芯片通过USB唤醒主机
配置描述符中bmAttributes字节中第5个bit:1->设备支持远程唤醒,0->设备不支持远程唤醒
配置描述符举例:
// 配置描述符示例(支持远程唤醒)
const uint8_t ConfigurationDescriptor[] = {
// 配置描述符头(9字节)
0x09, // bLength
0x02, // bDescriptorType(配置描述符)
0x20, 0x00, // wTotalLength(整个配置的长度,以实际长度为准)
0x01, // bNumInterfaces(接口数量)
0x01, // bConfigurationValue
0x00, // iConfiguration(无字符串描述)
0xE0, // bmAttributes(总线供电 + 支持远程唤醒)
0x32, // bMaxPower(100mA)
// 后续接口和端点描述符...
};
接下来确保芯片的USB被电脑枚举完成,且配置描述符中设置了远程唤醒功能:Remote Wakeup,等待电脑进入睡眠/休眠模式后,
调用以下函数即可实现唤醒:
一、全速USB驱动文件:
/*********************************************************************
* @fn USB_Wake_up
*
* @brief USB_Wake_up
*
* @return none
*/
void USB_Wake_up( void )
{
R16_PIN_CONFIG &= ~RB_UDP_PU_EN; // USB上拉电阻
R8_UDEV_CTRL |= RB_UD_LOW_SPEED;
mDelaymS(8);
R8_UDEV_CTRL &= ~RB_UD_LOW_SPEED;
R16_PIN_CONFIG |= RB_UDP_PU_EN; // USB上拉电阻
}
二、高速USB驱动文件:
/*********************************************************************
* @fn USBHS_Send_Resume
*
* @brief USBHD device sends wake-up signal to host
*
* @return none
*/
__HIGH_CODE
void USBHS_Send_Resume(void)
{
R8_USB2_CTRL |= USBHS_UD_PHY_SUSPENDM;
R8_USB2_WAKE_CTRL |= USBHS_UD_UD_REMOTE_WKUP;
}

浙公网安备 33010602011771号