打印
[AT32F421]

用 USB 唤醒 PC 的方法

[复制链接]
1806|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LEDyyds|  楼主 | 2024-9-23 10:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
分为三个步骤: 1. 调用 usb_low_power_wakeup_config(); BSP 中的 demo 则打开 usb_conf.h 中打开宏定义#define USB_LOW_POWER_WAKUP 即可 2. 在需要唤醒主机的地方,调用 usbd_core.c 下唤醒函数 void usbd_remote_wakeup(usbd_core_type *udev);
3. 需要注意配置描述符里的第 bmAttributes 要配置为 0xE0(self powered and support remote wakeup)。
以上三个步骤设置完成后,还需要注意在电脑端打开允许外部 USB 设备唤醒计算机功能,如下图:



该功能的实现可参考 BSP 中如下 demo:AT32F4XX_Firmware_Library_V2.x.x\project\at_start_f4xx\examples\usb_device\mouse

使用特权

评论回复
沙发
adolphcocker| | 2024-10-3 08:45 | 只看该作者

单片机通过USB唤醒PC通常涉及到实现USB设备枚举以及发送信号给PC,使其从低功耗状态

使用特权

评论回复
板凳
primojones| | 2024-10-3 10:33 | 只看该作者
市面上有一些专门设计用于USB唤醒功能的集成电路(IC),这些IC可以集成到单片机系统中,以实现USB唤醒PC的功能。

使用特权

评论回复
地板
jonas222| | 2024-10-3 13:26 | 只看该作者
在单片机的USB固件中启用远程唤醒功能。

使用特权

评论回复
5
iyoum| | 2024-10-3 14:40 | 只看该作者
在单片机的程序中,对 USB 设备进行初始化。

使用特权

评论回复
6
bestwell| | 2024-10-3 16:19 | 只看该作者
当单片机检测到需要唤醒PC的事件时(例如按钮按下、定时器触发等),它应该通过USB端口发送一个唤醒信号。
这个信号通常是一个特定的USB消息,告诉PC的USB控制器执行唤醒操作。

使用特权

评论回复
7
adolphcocker| | 2024-10-3 18:12 | 只看该作者
不同的操作系统对 USB 唤醒功能的支持情况可能不同。对于 Windows 系统,通常在 BIOS 设置中可以找到相关的 USB 唤醒选项,需要确保该选项已开启。对于 Linux 系统(以 Ubuntu 为例),需要查看 /proc/acpi/wakeup 文件中的 USB 设备状态,确认 USB 唤醒功能是否被禁用,如果是则需要进行相应的配置。例如在终端中输入 cat /proc/acpi/wakeup 查看当前的设备唤醒状态,若 USB 设备的状态为 disabled,则需要将其设置为 enabled。在 Linux 下,使用 echo "usbX" > /proc/acpi/wakeup(其中 usbX 是要唤醒的 USB 设备名称,例如 usb0、usb1 等)命令来开启 USB 唤醒功能,但这只是临时的设置,若要在系统重启后仍然生效,需要编写一个初始化脚本并将其添加到启动项中。

使用特权

评论回复
8
burgessmaggie| | 2024-10-3 20:07 | 只看该作者
当单片机检测到外部唤醒事件(如按键按下、传感器触发等)时,需要生成一个USB Resume信号来唤醒PC。

使用特权

评论回复
9
daichaodai| | 2024-10-4 08:59 | 只看该作者
对于PC来讲就是中断唤醒

使用特权

评论回复
10
sesefadou| | 2024-10-4 13:45 | 只看该作者
单片机可以通过控制USB端口的电源来模拟插拔设备的动作,从而唤醒PC。

使用特权

评论回复
11
kmzuaz| | 2024-10-4 15:30 | 只看该作者
USB设备类定义允许设备在PC休眠时发送唤醒信号。例如,USB Human Interface Device (HID) 类定义允许键盘和鼠标发送唤醒信号。

使用特权

评论回复
12
averyleigh| | 2024-10-4 17:22 | 只看该作者
在PC的设备管理器中,找到对应的USB设备,启用其远程唤醒功能。

使用特权

评论回复
13
alvpeg| | 2024-10-4 19:06 | 只看该作者
可以调用usbd_remote_wakeup函数来实现远程唤醒。

使用特权

评论回复
14
timfordlare| | 2024-10-4 20:49 | 只看该作者
单片机支持USB远程唤醒功能,并且PC的BIOS/UEFI设置允许通过USB设备唤醒。

使用特权

评论回复
15
saservice| | 2024-10-4 22:25 | 只看该作者
将单片机的 USB 接口与 PC 的 USB 接口正确连接。确保连接稳定,并且 USB 数据线的质量良好,以保证数据传输的可靠性。

使用特权

评论回复
16
macpherson| | 2024-10-5 09:15 | 只看该作者
在单片机的USB协议栈中实现远程唤醒请求。
设置单片机在需要唤醒PC时发送一个远程唤醒信号

使用特权

评论回复
17
wilhelmina2| | 2024-10-5 10:48 | 只看该作者
在配置描述符中,需要确保bmAttributes字段的Bit5置为1,以开启远程唤醒功能。同时,PC端也需要在相应的USB设备上打开“允许此设备唤醒计算机”的选项。

使用特权

评论回复
18
olivem55arlowe| | 2024-10-5 12:23 | 只看该作者
可以尝试编写自定义的USB驱动程序,该驱动程序能够在PC休眠时识别来自单片机的特定信号,并触发唤醒。

使用特权

评论回复
19
jackcat| | 2024-10-5 14:07 | 只看该作者
需要在 PC 端启用允许外部 USB 设备唤醒计算机的功能。

使用特权

评论回复
20
cashrwood| | 2024-10-5 15:42 | 只看该作者
某些情况下,单片机的 USB 设备可能需要特定的驱动程序才能在 PC 上实现唤醒功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

117

主题

834

帖子

1

粉丝