news 2026/8/21 10:58:49

ColorEasyPico2开发板UART串口通信实战:基于RP2350与MicroPython的配置与回环测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ColorEasyPico2开发板UART串口通信实战:基于RP2350与MicroPython的配置与回环测试

ColorEasyPico2开发板UART串口通信实战:基于RP2350与MicroPython的配置与回环测试

大家好,我是老陈,一个在嵌入式领域摸爬滚打多年的工程师。最近在用ColorEasyPico2这块板子做项目,发现很多刚入门的朋友对串口通信这块有点发怵,特别是怎么在MicroPython里把GPIO引脚配置成串口来用。今天我就结合这块板子,手把手带大家走一遍UART串口通信的完整流程,从原理到接线,再到两个实战代码,保证你跟着做一遍就能掌握。

串口可以说是嵌入式开发中最基础、最常用的通信方式了。不管是给设备打印调试信息,还是跟传感器、模块交换数据,都离不开它。咱们今天的目标很明确:第一,学会如何把ColorEasyPico2开发板(核心是RP2350芯片)的普通引脚变成串口引脚,跟电脑通信;第二,做一个硬件自回环测试,自己发数据自己收,验证硬件和代码都没问题。

1. 串口通信:嵌入式世界的“聊天窗口”

在开始动手前,咱们先花几分钟把串口是啥、为啥重要搞清楚。这样后面配置参数的时候,你才知道每个设置是干嘛的。

串口,全称串行通信接口。你可以把它想象成设备之间“聊天”的一个窗口。它最大的特点就是“一位一位”地传输数据,就像我们说话是一个字一个字往外蹦。虽然速度比不上并排传输多条数据线的“并行通信”,但它用的线少(通常就两根:一根发,一根收),成本低,抗干扰能力强,特别适合远距离或者简单的设备间通信。

要让两个设备通过串口成功“对上话”,它们必须说同样的“语言”,也就是参数要对齐。这几个关键参数你得记住:

  • 波特率 (Baud Rate):这是通信的速度,单位是bps(比特每秒)。比如9600 bps,就是每秒传输9600个二进制位。通信双方必须设置成一样的波特率,否则收到的就是乱码。常见的波特率有9600, 115200等,咱们实验会用115200,速度比较快。
  • 数据位 (Data Bits):指每个数据包(通常是一个字节)里实际有效数据的位数,通常是8位。这也是最常用的设置。
  • 停止位 (Stop Bits):用来表示一个数据包传输结束的标志位,通常是1位。它也给双方设备一个同步时钟的机会。
  • 校验位 (Parity Bits):一个简单的错误检查位,比如奇校验或偶校验。为了简单,咱们通常选“无校验”(None)。

一张图帮你理解数据是怎么在线上跑的: 每个字符的传输都以一个起始位(低电平)开始,接着是数据位(比如8位),然后是校验位(可选),最后以**停止位(高电平)**结束。停止位后面就是空闲的高电平,等待下一个字符。

在实际项目中,串口的作用太大了:

  1. 调试利器:把你的程序变量、状态信息打印到电脑串口助手,是排查bug最直接的方法。
  2. 控制与通信:连接GPS模块、蓝牙模块、某些传感器,都是通过串口发送指令和接收数据。
  3. 固件升级:很多单片机都支持通过串口来烧录新的程序。

2. ColorEasyPico2 (RP2350) 的串口资源与引脚分配

咱们用的ColorEasyPico2开发板,核心是瑞萨的RP2350芯片。这块芯片内置了两个独立的串口外设,叫UART0UART1。它们很灵活,可以映射到芯片的多个GPIO引脚上,但不是所有引脚都支持,必须用指定的几组。

这个特性给了我们布板的灵活性,但新手容易踩坑——随便找两个引脚配置串口是不行的。下面的表格是RP2350串口引脚映射的总结,你配置的时候一定要从这里选:

