USB--USB远程唤醒分析

本篇文章基于EVT中键鼠复合设备例程,分析设备唤醒主机流程原理等。

相关远程唤醒基础知识可参考USB中文网:https://www.usbzh.com/article/detail-189.html 

下面介绍我们CH32单片机端的实现流程。

1、配置描述符的bmAttributres字节必须配置远程唤醒功能

代码描述符体现:

2,主机睡眠时会发送两个命令,一个Set Feature,一个SUSPEND挂起命令,所以程序里做出响应

这里我们添加相关处理代码,这里我们做的处理是当主机睡眠时,我们让芯片也进入睡眠低功耗模

式,此时程序会停在PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFE);

这里,当我们接一个按键模拟按键按下时,芯片自身也会被唤醒,并继续执行程序,且发送唤醒信号

进而主机也会被唤醒。

 

 常见问题:

1,用的EVT复合键鼠例程测试,怎么唤醒不了?(用的哪个型号单片机官网搜索对应型号可下载对应例程)

可能原因:1)主机端睡眠时为发送相应的挂起等信号,我们的例程流程是先发送set feature,后发送挂起

信号,进而进入睡眠,醒来后再唤醒主机,测试可监控响应处理函数有无进入,无进入一般是系统问题,也

可以多试几台电脑。

2,我不需要芯片端睡眠,主机睡眠时我需要芯片仍在运行程序,该怎么配置

可直接替换该函数,MCU_Sleep_Wakeup_Operate,转而置位一个标志,标志成立的话可在别处做相应的处理。

如有些可能使用SPI来上传键值,所以此时肯定是不能进停止模式的,此时只需在此置一个标志位,在SPI中断里

发送唤醒信号即可。

 

posted @ 2024-11-05 16:04  WCH_CH32  阅读(58)  评论(0编辑  收藏  举报