はじめに
RP2040はRaspberry Pi初のシリコンチップであり、カスタムハードウェアプロジェクトで 非常に人気があります。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)
- +Raspberry Piからの優れたドキュメント
考慮事項
- !内蔵フラッシュなし - 外部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は動作に2つの電圧レールが必要です:
- IOVDD(3.3V) - すべてのI/O、USB PHY、ペリフェラルに電力供給
- DVDD(1.1V) - デジタルコア(ARMコア、SRAM)に電力供給
RP2040には3.3V電源から1.1Vを生成する内部リニアレギュレーターが含まれています。 これにより外部電源設計が簡素化されます - 3.3Vのみを供給すればよいのです。
内部1.1Vレギュレーター
内部レギュレーターには以下が必要です:
- VREG_VIN - 1µFコンデンサ付きで3.3Vに接続
- VREG_VOUT - 1µFコンデンサ付きですべてのDVDDピンに接続
バッテリーアプリケーション:内蔵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のグランド接続は、チップ中央の大きなパッドの 1つだけです。すべてのデカップリングコンデンサは、コンデンサ→電源ピン→チップ内部→ 中央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ブートローダーはWinbond W25Qシリーズフラッシュに 最適化されています。他のチップも動作する可能性がありますが、Winbondが最も安全な選択です:
| 部品番号 | サイズ | パッケージ | JLCPCB | 備考 |
|---|---|---|---|---|
| W25Q16JVSNIQ | 2MB | SOIC-8 | C131024 | 最小推奨 |
| W25Q32JVSSIQ | 4MB | SOIC-8 | C179171 | 大規模プロジェクト向け |
| W25Q128JVSIQ | 16MB | SOIC-8 | C97521 | 最大サポート |
警告:Macronixや他の一部のフラッシュチップはドロップイン 代替品として機能しません。互換性が保証されたWinbond 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Ωプルアップ抵抗を追加します。 これにより、電源投入時にフラッシュチップセレクトがHighに保たれ、フラッシュが 未定義状態に入ることを防ぎます。
フラッシュレイアウトガイドライン
- フラッシュをRP2040 QSPIピンにできるだけ近く配置
- 最大トレース長:20mm(短いほど良い)
- 推奨トレース幅:0.15mm(6 mil)
- クロックトレースをすべてのQSPI信号の中で最も長く保つ
- フラッシュVCCピンに直接100nFデカップリングコンデンサを追加
- フラッシュとトレースの下に堅固なグランドプレーンを維持
USBインターフェース
USBはRP2040の主要なプログラミングインターフェースであり、便利なUF2 ドラッグ&ドロップファームウェアアップロードを可能にします。
USB-Cコネクタ設計
最新の設計では、リバーシブル性と耐久性からMicro-USBよりUSB-Cが推奨されます。 主要な接続:
| 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の発売時のバグでした。)
ESD保護
厳密には必須ではありませんが、ユーザーが取り扱う製品では USB回線のESD保護を強く推奨します:
推奨ESD保護
USBLC6-2SC6:D+/D-ライン用TVSダイオードアレイ
JLCPCB部品:C7519
±15kV接触放電と±8kV空気放電から保護。 低容量(0.5pF typ)で信号整合性を維持。
USBトレースレイアウト
USBはインピーダンス制御が必要な差動信号です:
- 目標インピーダンス:90Ω差動
- トレース幅:0.8mm(1.6mmボード厚の場合)
- トレース間隔:D+とD-間0.15mm
- 27Ωシリーズ抵抗:RP2040ピンの近くに配置
- 長さマッチング:D+とD-を等長に保つ
ブートモード回路
RP2040は電源投入時にBOOTSEL状態をチェックするROMベースのブートローダーを使用します。 ブートシーケンスを理解することは、信頼性の高いプログラミングインターフェースを 設計するために不可欠です。
BOOTSELボタン設計
BOOTSEL機能はQSPI_SSピンを使用します。リセット中にQSPI_SSがLowに保持されると、 RP2040はファームウェアアップロード用のUSBマスストレージモードに入ります:
QSPI_SS(ピン57)
|
+--- 10kΩプルアップで3.3Vへ(オプションだが推奨)
|
+--- 1kΩシリーズ抵抗 --- BOOTSELボタン --- GND
ブートシーケンス:
1. BOOTSELボタンを押し続ける
2. 電源を入れる(またはBOOTSELを押しながらRESETを押す)
3. RP2040がQSPI_SS Lowを検出 → USBブートモードに入る
4. ボタンを離す
5. UF2ファイルをUSBドライブにドラッグなぜ1kΩ抵抗?シリーズ抵抗は通常動作中にQSPI_SSピンが 出力として駆動されているときの電流を制限します。これがないと、 動作中にボタンを押すと出力をグランドにショートさせてしまいます。
リセット回路
RUNピン(ピン26)はRP2040のリセット入力です(アクティブLow):
RUN(ピン26)
|
+--- 10kΩプルアップで3.3Vへ
|
+--- 100nFコンデンサでGNDへ(デバウンス/フィルター)
|
+--- RESETボタン --- GND
一般的な使用法:
1. 電源投入:RUNがHighにプル、チップ起動
2. RESETを押す:RUNがLowにプル、チップリセット
3. 離す:RUNがHighに戻り、チップ再起動
4. BOOTSELモード:BOOTSELを押しながらRESETを押すGPIOブレイクアウト
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. 間違ったフラッシュチップ
Winbond以外のフラッシュチップを使用すると、ブート失敗の原因になることが よくあります。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回路の細部への注意が必要です。しかし、Raspberry Piからの優れた ドキュメントとオープンソース設計の成長するコミュニティにより、 基本的なPCB設計経験を持つ誰にとっても達成可能なプロジェクトです。
覚えておくべき重要なポイント:
- 互換性が保証されたWinbond W25Qシリーズフラッシュを使用
- 中央グランドパッド接続に特別な注意を払う
- QSPIトレースを短く、クリスタルをチップの近くに保つ
- デカップリングコンデンサを省略しない
- 簡単なプログラミングのためにBOOTSELとRESETボタンを含める
Raspberry Piの公式KiCad最小設計ファイルを出発点としてダウンロードし、 インスピレーションのために他のオープンソースRP2040プロジェクトを 参照することをためらわないでください。