W55MH32 芯片 MicroPython 实战 (2):GPIO 通用输入输出
本文为 WIZnet W55MH32芯片 MicroPython 教程第 2 篇,基于官方最新固件编写,代码均经过实际验证,可直接烧录运行。
版权声明:本文为 WIZnet 官方原创技术文章,转载请注明出处。
前言
上一篇实战教程,我们已经完成了 W55MH32L-EVB 开发板的开箱上电、开发环境搭建与固件烧录。
本篇内容我们聚焦嵌入式开发最基础、也最核心的外设 ——GPIO 通用输入输出。
GPIO 是所有硬件交互的起点,从点灯、按键,到后续的串口通信、以太网指示灯控制,都离不开它。
W55MH32 内置丰富的通用 GPIO 资源,支持推挽输出、上拉 / 下拉输入等多种模式,配合 MicroPython 极简的 API 语法,无需复杂的寄存器配置,就能快速实现稳定的硬件交互。
学完本文,你将掌握:
- W55MH32L-EVB 开发板的板载 GPIO 资源与引脚定义
- MicroPython machine.Pin 模块的标准用法
- 板载 LED 输出控制闪烁
- 板载按键输入检测
- 板载蜂鸣器报警控制
- 常见问题一站式排查指南
系列教程学习路径
本系列共 24 篇,循序渐进覆盖从基础外设到工业以太网的全流程开发:
- 第 1 篇:W55MH32L-EVB 开箱上电 + 固件烧录
- 第 2 篇:GPIO 输入输出(本文)
- 第 3 篇:Timer 定时器
- 第 4 篇:ADC 模数转换
- 第 5 篇:DAC 数模转换
- 第 6 篇:UART 串口通信
- 第 7 篇:I2C 硬件 + 软件模拟
- 第 8 篇:SPI 硬件 + 软件模拟
- 第 9 篇:Bitstream/ Neopixel
- 第 10 篇:USB MSC + VCP
- 第 11 篇:以太网网络参数配置
- 第 12 篇:DHCP 自动获取 IP
- 第 13 篇:TCP 客户端 / 服务器通信
- 第 14 篇:UDP 单播 / 组播 / 广播通信
- 第 15 篇:NTP 网络时间同步
- 第 16 篇:DNS 域名解析
- 第 17 篇:HTTP 客户端 / 服务端开发
- 第 18 篇:MQTT 物联网协议接入
- 第 19 篇:RTC 实时时钟
- 第 20 篇:I2S 音频接口
- 第 21 篇:PWM 脉冲宽度调制
- 第 22 篇:SD 卡文件系统
- 第 23 篇:系统恢复出厂设置
- 第 24 篇:iperf 网络性能测试
建议收藏本系列,跟随教程逐步学习,所有代码均会同步更新至官方 Gitee 仓库。
目录
2. 烧录 W55MH32 专属 MicroPython 固件
1. 准备工作
1.1 软件准备
| 软件名称 | 版本要求 | 下载地址 | 说明 |
|---|---|---|---|
| Thonny | 4.0 及以上 | Thonny 官方下载 | 轻量级 MicroPython IDE,支持代码编辑、烧录与串口调试 |
| W55MH32 MicroPython 固件 |
1.27及以上 | WIZnet 官方固件下载 | 专为 W55MH32 编写的固件,已集成 WIZnet 硬件驱动 |
1.2 硬件准备
- W55MH32L-EVB 开发板 × 1
- Micro USB 数据线(必须支持数据传输,不能使用纯充电线) × 1
2. 烧录 W55MH32 专属 MicroPython 固件
W55MH32 完全兼容树莓派 Pico 的 UF2 固件烧录方式,操作简单无需额外烧录器:
- 使用 Micro USB 数据线连接开发板与电脑
- 待电脑识别出名为 WIZLINK 的 U 盘
- 将下载好的 w55mh32_1_27_mpy_260326.hex 固件文件拖拽到 U 盘中
- 开发板会自动重启,固件烧录完成
注意:如果电脑没有识别出 WIZLINK U 盘,请尝试更换 USB 数据线、重新插拔开发板,或更换电脑 USB 接口。
3. 硬件连接与开发环境配置
3.1 硬件连接
硬件名称 的连接极其简单,仅需一步:
- 使用 Micro USB 数据线连接开发板与电脑(用于供电、代码烧录和串口调试)
3.2 Thonny 开发环境配置
- 打开 Thonny 软件,点击顶部菜单栏「运行」→「配置解释器」
- 切换到「解释器」选项卡
- 在「解释器」下拉列表中选择
MicroPython (通用) - 在「端口」下拉列表中选择 硬件名称 对应的串口(通常显示为mbed Serial Port @ COMX)
- 勾选「运行代码前先重启解释器」和「同步设备的实时时钟」
- 点击「确定」完成配置
如果端口列表中没有出现开发板,请尝试:
- 重新插拔 USB 数据线
- 更换支持数据传输的 USB 数据线
- 关闭其他占用串口的软件(如串口助手、Arduino IDE 等)
- 重新烧录 MicroPython 固件
4. GPIO 外设简要介绍
GPIO(General Purpose Input/Output)即通用输入输出引脚,是 MCU 最基础的外设。
- 可配置为输出:控制 LED、继电器、蜂鸣器等。
- 可配置为输入:读取按键、传感器、开关信号。
- W55MH32L 提供 66 个 GPIO,支持:
- 推挽输出
- 开漏输出
- 浮空输入
- 上拉 / 下拉输入
GPIO 控制可用于:
- 设备状态指示:LED 电源灯、网络灯、报警灯
- 人机交互:按键、拨码开关、触摸检测
- 执行控制:继电器、电磁阀、蜂鸣器、小电机
- 协议模拟:软件 I2C、软件 SPI、软件 UART
- 工业场景:DI/DO 数字输入输出模块
5. 使用 machine 模块操作 GPIO
W55MH32 的 MicroPython 库已经封装了所有底层细节,实现外设驱动仅需调用对应函数即可。
5.1 呼吸灯测试
# 从machine模块中导入Pin类,用于控制单片机GPIO引脚
from machine import Pin
# 导入time模块,用于实现延时功能
import time
# 初始化LED引脚
# PD14作为输出引脚,用来控制LED亮灭
led = Pin("PD14", Pin.OUT)
# 无限循环,让LED一直重复闪烁
while True:
# 给LED引脚输出低电平,点亮LED
led.value(0)
# 延时500毫秒,保持LED点亮状态
time.sleep_ms(500)
# 给LED引脚输出高电平,熄灭LED
led.value(1)
# 延时500毫秒,保持LED熄灭状态
time.sleep_ms(500)
运行结果:板载LED(PD14)按500毫秒间隔,进行闪烁