串口外设可用的TX(发送)/RX(接收)引脚组 (GPIO编号)
UART0GPIO0/1, GPIO2/3, GPIO12/13, GPIO14/15, GPIO16/17, GPIO18/19
UART1GPIO4/5, GPIO6/7, GPIO8/9, GPIO10/11, GPIO20/21, GPIO26/27

注意:表格里每一组两个引脚,通常前一个作TX,后一个作RX。比如UART0用GPIO0和GPIO1,那么tx=0,rx=1

3. 实验一:与电脑串口助手通信

第一个实验,咱们让开发板通过串口给电脑发消息,同时也能接收电脑发来的指令。这需要一个小工具——USB转TTL模块。它相当于一个翻译官,把电脑USB接口的信号“翻译”成单片机能懂的TTL电平串口信号。

硬件连接步骤(务必断电操作):

  1. 准备一个USB转TTL模块(常见芯片有CH340、CP2102等)。
  2. 用杜邦线连接模块和ColorEasyPico2:
    • 模块的TX引脚 → 开发板的GPIO1(UART0的RX)
    • 模块的RX引脚 → 开发板的GPIO0(UART0的TX)
    • 模块的GND引脚 → 开发板的GND(任意一个接地引脚)
  3. 重要:USB转TTL模块的VCC引脚不要接到开发板!开发板由自己的USB口供电。两者只需共地(GND)即可。
  4. 将USB转TTL模块插入电脑USB口,开发板也通过Type-C线连接电脑(用于运行MicroPython代码)。

软件准备:在电脑上打开一个串口调试助手软件(如Putty、SecureCRT、或者各种单片机IDE自带的串口监视器)。根据你的USB转TTL模块型号,在电脑设备管理器中找到对应的COM口(例如COM3),并在串口助手中选择该端口,设置波特率为115200,数据位8,停止位1,无校验,无流控制。

MicroPython代码详解:接下来,在你的MicroPython开发环境(比如Thonny)中,新建一个文件,输入以下代码。我会逐段解释:

from machine import UART import time # 初始化UART0,波特率为115200 # 关键:配置该串口0的TX发送引脚为GPIO0,RX接收引脚为GPIO1 uart = UART(0, baudrate=115200, tx=0, rx=1) # 确保UART已经初始化成功 if uart: print("UART0 initialized") # 先给电脑发送一条问候信息 uart.write('Hello from RP2350 UART0!\n') # 主循环,持续监听和收发 while True: # 检查串口接收缓冲区是否有数据可读 if uart.any(): # 读取数据 data = uart.read() # 将接收到的字节数据解码成字符串,并打印到REPL(方便我们看) print('Received:', data.decode('utf-8')) else: print("Failed to initialize UART0")

代码运行与验证:

  1. 将代码保存并运行到ColorEasyPico2上。
  2. 观察Thonny的Shell(REPL)窗口,应该会打印出"UART0 initialized"
  3. 切换到你的串口助手软件,应该会收到一条"Hello from RP2350 UART0!"的消息。
  4. 在串口助手软件的发送框里输入一些文字(比如"Hello Pico2")并发送。
  5. 回到Thonny的Shell窗口,你会看到打印出Received: Hello Pico2

恭喜!这说明你的开发板已经成功通过UART0和电脑建立了双向通信。

4. 实验二:硬件自回环测试

第二个实验更有趣,我们让开发板自己跟自己“说话”,也就是回环测试。这个测试不需要连接电脑串口助手,纯粹验证板子上的串口硬件和你的代码配置是否正确。

原理很简单:我们把一个UART的发送引脚(TX)和接收引脚(RX)用导线短接起来。这样,单片机发送的数据会直接从TX引脚“绕回”RX引脚,被自己接收到。

硬件连接:这次我们用UART1。找一根杜邦线或者用镊子,将ColorEasyPico2上的GPIO4 (TX)GPIO5 (RX)两个引脚短接。就这么简单!

MicroPython代码详解:

