You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带独立Vsys的Pico W在MicroPython中如何检测USB电源连接?

Pico W检测USB主机连接的实现方法

方法一:读取CYW43439的WL_GPOI2引脚状态

Pico W的CYW43439 WiFi芯片的WL_GPOI2引脚可用于检测USB连接状态,通过MicroPython的cyw43模块即可访问:

import cyw43

# 初始化cyw43模块
cyw43.init()

# 读取WL_GPOI2的状态(引脚编号为2)
gpoi2_state = cyw43.gpio_get(cyw43.CYW43_GPIO_PIN_2)
# 根据实际电平逻辑调整判断,此处假设高电平对应USB已连接
print("USB状态:", "已连接" if gpoi2_state else "未连接")

注意:WL_GPOI2的电平逻辑需参考Pico W原理图确认,MicroPython的cyw43模块对GPOI中断支持有限,若需中断触发,建议用轮询或改用C SDK实现。

方法二:直接检测USB VBUS电压(推荐)

RP2040内置USB VBUS检测电路,无需外接元件,可直接通过USB_VBUS引脚读取状态,还支持中断触发:

轮询方式

from machine import Pin

vbus_pin = Pin('USB_VBUS', Pin.IN)
usb_connected = vbus_pin.value()
print("USB状态:", "已连接" if usb_connected else "未连接")

中断触发方式

from machine import Pin

def usb_state_change(pin):
    status = "已连接" if pin.value() else "已断开"
    print(f"USB状态变化:{status}")

vbus_pin = Pin('USB_VBUS', Pin.IN)
# 监听电平上升/下降沿触发中断
vbus_pin.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=usb_state_change)

这种方法不依赖WiFi芯片,即使WiFi未初始化也能正常工作,是更可靠的方案。

内容的提问来源于stack exchange,提问作者koljoxen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:25:20