简介
RP2040是树莓派的首款芯片,在定制硬件项目中非常受欢迎。虽然Raspberry Pi Pico 开发板非常适合原型设计,但许多项目需要定制外形尺寸、不同的I/O配置, 或针对量产的成本优化设计。
本指南提供了从零开始设计RP2040电路板所需的一切。我们将涵盖所需的最小电路、 解释每个设计决策,并提供JLCPCB兼容的元件编号,让您能够快速从原理图到组装好的电路板。
前提条件:本指南假设您对PCB设计工具(EasyEDA、KiCad或Altium) 有基本的了解,并熟悉去耦和信号布线等基本电子概念。
为什么选择RP2040设计?
优势
- +双ARM Cortex-M0+内核 @ 133MHz
- +264KB SRAM(比大多数Cortex-M0芯片更多)
- +可编程I/O(PIO)状态机
- +通过USB的UF2拖放式编程
- +低成本(批量约$0.70-1.00)
- +来自树莓派的优秀文档
注意事项
- !无内置闪存 - 需要外部QSPI
- !QFN-56封装需要仔细焊接
- !仅USB引导加载程序(无UART引导)
- !芯片下方单一GND焊盘 - 焊接至关重要
- !12位ADC(无DAC,4通道)
最小电路要求
与许多只需电源和几个电容就能运行的微控制器不同,RP2040对功能系统有特定要求:
必需元件
必需
- 1x RP2040微控制器
- 1x 外部QSPI闪存(2MB-16MB)
- 1x 12MHz晶振 + 2个负载电容
- 1x 3.3V稳压器
- 11x 100nF去耦电容
- 2x 1µF电容(VREG输入/输出)
用于USB编程
- 1x USB连接器(推荐Type-C)
- 2x 27Ω USB串联电阻
- 2x 5.1kΩ CC电阻(USB-C)
- 1x BOOTSEL按钮
- 1x 1kΩ BOOTSEL电阻
- 1x ESD保护(推荐)
系统框图
在深入每个子系统之前,这是所有部件如何连接的示意图:
电源设计
电源架构概述
RP2040需要两个电压轨才能工作:
- IOVDD(3.3V) - 为所有I/O、USB PHY和外设供电
- DVDD(1.1V) - 为数字核心(ARM内核、SRAM)供电
RP2040包含一个内部线性稳压器,可从3.3V电源产生1.1V。 这简化了外部电源设计 - 您只需提供3.3V。
内部1.1V稳压器
内部稳压器需要:
- VREG_VIN - 连接3.3V,配1µF电容
- VREG_VOUT - 连接到所有DVDD引脚,配1µF电容
电池应用:当内核休眠时,内置LDO效率较高,但对于高负载的电池应用, 请考虑使用外部开关式1.1V电源以获得更好的效率。
外部3.3V电源选项
对于USB供电设计,您需要将5V USB转换为3.3V:
| 稳压器 | 类型 | 电流 | JLCPCB | 备注 |
|---|---|---|---|---|
| XC6206P332MR | LDO | 200mA | C5446 | 推荐 - 基础元件 |
| AP2112K-3.3 | LDO | 600mA | C51118 | 热门选择(SparkFun、Adafruit) |
| ME6211C33 | LDO | 500mA | C82942 | 低压差(500mA时100mV) |
避免使用AMS1117:尽管很受欢迎,AMS1117具有高静态电流(约5mA)、 需要大电容,且低负载性能差。请改用XC6206或AP2112K。
去耦电容
适当的去耦对于RP2040的稳定性至关重要。芯片有多个电源引脚,每个都需要自己的电容:
| 引脚 | 数量 | 值 | 用途 |
|---|---|---|---|
| IOVDD(引脚1,10,22,33,42,49) | 6x | 100nF | I/O电源去耦 |
| DVDD(引脚23, 50) | 2x | 100nF | 核心电源去耦 |
| USB_VDD(引脚48) | 1x | 100nF | USB PHY电源 |
| ADC_AVDD(引脚43) | 1x | 100nF | ADC参考 |
| VREG_VIN(引脚44) | 1x | 1µF | 稳压器输入 |
| VREG_VOUT(引脚45) | 1x | 1µF | 稳压器输出 |
布局关键:RP2040只有一个接地连接 - 芯片中心的大焊盘。 所有去耦电容必须具有从电容→电源引脚→通过芯片→中心GND焊盘→返回电容的最短回路。 在电容正下方使用过孔连接到地平面。
晶体振荡器
虽然RP2040有内部振荡器,但准确的USB时序和稳定运行需要外部12MHz晶振。
晶振选择
晶振必须满足以下规格:
- 频率:12.000 MHz
- 负载电容:通常10-20pF
- ESR:推荐小于100Ω
- 频率容差:±30ppm或更好
推荐晶振
JLCPCB元件: C9002
12MHz,3225封装(3.2mm × 2.5mm),20pF负载电容,±10ppm。 这是JLCPCB基础元件,可保持较低的组装成本。
负载电容计算
负载电容(CL1和CL2)必须根据晶振的指定负载电容和PCB杂散电容计算:
C_load = (CL1 × CL2) / (CL1 + CL2) + C_stray
对于相等的电容(CL1 = CL2 = C):
C = 2 × (C_load - C_stray)
以20pF负载电容和3pF杂散电容为例:
C = 2 × (20pF - 3pF) = 34pF
最接近的标准值:33pF或27pF常用负载电容值
| 晶振CL | 负载电容(每个) | JLCPCB元件 |
|---|---|---|
| 10pF | 15pF | C1644 |
| 12pF | 18pF | C1645 |
| 20pF | 33pF | C1663 |
晶振布局指南
- 将晶振尽可能靠近XIN/XOUT引脚(引脚20/21)
- 将负载电容紧邻晶振焊盘放置
- 将XIN/XOUT走线远离高速信号(特别是QSPI)
- 考虑在晶振周围放置接地保护环以增强抗噪性
- 将晶振放置在芯片上与QSPI闪存相对的一侧
QSPI闪存
RP2040没有内部闪存 - 所有程序代码都从外部QSPI闪存芯片运行。 这是一个必须谨慎选择和连接的关键元件。
闪存芯片选择
RP2040引导加载程序针对华邦W25Q系列闪存进行了优化。 虽然其他芯片可能工作,但华邦是最安全的选择:
| 型号 | 容量 | 封装 | JLCPCB | 备注 |
|---|---|---|---|---|
| W25Q16JVSNIQ | 2MB | SOIC-8 | C131024 | 最低推荐 |
| W25Q32JVSSIQ | 4MB | SOIC-8 | C179171 | 适合大型项目 |
| W25Q128JVSIQ | 16MB | SOIC-8 | C97521 | 最大支持 |
警告:旺宏和其他一些闪存芯片不能作为直接替代品使用。 请坚持使用华邦W25Q系列以确保兼容性。
闪存连接
| 闪存引脚 | RP2040引脚 | 功能 |
|---|---|---|
| 1 (/CS) | QSPI_SS(引脚57) | 片选 |
| 2 (DO/IO1) | QSPI_SD1(引脚53) | 数据输出 / IO1 |
| 3 (/WP/IO2) | QSPI_SD2(引脚54) | 写保护 / IO2 |
| 4 (GND) | GND | 地 |
| 5 (DI/IO0) | QSPI_SD0(引脚52) | 数据输入 / IO0 |
| 6 (CLK) | QSPI_SCLK(引脚56) | 时钟 |
| 7 (/HOLD/IO3) | QSPI_SD3(引脚55) | 保持 / IO3 |
| 8 (VCC) | 3.3V | 电源(配100nF电容) |
QSPI_SS上拉:从QSPI_SS到3.3V添加10kΩ上拉电阻。 这确保在上电期间闪存片选保持高电平,防止闪存进入未定义状态。
闪存布局指南
- 将闪存尽可能靠近RP2040 QSPI引脚
- 最大走线长度:20mm(越短越好)
- 推荐走线宽度:0.15mm(6 mil)
- 使时钟走线成为所有QSPI信号中最长的
- 在闪存VCC引脚直接添加100nF去耦电容
- 在闪存和走线下保持完整的地平面
USB接口
USB是RP2040的主要编程接口,支持便捷的UF2拖放固件上传。
USB-C连接器设计
对于现代设计,由于其可逆性和耐用性,推荐使用USB-C而不是Micro-USB。 主要连接:
| USB-C引脚 | 连接 | 备注 |
|---|---|---|
| VBUS (A4, B4, A9, B9) | 5V输入 | 连接到稳压器 |
| D+ (A6, B6) | RP2040 USB_DP(通过27Ω) | 将A6和B6连接在一起 |
| D- (A7, B7) | RP2040 USB_DM(通过27Ω) | 将A7和B7连接在一起 |
| CC1 (A5) | 5.1kΩ到GND | 设备检测 |
| CC2 (B5) | 5.1kΩ到GND | 设备检测 |
| GND (A1, A12, B1, B12) | 地 | 连接所有GND引脚 |
关键:CC1和CC2都必须有单独的5.1kΩ接地电阻。 切勿将CC1和CC2连接在一起 - 这违反了USB-C规范并导致检测问题。 (这是Raspberry Pi 4B发布时的bug。)
ESD保护
虽然不是严格必需的,但对于用户会接触的任何产品,强烈建议在USB线路上进行ESD保护:
推荐ESD保护
USBLC6-2SC6:用于D+/D-线路的TVS二极管阵列
JLCPCB元件:C7519
防护±15kV接触放电和±8kV空气放电。 低电容(典型0.5pF)保持信号完整性。
USB走线布局
USB是需要阻抗控制的差分信号:
- 目标阻抗:90Ω差分
- 走线宽度:0.8mm(对于1.6mm板厚)
- 走线间距:D+和D-之间0.15mm
- 27Ω串联电阻:靠近RP2040引脚放置
- 长度匹配:保持D+和D-等长
启动模式电路
RP2040使用基于ROM的引导加载程序,在上电时检查BOOTSEL状态。 理解启动序列对于设计可靠的编程接口至关重要。
BOOTSEL按钮设计
BOOTSEL功能使用QSPI_SS引脚。当在复位期间QSPI_SS保持低电平时, RP2040进入USB大容量存储模式进行固件上传:
QSPI_SS(引脚57)
|
+--- 10kΩ上拉到3.3V(可选但推荐)
|
+--- 1kΩ串联电阻 --- BOOTSEL按钮 --- GND
启动顺序:
1. 按住BOOTSEL按钮
2. 接通电源(或按住BOOTSEL的同时按RESET)
3. RP2040检测到QSPI_SS为低 → 进入USB启动模式
4. 释放按钮
5. 将UF2文件拖放到USB驱动器为什么需要1kΩ电阻?串联电阻在正常操作期间当QSPI_SS引脚 作为输出驱动时限制电流。没有它,在操作期间按下按钮会将输出短路到地。
复位电路
RUN引脚(引脚26)是RP2040的复位输入(低电平有效):
RUN(引脚26)
|
+--- 10kΩ上拉到3.3V
|
+--- 100nF电容到GND(去抖/滤波)
|
+--- RESET按钮 --- GND
典型用法:
1. 上电:RUN被拉高,芯片启动
2. 按RESET:RUN被拉低,芯片复位
3. 释放:RUN恢复高电平,芯片重新启动
4. 进入BOOTSEL模式:按住BOOTSEL,按RESETGPIO引出
RP2040提供30个具有灵活外设映射的GPIO引脚。对于最小设计,考虑引出哪些GPIO:
| GPIO | 引脚 | 常用功能 |
|---|---|---|
| GPIO0-1 | 2, 3 | UART0 TX/RX, I2C0, SPI0 |
| GPIO2-5 | 4-7 | SPI0, I2C1, PWM |
| GPIO6-9 | 8-11 | SPI0, I2C0/1, PWM |
| GPIO10-13 | 12-15 | SPI1, I2C0/1, PWM |
| GPIO14-17 | 16-19 | SPI1, I2C0/1, PWM |
| GPIO18-21 | 24-27 | SPI0, I2C0/1, PWM |
| GPIO22-25 | 29-32 | PWM, PIO, LED(Pico上的GPIO25) |
| GPIO26-29 | 34-37 | ADC0-3, PWM |
提示:将GPIO0/GPIO1保留用于UART调试 - 它们是默认的UART0引脚, 在开发期间对于串口输出非常有用。
PCB布局指南
层叠结构
官方最小设计使用2层板,但为了更好的性能和更容易的布线,推荐使用4层:
2层(低成本)
- 层1:信号 + 元件
- 层2:地平面 + 电源走线
- 挑战:RP2040下方的电源分配
- 在剩余空间中走1.1V和3.3V
4层(推荐)
- 层1:信号 + 元件
- 层2:完整GND平面
- 层3:3.3V电源平面
- 层4:信号 + 1.1V走线
- 更好的去耦和EMI性能
地平面策略
RP2040的中心接地焊盘是整个芯片的唯一接地连接。 这使得地平面设计至关重要:
- 在接地焊盘下使用至少9个过孔进行热和电气连接
- 在RP2040正下方创建完整的地平面
- 通过过孔将所有去耦电容的地连接到这个平面
- 在QSPI走线下保持连续的地
- 在周围使用接地缝合过孔
关键信号布线
| 信号组 | 最大长度 | 走线宽度 | 备注 |
|---|---|---|---|
| QSPI(闪存) | 20mm | 0.15mm | CLK最长,下方完整GND |
| USB D+/D- | 50mm | 0.8mm | 差分对,0.15mm间距 |
| 晶振XIN/XOUT | 5mm | 0.2mm | 远离QSPI |
| 电源(3.3V、1.1V) | - | 0.3mm+ | 到去耦电容要短 |
物料清单
JLCPCB基础元件
使用JLCPCB基础元件可最大限度减少组装费用(每种扩展元件类型$3)。 尽可能使用基础元件:
完整BOM
| 参考 | 值 | 封装 | JLCPCB元件 | 类型 |
|---|---|---|---|---|
| 核心元件 | ||||
| U1 | RP2040 | QFN-56 | C2040 | 扩展 |
| U2 | W25Q16JVSNIQ | SOIC-8 | C131024 | 扩展 |
| U3 | XC6206P332MR | SOT-23 | C5446 | 基础 |
| Y1 | 12MHz | 3225 | C9002 | 基础 |
| 电容 | ||||
| C1-C10 | 100nF | 0402 | C1525 | 基础 |
| C11-C12 | 1µF | 0402 | C52923 | 基础 |
| C13-C14 | 27pF | 0402 | C1557 | 基础 |
| 电阻 | ||||
| R1-R2 | 27Ω | 0402 | C25100 | 基础 |
| R3-R4 | 5.1kΩ | 0402 | C25905 | 基础 |
| R5-R6 | 10kΩ | 0402 | C25744 | 基础 |
| R7 | 1kΩ | 0402 | C11702 | 基础 |
| 连接器 & 按钮 | ||||
| J1 | USB-C | 16引脚 | C2765186 | 扩展 |
| SW1-SW2 | 按钮 | 3x6mm | C318884 | 基础 |
预估成本:每板元件约$2-3(最少5片), 加上约$5组装费 + 每种扩展元件类型约$3。
应避免的常见错误
1. 接地焊盘连接不良
中心焊盘是唯一的接地连接。如果没有足够的过孔连接正确焊接, 什么都不会工作。使用回流焊或热风返修以确保正确连接。
2. 使用错误的闪存芯片
使用非华邦闪存芯片通常会导致启动失败。请坚持使用W25Q系列。 如果使用不同的芯片,请确保它支持完全相同的命令集和上电时序。
3. 缺少QSPI_SS上拉
在上电期间,QSPI_SS可能会短暂浮空。没有上拉,闪存芯片可能进入未定义状态, 导致启动失败。
4. CC1/CC2连接在一起(USB-C)
每个CC引脚需要自己的5.1kΩ电阻。将它们连接在一起违反USB-C规范, 并导致间歇性检测问题。
5. 晶振离RP2040太远
长走线增加杂散电容,改变有效负载电容。 这会导致频率误差,破坏USB时序。
测试和调试
组装后,按照以下测试顺序进行:
- 目视检查:检查焊接桥接,特别是RP2040和USB连接器。 QFN-56封装容易产生桥接。
- 电源检查(无USB):在连接USB之前测量3.3V和1.1V轨。 验证它们稳定且电压正确。
- BOOTSEL测试:按住BOOTSEL,连接USB。计算机应该显示 一个名为"RPI-RP2"的新USB驱动器。
- 闪存测试:将UF2文件(如Pico闪烁示例)拖到驱动器。 它应该消失,代码应该运行。
- UART测试:将USB-UART适配器连接到GPIO0/GPIO1, 验证串口输出是否工作。
电路板卡在BOOTSEL模式?这通常意味着闪存芯片没有响应 - 检查闪存连接、电源和芯片选择。引导加载程序只有在无法从闪存读取有效代码, 或在复位期间按住BOOTSEL时才会进入USB模式。
结论
设计定制RP2040电路板需要关注电源、闪存、晶振和USB电路的细节。 然而,凭借树莓派的优秀文档和不断壮大的开源设计社区, 这对于任何具有基本PCB设计经验的人来说都是可以实现的项目。
需要记住的关键点:
- 使用华邦W25Q系列闪存以确保兼容性
- 特别注意中心接地焊盘的连接
- 保持QSPI走线短,晶振靠近芯片
- 不要在去耦电容上省钱
- 包含BOOTSEL和RESET按钮以便于编程
下载树莓派官方的KiCad最小设计文件作为起点, 不要犹豫参考其他开源RP2040项目获取灵感。