from machine import UART, Pin import time # 创建UART1实例,使用GPIO 4作为TX,GPIO 5作为RX # 注意:这里用Pin(4)和Pin(5)来指定引脚也是可以的,和直接写数字4,5等效 uart = UART(1, baudrate=115200, tx=Pin(4), rx=Pin(5)) # 确保UART1已经初始化 if uart: print("UART1 initialized on GPIO 4 (TX) and GPIO 5 (RX)") # 主循环 while True: # 发送一个字符串 uart.write('Hello from RP2350 UART1!\n') # 稍作延时,确保数据发送完成。115200波特率下,发一行字符很快,但加个延时更稳妥。 time.sleep(0.1) # 检查是否有数据可读(也就是刚刚自己发出去的数据是否被“绕回来”了) if uart.any(): # 读取数据 data = uart.read() # 将接收到的数据解码并打印到REPL print('Received:', data.decode('utf-8')) # 再延时一下,避免循环太快打印刷屏,也降低CPU占用 time.sleep(0.5) else: print("Failed to initialize UART1")

代码运行与验证:

  1. 确保GPIO4和GPIO5已经短接。
  2. 将上面的代码运行到开发板。
  3. 观察Thonny的Shell窗口。你会看到不断打印出"Received: Hello from RP2350 UART1!"
  4. 这说明数据发送后,立刻被接收到了,回环测试成功!

提示:如果回环测试没成功,首先检查短接线是否可靠连接了GPIO4和GPIO5。其次,检查代码中UART初始化的ID是否是1,引脚是否正确。这是最常见的两个坑。

5. machine.UART类常用方法小结

通过上面两个实验,我们已经用到了machine.UART的核心功能。这里再给大家整理一下这个类常用的方法,方便以后查阅:

  • 初始化/重新初始化

    uart.init(baudrate=9600, bits=8, parity=None, stop=1, tx=..., rx=...)

    可以在对象创建后重新配置参数。

  • 发送数据

    uart.write('Hello World') # 发送字符串 uart.write(b'\x01\x02\x03') # 发送字节数据

    返回值是成功发送的字节数。

  • 接收数据

    data = uart.read(10) # 最多读取10个字节 data = uart.read() # 读取当前缓冲区所有数据 line = uart.readline() # 读取一行(直到换行符)

    如果没有数据,read()可能会返回None(取决于超时设置)。

  • 检查接收缓冲区

    if uart.any(): # 返回可读取的字节数 data = uart.read()

    在读取前先判断,是个好习惯。

好了,关于ColorEasyPico2的UART串口通信实战就先到这里。大家重点掌握引脚映射的规律和machine.UART的基本用法。在实际项目中,你可能会遇到需要同时使用多个串口,或者需要更复杂的通信协议(如Modbus)的情况,但万变不离其宗,都是基于今天这些基础操作之上进行的封装和扩展。多动手试试,遇到问题先检查连线和参数,大部分都能解决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 10:58:48

Z-Image-GGUF进阶技巧:固定种子、批量生成,打造系列AI作品

Z-Image-GGUF进阶技巧:固定种子、批量生成,打造系列AI作品 1. 从单张创作到系列作品 当你已经能够熟练生成单张AI图像后,很自然地会想要更进一步——创作风格统一的系列作品。无论是为品牌设计视觉素材,还是制作连环画风格的插画…

作者头像 李华
网站建设 2026/7/14 16:33:21

OpenMV IDE适配Bookworm:从环境冲突到一键部署的实战指南

OpenMV IDE适配Bookworm:从环境冲突到一键部署的实战指南 【免费下载链接】openmv-ide QtCreator based OpenMV IDE 项目地址: https://gitcode.com/gh_mirrors/op/openmv-ide OpenMV IDE作为基于Qt框架构建的OpenMV摄像头开发板专用集成开发环境&#xff0c…

作者头像 李华
网站建设 2026/7/14 16:33:22

爬虫学习案例3

爬取美女图片 优美图库地址 一页图片 安装依赖库文件 pip install selenium requests beautifulsoup4import time import requests import random from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.service import Service fr…

作者头像 李华