树莓派Pico引脚图详解:从GPIO、PWM到ADC,手把手教你玩转40个引脚
第一次拿到树莓派Pico开发板时,面对两排密密麻麻的40个引脚,很多硬件新手都会感到无从下手。这些引脚到底有什么用?哪些可以接传感器?哪些能输出PWM信号?电源引脚又该怎么连接?本文将用最直观的方式,带你彻底读懂Pico的引脚功能地图。
1. 引脚布局与基础分类
将Pico开发板micro-USB接口朝上放置时,引脚编号从左上角的1号开始,呈U型排列。这种设计让硬件连接更加直观:
- 左侧引脚:1-20号(顶部1号开始向下)
- 右侧引脚:21-40号(底部21号开始向上)
所有引脚按功能可分为四大类:
| 类型 | 引脚数量 | 典型功能 |
|---|---|---|
| 电源组 | 7 | 5V/3.3V输出、系统电压监测 |
| 数字GPIO | 26 | 通用输入输出、通信协议接口 |
| 模拟ADC | 4 | 电压测量(0-3.3V范围) |
| 特殊功能 | 3 | LED控制、USB状态检测、电源管理 |
提示:GPIO26-29具有双重身份,既可作为数字引脚使用,也能切换为ADC模拟输入模式。
2. 电源系统深度解析
Pico的电源架构设计非常精巧,支持从USB、电池或外部电源多种供电方式。关键电源引脚包括:
- VBUS(引脚40):直接来自USB的5V电源
- VSYS(引脚39):主系统输入电压(1.8-5.5V)
- 3V3(引脚36):板载稳压器输出的3.3V电源
实际项目中,我曾遇到一个典型问题:当同时使用USB和外部电池供电时,系统会自动选择电压更高的电源输入,这得益于D1二极管的智能隔离设计。以下是测量系统电压的实用代码片段:
import machine adc = machine.ADC(29) # GPIO29连接VSYS分压电路 vsys_voltage = adc.read_u16() * 3.3 / 65535 * 3 # 换算实际电压 print("系统电压:", vsys_voltage, "V")电源使用注意事项:
- 3V3引脚最大输出电流建议不超过300mA
- 需要精确ADC测量时,建议使用独立的ADC_VREF基准
- 禁用3.3V输出可将3V3_EN(引脚37)接地
3. 数字GPIO实战应用
Pico的26个数字GPIO引脚(GP0-GP22, GP26-28)是硬件交互的核心。这些引脚不仅支持基本的输入输出,还能通过编程切换多种功能模式:
- 基础数字IO:驱动LED、读取按钮状态
- 通信接口:
- I2C:可配置两套独立总线
- SPI:支持主从模式切换
- UART:自带硬件流控引脚
- PWM输出:16个通道,精度可达8/16位
点亮板载LED(GPIO25)的经典示例:
from machine import Pin import time led = Pin(25, Pin.OUT) # 创建LED对象 while True: led.toggle() # 状态翻转 time.sleep(0.5) # 延时500msPWM控制呼吸灯效果实现:
from machine import Pin, PWM import time pwm = PWM(Pin(15)) # 使用GP15引脚 pwm.freq(1000) # 设置PWM频率 for duty in range(0, 65535, 1000): pwm.duty_u16(duty) # 调整占空比 time.sleep(0.05)4. 模拟输入与ADC功能
Pico的ADC模块虽然只有4个通道(GP26-GP29),但在传感器读取、电池监测等场景非常实用。ADC特性包括:
- 12位分辨率(0-4095)
- 3.3V满量程输入
- 内置采样保持电路
读取电位器电压的典型应用:
from machine import ADC, Pin import time adc = ADC(Pin(26)) # 使用GP26作为ADC输入 while True: value = adc.read_u16() # 获取原始值 voltage = value * 3.3 / 65535 # 转换为电压 print("电压值:", round(voltage, 2), "V") time.sleep(1)注意:ADC输入电压绝对不可超过3.6V(3V3+0.3V),否则可能损坏芯片。对于更高电压的信号,必须使用分压电路。
5. 特殊功能引脚妙用
除了常规功能,Pico的几个特殊引脚能实现独特应用:
GPIO23(SMPS控制):调整电源管理模式
- 低电平:PFM模式(轻载高效)
- 高电平:PWM模式(低纹波)
GPIO24(VBUS检测):自动识别USB供电状态
- 高电平:USB已连接
- 低电平:使用电池供电
RUN引脚:硬件复位控制
- 短接接地:立即重启系统
- 正常状态:内部上拉到3.3V
一个实用的电源管理示例:
vbus_detect = Pin(24, Pin.IN) if vbus_detect.value(): print("当前使用USB供电") else: print("切换到电池供电模式") smps_ctrl = Pin(23, Pin.OUT) smps_ctrl.low() # 启用PFM节能模式6. 硬件设计实战技巧
经过多个Pico项目实践,我总结出几个硬件连接的重要经验:
信号完整性:
- 高速信号线(如SPI)尽量短
- 每个IC的电源引脚就近放置0.1μF去耦电容
- 模拟信号走线远离数字信号
接地策略:
- 数字电路使用普通GND引脚
- 模拟电路优先连接AGND(引脚33)
- 大电流负载使用独立地回路
扩展接口:
- I2C总线记得接上拉电阻(通常4.7kΩ)
- UART远距离传输建议加RS232/485转换芯片
- 驱动大电流负载(如电机)需外加MOSFET
最后分享一个真实案例:在环境监测项目中,同时使用I2C传感器和SPI显示屏时,最初因总线冲突导致数据异常。后来将I2C设备改接到第二组总线(I2C1),并降低SPI时钟频率,问题完美解决。这提醒我们:充分利用Pico的多组通信接口,可以大幅提升系统稳定性。