带独立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
相关产品推荐
相关产品推荐

