[PICO]引脚定义
Raspberry Pi Pico 2 引脚定义及编程指南
Raspberry Pi Pico 2 是树莓派基金会推出的新一代微控制器开发板,搭载了性能更强劲的 RP2350 芯片。它保持了与第一代 Pico 完全兼容的 40 引脚布局,提供了 26 个多功能 GPIO(通用输入输出)引脚,并支持丰富的通信接口(I2C、SPI、UART)和模拟输入(ADC)。本文将基于官方引脚定义,详细介绍 Pico 2 的引脚功能,并分别使用 Arduino 风格(基于 Arduino-Pico 核心)和 C/C++ 风格(基于官方 Pico SDK)给出编程示例,帮助你快速上手。
1 | |
注意:GPIO 编号与物理引脚编号并不相同,例如 GP0 位于物理引脚 1,GP25 是板载 LED 的控制引脚(物理引脚无对应,仅内部连接)。
1. 引脚概述
Pico 2 的 40 个物理引脚 采用标准的 2.54mm 间距排针,布局如下:
- 左侧:物理引脚 1 至 20(从上到下)
- 右侧:物理引脚 40 至 21(从上到下)
这样的布局使得板子可以轻松插入面包板或配合扩展板使用。每个物理引脚对应一个 GPIO 编号(如 GP0、GP1…),编程时需通过 GPIO 编号控制引脚。
下面的表格列出了所有物理引脚及其对应的 GPIO 编号和主要功能(复用功能仅列出常用部分)。
左侧引脚(1~20)
| 物理引脚 | GPIO 编号 | 主要功能(复用) |
|---|---|---|
| 1 | GP0 | SPI0 RX, I2C0 SDA, UART0 TX |
| 2 | GP1 | SPI0 CSn, I2C0 SCL, UART0 RX |
| 3 | GND | 电源地 |
| 4 | GP2 | SPI0 SCK, I2C1 SDA |
| 5 | GP3 | SPI0 TX, I2C1 SCL |
| 6 | GP4 | SPI0 RX, I2C0 SDA, UART1 TX |
| 7 | GP5 | SPI0 CSn, I2C0 SCL, UART1 RX |
| 8 | GND | 电源地 |
| 9 | GP6 | SPI0 SCK, I2C1 SDA |
| 10 | GP7 | SPI0 TX, I2C1 SCL |
| 11 | GP8 | SPI1 RX, I2C0 SDA, UART1 TX |
| 12 | GP9 | SPI1 CSn, I2C0 SCL, UART1 RX |
| 13 | GND | 电源地 |
| 14 | GP10 | SPI1 SCK, I2C1 SDA |
| 15 | GP11 | SPI1 TX, I2C1 SCL |
| 16 | GP12 | SPI1 RX, I2C0 SDA, UART0 TX |
| 17 | GP13 | SPI1 CSn, I2C0 SCL, UART0 RX |
| 18 | GND | 电源地 |
| 19 | GP14 | SPI1 SCK, I2C1 SDA |
| 20 | GP15 | SPI1 TX, I2C1 SCL |
右侧引脚(40~21)
| 物理引脚 | GPIO 编号 | 主要功能(复用) |
|---|---|---|
| 40 | VBUS | USB 5V 输入(当通过 USB 供电时) |
| 39 | VSYS | 主系统电源输入(1.8V–5.5V) |
| 38 | GND | 电源地 |
| 37 | 3V3_EN | 3.3V 稳压器使能(低电平关闭) |
| 36 | 3V3(OUT) | 3.3V 稳压输出(最大约 300mA) |
| 35 | ADC_VREF | ADC 参考电压输入(默认为 3.3V) |
| 34 | GP28 | ADC2(模拟输入) |
| 33 | GND/AGND | 模拟地(与数字地相连) |
| 32 | GP27 | ADC1, I2C1 SCL |
| 31 | GP26 | ADC0, I2C1 SDA |
| 30 | RUN | 芯片复位(低电平复位) |
| 29 | GP22 | 通用 GPIO |
| 28 | GND | 电源地 |
| 27 | GP21 | I2C0 SCL |
| 26 | GP20 | I2C0 SDA |
| 25 | GP19 | SPI0 TX, I2C1 SCL |
| 24 | GP18 | SPI0 SCK, I2C1 SDA |
| 23 | GND | 电源地 |
| 22 | GP17 | SPI0 CSn, I2C0 SCL, UART0 RX |
| 21 | GP16 | SPI0 RX, I2C0 SDA, UART0 TX |
注意:
- 所有 GPIO 均为 3.3V 逻辑电平,输入不可承受 5V 电压。
- 每个 GPIO 最大输出/输入电流约为 12mA,驱动大负载需使用外部电路。
- 板载 LED 连接在 GP25(未在上述列表中),高电平点亮。
2. 引脚功能详解
2.1 电源引脚
| 引脚功能 | 物理引脚 | 描述 |
|---|---|---|
| VBUS | 40 | USB 接口输入的 5V 电源,当板子通过 USB 供电时可用。 |
| VSYS | 39 | 主系统电源输入,可接入 1.8V–5.5V,经板载稳压器输出 3.3V。 |
| 3V3(OUT) | 36 | 3.3V 稳压输出,可为外部传感器或模块供电。 |
| 3V3_EN | 37 | 3.3V 稳压器使能引脚,拉低可关闭板子供电。 |
| GND | 3, 8, 13, 18, 28, 33, 38 | 多个地引脚,用于连接电路参考地。 |
| RUN | 30 | 芯片复位引脚(低电平复位),内部有上拉电阻。 |
2.2 数字 GPIO 与 PWM
26 个 GPIO(GP0–GP22、GP26–GP28)均可作为数字输入或输出。几乎所有 GPIO 都支持 PWM(脉宽调制),共 24 个独立通道,可用于控制 LED 亮度、电机速度等。
数字输出示例:设置高电平(3.3V)或低电平(0V)。
数字输入示例:读取外部信号的高低状态。
2.3 模拟引脚(ADC)
Pico 2 集成了一个 12 位模数转换器,仅以下 3 个引脚支持模拟输入(ADC_VREF 为参考电压输入):
| ADC 通道 | GPIO 编号 | 物理引脚 | 说明 |
|---|---|---|---|
| ADC0 | GP26 | 31 | 模拟输入通道 0 |
| ADC1 | GP27 | 32 | 模拟输入通道 1 |
| ADC2 | GP28 | 34 | 模拟输入通道 2 |
| ADC_VREF | (无) | 35 | ADC 参考电压(默认为 3.3V) |
使用 analogRead()(Arduino)或 adc_read()(SDK)可读取 0–4095 的数值,对应 0–3.3V。
提示:GP29 在本版 Pico 2 中未引出,ADC_VREF 直接连接至引脚 35。
2.4 通信接口(I2C、SPI、UART)
Pico 2 支持 I2C、SPI、UART 三种常用通信协议,每个接口可通过“引脚复用”功能映射到多组 GPIO 上。以下为常用的默认引脚配置(即最常见的分配):
I2C
| 接口 | 功能 | 默认引脚(GPIO) | 可选引脚(其他 GPIO) |
|---|---|---|---|
| I2C0 | SDA | GP4 | GP0, GP8, GP12, GP16, GP20, GP26 |
| SCL | GP5 | GP1, GP9, GP13, GP17, GP21, GP27 | |
| I2C1 | SDA | GP2 | GP6, GP10, GP14, GP18 |
| SCL | GP3 | GP7, GP11, GP15, GP19 |
SPI
| 接口 | 功能 | 默认引脚(GPIO) | 可选引脚(其他 GPIO) |
|---|---|---|---|
| SPI0 | TX | GP19 | GP3, GP7, GP11, GP15 |
| SCK | GP18 | GP2, GP6, GP10, GP14 | |
| RX | GP16 | GP0, GP4, GP8, GP12 | |
| CSn | GP17 | GP1, GP5, GP9, GP13 | |
| SPI1 | TX | GP11 | GP15, GP19 |
| SCK | GP10 | GP14, GP18 | |
| RX | GP8 | GP12, GP16 | |
| CSn | GP9 | GP13, GP17 |
UART
| 接口 | 功能 | 默认引脚(GPIO) | 可选引脚(其他 GPIO) |
|---|---|---|---|
| UART0 | TX | GP0 | GP12, GP16 |
| RX | GP1 | GP13, GP17 | |
| UART1 | TX | GP4 | GP8 |
| RX | GP5 | GP9 |
注意:使用非默认引脚时,需要在初始化时显式指定引脚映射。
2.5 特殊功能引脚与板载外设
- 板载 LED:连接在 GP25(物理引脚未引出),高电平点亮,低电平熄灭。
- BOOTSEL 按键:不是引脚,按住后上电或复位可进入 USB 下载模式。
- SWD 调试接口:位于板子底部边缘的三个焊盘(SWCLK、SWDIO、GND),用于调试烧录。
- GP22:在某些固件(如 MicroPython)中作为启动安全模式触发脚(接地可跳过自动运行)。
3. 编程风格示例
以下分别展示 Arduino 风格(使用 Arduino IDE 和 Earle Philhower 的 Raspberry Pi Pico/RP2040 核心)和 C/C++ 风格(使用 Raspberry Pi Pico SDK)的代码,实现相同的功能。
3.1 Arduino 风格
Arduino 风格的编程最为简单,函数名与标准 Arduino 一致,适合快速原型开发。
示例 1:闪烁板载 LED(GP25)
1 | |
示例 2:读取电位器(GP26)并输出到串口
1 | |
示例 3:PWM 控制 LED 呼吸灯(使用 GP0)
1 | |
提示:Arduino-Pico 核心中,
analogWrite()会自动将 GPIO 配置为 PWM 输出,频率默认约 1kHz。
3.2 C/C++ 风格(Pico SDK)
使用官方 SDK 可以获得更底层的控制能力和更高的性能,适合需要精确时序或复杂外设配置的项目。
示例 1:闪烁板载 LED(GP25)
1 | |
示例 2:读取电位器(GP26)并输出到串口
1 | |
示例 3:PWM 控制 LED 呼吸灯(使用 GP0)
1 | |
注意:SDK 中的 PWM 配置稍显繁琐,但提供了极高的灵活性(如可调频率、相位等)。
4. 实际应用案例
4.1 控制 LED 亮度(呼吸灯)
结合 PWM 功能,我们可以轻松实现呼吸灯效果。以下是两种编程风格的完整代码。
Arduino 风格(使用 GP0):
1 | |
C/C++ 风格(使用 SDK,GP0):
1 | |
4.2 读取温度传感器(LM35 或模拟输出型)
假设一个模拟温度传感器(如 LM35)输出 10mV/℃,连接到 GP26(ADC0)。
Arduino 风格:
1 | |
C/C++ 风格(SDK):
1 | |
警告:实际温度传感器的输出电压与温度的关系可能非线性,请务必参考具体传感器数据手册进行校正。
5. 总结与注意事项
通过本文,你应该已经全面了解了 Raspberry Pi Pico 2 的引脚布局与功能:
- 引脚布局:左侧 1–20,右侧 40–21,所有 GPIO 均可复用为多种通信接口。
- 电源与地:VBUS(5V)、VSYS(主输入)、3V3(输出)及多个 GND。
- GPIO 功能:数字输入输出、PWM(几乎所有 GPIO)、ADC(仅 GP26、GP27、GP28)。
- 通信接口:I2C、SPI、UART 支持引脚复用,可根据需要灵活选择。
- 编程方式:既可像 Arduino 一样简单快速,也可使用 SDK 获得底层控制力。
使用注意事项:
- 电压限制:所有 GPIO 为 3.3V 逻辑电平,输入电压不得超过 3.3V,否则可能损坏芯片。
- 电流限制:每个 GPIO 最大输出/输入电流约 12mA,总电流有限制,驱动大负载需使用外部电路(如晶体管、MOSFET)。
- ADC 参考电压:ADC_VREF 引脚(35)可接外部参考电压(范围 0–3.3V),若未连接则默认使用 3.3V。
- BOOTSEL 按键:如需重新烧录固件,先按住 BOOTSEL 按键,再连接 USB 或按下复位(RUN 拉低)。
6. 附加资源与练习
- 练习 1:使用 I2C 接口连接一个 OLED 屏幕,显示当前温度和亮度。
- 练习 2:用 SPI 接口读取一个 MCP3008 模数转换器,扩展更多模拟输入通道。
- 练习 3:结合 PWM 和中断,实现一个简易的舵机控制程序。
- 资源:树莓派官方文档 Raspberry Pi Pico 2 Datasheet 提供了完整的引脚定义和电气特性;RP2350 数据手册则详细介绍了每个外设的寄存器级操作。
希望这篇文章能帮助你快速掌握 Pico 2 的引脚使用,并顺利开始你的项目!