5.2 按键检测触发亮灯与蜂鸣器响动
# 导入引脚控制模块
from machine import Pin
# 定义按键引脚 PG6
# Pin.IN = 输入模式(检测按键)
# Pin.PULL_UP = 开启内部上拉电阻,让按键检测更稳定
key = Pin("PG6", Pin.IN, Pin.PULL_UP)
# 定义LED引脚 PD14,输出模式
led = Pin("PD14", Pin.OUT)
# 定义蜂鸣器引脚 PD15,输出模式
buzzer = Pin("PD15", Pin.OUT)
# 无限循环,一直检测按键
while True:
# 检测按键是否被按下
# 因为开启了上拉电阻,按下 = 0,松开 = 1
if key.value() == 0:
# 按键按下:执行下面代码
led.value(0) # 灯亮
buzzer.value(1) # 蜂鸣器响
else:
# 按键松开:执行下面代码
led.value(1) # 灯灭
buzzer.value(0) # 蜂鸣器停
运行结果:按下按键(PG6),板载 LED(PD14)点亮、蜂鸣器(PD15)鸣叫;松开按键,LED 熄灭、蜂鸣器停止工作
按键检测触发亮灯与蜂鸣器响动
5.3 GPIO相关函数说明
| 函数名称 | 功能说明 |
|---|---|
pin.value(1) / pin.on() |
设置引脚输出高电平 |
pin.value(0) / pin.off() |
设置引脚输出低电平 |
pin.value() |
读取引脚当前电平,返回 0(低)或 1(高) |
pin.toggle() |
翻转引脚当前电平状态 |
6. 常见问题一站式排查指南
6.1 烧录相关问题
| 问题现象 | 排查步骤 |
|---|---|
电脑无法识别 WIZLINK U 盘 |
1. 确认按住 BOOTSEL 按键再插 USB 2. 更换支持数据传输的 USB 数据线 3. 更换电脑 USB 接口(优先使用 USB 2.0 接口) 4. 尝试使用另一台电脑 |
| 固件拖拽后开发板无反应 | 1. 确认下载的是 W55MH32 专属固件,不是通用树莓派 Pico 固件 2. 重新烧录固件 3. 检查 USB 供电是否稳定 |
6.2 端口识别问题
| 问题现象 | 排查步骤 |
|---|---|
| Thonny 中找不到开发板端口 | 1. 重新插拔 USB 数据线 2. 关闭其他占用串口的软件 3. 在设备管理器中查看是否有 Board CDC设备4. 重新烧录固件 5. 安装树莓派 Pico USB 驱动 |
7. W55MH32 核心优势对比
为了让你更直观地了解 W55MH32 的价值,我们对比了目前主流的三种嵌入式以太网方案:
| 对比维度 | W55MH32 集成方案 | 外接 PHY芯片 方案 | 外接 串口转以太网模块 方案 |
|---|---|---|---|
|
BOM 成本 |
低 |
中高 |
高 |
|
PCB 面积 |
小 |
大 |
高 |
|
开发难度 |
低 |
中高 |
低 |
|
网络稳定性 |
极高(WIZnet 专注硬件 TCP/IP协议栈25年) |
不定(对于研发人员要求高,熟悉协议栈与网络开发,才能调试稳定) |
不定 |
|
CPU 资源占用 |
0%(协议栈网络处理完全由硬件完成) |
50%以上(协议栈完全运行在MCU上,占用相关资源) |
0% |
|
硬件 Socket 数量 |
8 个独立硬件 Socket |
视MCU能力而定,理论支持多路拓展 |
一般为单路透传 |
|
网络吞吐量 |
最高 15Mbps |
视MCU能力而定 |
约 3-5Mbps |
|
接口易用性 |
单芯片集成 |
要MCU带有MII/RMII等接口 |
TTL接口 |
|
部署难度 |
低( |
高(应用层协议需要手动移植开源库适配) |
视模块集成情况,无集成的功能需要自我封包拆包 |
8. 典型应用场景
W55MH32 芯片集成以太网功能,结合其工业级稳定性,非常适合以下应用场景:
- 工业数据采集网关:简化现场部署,实现传感器数据的稳定上传
- 远程监控终端:用于工厂、机房、变电站等环境的设备状态远程监控
- 串口转网口设备:将传统 RS232/RS485 串口设备快速升级为以太网设备
- 智能楼宇节点:用于照明、空调、门禁等楼宇设备的网络控制
- 工业 PLC 扩展模块:为 PLC 增加以太网通信能力,实现远程编程和数据采集
9. 系列预告与资源获取
9.1 系列预告
下一篇教程我们将讲解 W55MH32 MicroPython 开发下的硬件 Timer 定时器 实现,带你掌握精准定时、延时控制等核心用法。
9.2 资源获取
- W55MH32 MicroPython 网址:W55MH32 MicroPython documentation
- 相关文章均有视频教程:WIZnet_HK个人主页-哔哩哔哩视频
如果本文对你有帮助,欢迎点赞、收藏、关注,你的支持是我们持续更新的动力!
如有任何问题,欢迎在评论区留言,我们会第一时间回复。
更多推荐



所有评论(0)