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

通过USB串口实现PC与Raspberry Pi Pico的数据收发故障排查

问题分析与解决方案

你遇到的核心问题是混淆了Raspberry Pi Pico的USB虚拟串口和硬件UART0:PC通过USB连接Pico时,使用的是USB CDC虚拟串口,而你的Pico代码却在监听硬件UART0(对应GP0/GP1引脚),两者不属于同一通信通道,因此无法收到数据。

修正方案:改用USB虚拟串口接收数据

修改Pico端的main.py,读取USB虚拟串口的数据,而非硬件UART0。以下是两种可行实现方式:

方式1:使用sys.stdin读取(简单直接)

import machine
from machine import Pin
import time
import sys

led = Pin(25, Pin.OUT)

while True:
    try:
        # 从USB虚拟串口读取一行数据
        data = sys.stdin.readline()
        if data:
            print(data, end='')  # 回显数据到串口
            led.toggle()         # 收到数据时翻转LED
    except KeyboardInterrupt:
        sys.exit()
    except Exception as e:
        print(f"Error: {e}")

    time.sleep(0.1)

方式2:使用usb_cdc模块(更灵活)

import usb_cdc
from machine import Pin
import time

led = Pin(25, Pin.OUT)
# 获取USB数据串口对象
uart = usb_cdc.data

while True:
    # 检查是否有等待读取的数据
    if uart.in_waiting > 0:
        data = uart.readline()
        if data:
            print(data.decode('utf-8'), end='')
            led.toggle()
    time.sleep(0.1)

其他排查要点

  1. 确认串口参数一致:PC端设置的波特率(9600)需与Pico端保持相同,尽管USB虚拟串口的波特率为虚拟参数,但统一设置可避免兼容性问题。
  2. Pico自动运行验证:确保main.py已正确上传到Pico,且Pico重启后能自动执行该脚本。
  3. 硬件UART替代方案:若坚持使用硬件UART0,需额外连接USB转串口模块:PC端USB转串口的TX接Pico的GP0(UART0 RX),RX接GP1(UART0 TX),GND接GND,同时PC端要选择该USB转串口对应的COM口,而非Pico的USB虚拟串口。

内容的提问来源于stack exchange,提问作者Çağan Çelik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:13:40