Creator Ray
Version 1.0.0
Created 2025-10-10
Availability 100%, 24/7
Assets 2 files
Install this molecule

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

Search the Adom Wiki for the molecule "Molecule_RP2350B_RM2_v1" (slug: molecule-rp2350b-rm2-v1-106000) at https://wiki-ufypy5dpx93o.adom.cloud/wiki/molecules/molecule-rp2350b-rm2-v1-106000. Download its symbol (.kicad_sym), footprint (.kicad_mod), and 3D model (.glb/.step) assets into my current KiCad project under symbols/, footprints/, and 3dmodels/ directories. Register them in the project library tables. Show me the files once installed.

Molecule_RP2350B_RM2_v1 — Hardware Reference

RP2350B + CYW43439 (Raspberry Pi RM2) castellated molecule. This is the board fw_stationary and fw_arm target.

  • Source: adom-inc/adom-molecules — imported here on 2026-04-17
  • KiCad project name: Molecule_RP2350B_RM2_v1 (internal board name in .kicad_pro: Molecule RP2350B RM2 W v1.0)
  • Wiki page: molecules/molecule-rp2350b-rm2-v1-106000 — currently a stub (auto-imported 2025-10-10, no pin map or BOM detail)
  • Supersedes: the older hardware/pico2-2w-molecule-v20/ folder (wrong board). That folder should be removed once firmware is confirmed building against this one.
  • PCB: 4-layer (inferred from kicad_pcb stackup settings), USB Micro-B connector, 62 perimeter machine-pin contacts + 4 mounting pins
  • MCU: RP2350B in QFN-80 (U1). Not the Pico-W-style RP2350A — this is the full 80-pin variant with 48 GPIOs and 8 ADC channels

Files in this folder

FileWhat it is
Molecule_RP2350B_RM2_v1.kicad_proKiCad 9 project file
Molecule_RP2350B_RM2_v1.kicad_schSchematic (flat, single sheet, ~30k lines)
Molecule_RP2350B_RM2_v1.kicad_pcbPCB layout (~62k lines)
Molecule_RP2350B_RM2_v1-0.step / *.wrl3D models (STEP + VRML) of the assembled board
Molecule_RP2350B_RM2_v1-0 fancy big.stepHigh-poly 3D model (24 MB)
MCU_RaspberryPi_RP2350.kicad_sym / .libLocal RP2350 symbol library
RP2350_80QFN_minimal.pretty/Footprint library (RP2350 QFN-80, passives, USB micro-B)
RP2350_QFN80.stepRP2350 QFN-80 3D body
jlcpcb/production_files/BOM-*.csvJLCPCB BOM
jlcpcb/production_files/CPL-*.csvJLCPCB component placement list
jlcpcb/production_files/GERBER-*.zipManufacturing gerbers
fp-lib-table, sym-lib-tableKiCad library index

Component summary (from BOM + CPL)

RefPartLCSCFunction
U1RP2350B (QFN-80, 10×10 mm, 0.4 mm pitch, EP 3.4 mm)C42415655MCU
U3W25Q128JVPIQC19086216 MB (128 Mbit) QSPI XIP flash
U5APS6404L-3SQR-ZRC30408778 MB (64 Mbit) QSPI PSRAM — footprint present but DNP on production boards (confirmed by project lead 2026-04-17)
U9RM2 (CYW43439 radio module, Raspberry Pi)Wi-Fi 4 + BT/BLE
U100AP2112K-3.3 (SOT-23-5)C511183.3 V LDO (600 mA, LDO_EN controlled)
Y1ABM8-272-T3 (3.2×2.5 mm)C2062573112 MHz crystal (MCU XIN/XOUT)
L13.3 µH (L_pol_2016 fp)C42411119RP2350 internal-buck inductor (VREG_LX+1V1). BOM lists value as "3.3uF" — that is a BOM-field typo; footprint is an inductor and it sits on the VREG_LX net
L3470 Ω @ 100 MHz ferrite bead (0603)C97853EMI filter on +3V3 feed to U9 radio
D101Red LED (0402)C130719Power indicator (on +3V3 via R6 1 k)
D102, D103Blue LEDs (0402)C130724User LEDs
SW1B3U-1000P momentaryC231329BOOT — pulls QSPI_SS low → USB bootloader
SW2B3U-1000P momentaryC231329RST — chip reset (RUN line)
R7, R827 ΩC25100USB D+/D− series termination
R333 ΩC25105USB VBUS filter / series
R40470 Ω — series POCI-to-DATA tieC25117See "Radio wiring" below
R4110 kΩ — IRQ pull to DATA tieC25744See "Radio wiring" below
R1210 kΩC25744Pull-up on QSPI_SS (BOOT button)
R1, R100100 kΩC25741Pull-down / strap
R2, R4, R6, R101, R102, R1031 kΩC11702LED current-limit + misc pull
R100 ΩC17168Jumper
C3, C415 pFC1548Crystal load caps
C6, C74.7 µF (small-pad 0402)C23733VREG_LX / VREG_AVDD bypass
C9, C104.7 µFC23733Bulk
C100, C10110 µFC15525+3V3 / +5V bulk
13× C2,C8,C11–C18,C20,C21,C23100 nFC1525Decoupling
MP1–MP4ADOM_MEDIUM_PIN_SHORTER_CASTELLATED_v1Mounting pins (corners)
MC1–MC53, MC58–MC60ADOM_MEDIUM_CONTACT_CASTELLATED_WIDERPerimeter signal contacts (wider pads)
MC61, MC62ADOM_MEDIUM_CONTACTNarrower radio GPIO1/GPIO0 contacts
MC54–MC57pad not placedSilkscreen references exist in schematic but no footprint on PCB (reserved / spares)

Perimeter contact map (MC1..MC62)

Verified against the KiCad schematic and PCB netlist; matches /home/adom/project/rp2350b_rm2_pinmap.md (which is itself derived from this project). Reproduced here for self-contained reference.

MCSilkNetRP2350 pinNotes
MC122GPIO22 / SCK022SPI0 SCK, I²C1 SDA
MC221GPIO21 / CS021SPI0 CSn, I²C0 SCL
MC320GPIO20 / CIPO020SPI0 RX, I²C0 SDA
MC419GPIO1919SPI0 TX, I²C1 SCL
MC518GPIO1818SPI0 SCK, I²C1 SDA
MC617GPIO1717SPI0 CSn, I²C0 SCL
MC716GPIO1616SPI0 RX, I²C0 SDA
MC815GPIO1514
MC914GPIO1413
MC1013GPIO1312
MC1112GPIO1211
MC1211GPIO119
MC1310GPIO108
MC149GPIO97
MC158GPIO86
MC167GPIO74
MC176GPIO63
MC185GPIO52SPI0 CSn, I²C0 SCL
MC194GPIO41SPI0 RX, I²C0 SDA — firmware uses this pair
MC203GPIO380
MC212GPIO279
MC22Rx1GPIO178UART0 RX (default)
MC23Tx0GPIO077UART0 TX (default)
MC24RSTRUN / RST35Active-low reset (SW2)
MC25BOOTBOOTPress-to-bootsel (SW1 → QSPI_SS pulled low)
MC26USB+USB_D+via R7 27 Ω → pin 67USB FS
MC27USB−USB_D−via R8 27 Ω → pin 66USB FS
MC28SWDSWD_IO34
MC29SWDSWD_CLK33
MC30LDO ENLDO_EN— (to U100 pin 3)Pull high to enable 3.3 V LDO
MC31–MC384740GPIO47..GPIO40 / ADC7..ADC058..49All eight ADC channels exposed
MC39–MC483930GPIO39..GPIO3048..38
MC4929GPIO29 / RADIO_D37Shared: WL_DATA + HOST_WAKE + POCI-tied — see "Radio wiring"
MC5028GPIO28 / RADIO_CLK36WL_CLK
MC5127GPIO27 / RADIO_CS28WL_CS
MC5226GPIO26 / RADIO_ON27WL_REG_ON (also gates BT power)
MC53IO 2RADIO_GPIO2— (U9 C3)CYW43 module GPIO2 — not wired to MCU
MC54–MC57(pad not placed)Reserved
MC5825GPIO2526
MC5924GPIO2425
MC6023GPIO23 / COPI023
MC61IO 1RADIO_GPIO1— (U9 C4)CYW43 module GPIO1 — not wired to MCU
MC62IO 0RADIO_GPIO0 / LED— (U9 B1)CYW43 module GPIO0 (drives WL LED on stock Pico-W firmware)

RP2350B die pins not routed to any MC: 5, 10, 15, 24, 29, 32, 41, 50, 51, 59, 60, 62, 64, 65, 68, 69, 76 (GND / +3V3 / +1V1 power), 30/31 (crystal), 61/63 (VREG), 66/67 (USB D−/D+ internal — reach MC26/MC27 through R7/R8/R3), 70–75 (QSPI flash/PSRAM bus to U3/U5).

Radio wiring (U9 — RM2 / CYW43439) ← most important new detail

The RM2 module uses the gSPI 3-wire protocol: one bidirectional data line, a clock, a chip-select, and a power-enable. Host-wake and module-response arrive back on the same data line.

RM2 padModule functionNet on boardRP2350 pin
A1, A4, A7, B4, C1, C7GNDGND
A3SCLKGPIO28/RADIO_CLK (net 74)GPIO28 (die pin 36)
A5PICO (host→module data)GPIO29/RADIO_D (net 64)GPIO29 (die pin 37)
A6POCI (module→host data)Net-(U9-POCI) (net 65)→ R40 (470 Ω) → GPIO29/RADIO_D
B1GPIO0 (module)RADIO_GPIO0/LED (net 72)→ MC62 only
B2~CSGPIO27/RADIO_CS (net 70)GPIO27 (die pin 28)
B3IRQ (host-wake)Net-(U9-IRQ) (net 66)→ R41 (10 kΩ) → GPIO29/RADIO_D
B5WLON (Wi-Fi enable)GPIO26/RADIO_ON (net 71)GPIO26 (die pin 27)
B6BTON (BT enable)GPIO26/RADIO_ON (net 71)tied to WLON — same GPIO26
B7VDDIONet-(U9-VDDBAT) (net 63)+3.3 V (tied to VDDBAT)
C2VDDBATNet-(U9-VDDBAT) (net 63)+3.3 V (through L3 ferrite from the main rail)
C3GPIO2RADIO_GPIO2 (net 68)→ MC53 only
C4GPIO1RADIO_GPIO1 (net 73)→ MC61 only
A2, C5, C6NC(unconnected)

The critical "single-GPIO radio" trick: R40 (470 Ω) ties the module's POCI back onto the same trace as PICO, and R41 (10 kΩ) weakly ties IRQ onto that same trace. The MCU drives GPIO29 when writing to the module, releases it (input) to read, and senses the IRQ as a level change on the same line. This is exactly the Pico-W convention and matches the CYW43 SDK driver's WL_DATA_OUT = WL_DATA_IN = WL_HOST_WAKE = <same pin> configuration.

Firmware CYW43 pin overrides (matches Caleb's working build):

add_compile_definitions(
    CYW43_DEFAULT_PIN_WL_REG_ON=26u
    CYW43_DEFAULT_PIN_WL_DATA_OUT=29u
    CYW43_DEFAULT_PIN_WL_DATA_IN=29u
    CYW43_DEFAULT_PIN_WL_HOST_WAKE=29u
    CYW43_DEFAULT_PIN_WL_CLOCK=28u
    CYW43_DEFAULT_PIN_WL_CS=27u
    CYW43_USES_VSYS_PIN=0
)

Power architecture

+5V (MC pad, USB VBUS or external)
 │
 ├─ L3 (470 Ω ferrite) ─ C9 4.7 µF ─→ +3V3 feed to U9 radio
 │
 └─ U100 AP2112K-3.3 (LDO, EN=LDO_EN pin) ─→ +3V3 rail
       │
       ├─ U1 VDDIO rails (pins 5, 10, 15, 24, 41, 50, 64, 68, 76)
       ├─ U3 W25Q128 flash VDD
       ├─ U5 APS6404 PSRAM VDD  *(DNP)*
       ├─ U9 VDDIO / VDDBAT (through L3)
       ├─ Pull-ups: QSPI_SS (R12), BOOT, RST, etc.
       └─ R6 1 k + D101 red (power LED)

+3V3 → U1 pin 69 (VREG_VIN) → internal buck →
       pin 63 VREG_LX ─ L1 3.3 µH ─ pin 61 VREG_AVDD → +1V1 core rail
       (C6, C7 4.7 µF on VREG_LX; C100 / C101 10 µF bulk)
  • +5V enters on one of the MC pads (not labeled in the BOM table above — check PCB silk).
  • LDO_EN (MC30) must be pulled high for the board to power up. Typical pattern: tie to +5V through R41 or similar pull-up on the carrier, or drive from an upstream host.
  • The RP2350 internal buck SMPS runs from +3V3, uses L1/C6/C7 on VREG_LX/VREG_AVDD, and produces the core +1V1 itself. No external +1V1 supply is required.
  • L3 ferrite bead isolates the radio's +3V3 from digital switching noise on the MCU's +3V3 — important for clean Wi-Fi TX.

QSPI bus (U1 → U3, optional U5)

NetU3 flash pinU5 PSRAM pinMCU QSPI function
QSPI_SCLKCLKSCLKShared clock
QSPI_SD0DI / IO0SI / IO0Shared data line 0
QSPI_SD1DO / IO1SO / IO1Shared data line 1
QSPI_SD2/WP / IO2SIO2Shared data line 2
QSPI_SD3/HOLD / IO3SIO3Shared data line 3
FLASH_SSCSXIP flash chip select (primary)
FLASH2_SSCE#Second chip select — would drive the PSRAM if populated
QSPI_SS(via R12 10 kΩ + SW1 BOOT)Doubles as BOOTSEL strap at reset
  • PSRAM is DNP on production boards (user confirmed 2026-04-17). Firmware must not assume PSRAM is available. The RP2350 SDK PICO_USE_PSRAM option should stay off.
  • Flash is 16 MB (128 Mbit) W25Q128JV — significantly larger than the 4 MB on stock Pico 2 W, so XIP code / large firmware blobs (BHI360/BHI385 patches, look-up tables) fit without squeezing.

Delta vs existing project pin maps

Cross-checked against /home/adom/project/rp2350b_rm2_pinmap.md and /home/adom/project/MoleculePinMapping.md. Those files are accurate for MC1–MC62 contact numbering and silk labels, with one small caveat and several net-level details they don't cover:

In the existing docs:

  • Full MC → GPIO table ✓ (matches the schematic)
  • Radio-pin identification (GPIO26/27/28/29) ✓
  • Boot/reset/USB/SWD contacts ✓
  • Firmware board_config.h expectations ✓

Not in the existing docs, added here:

  1. R40 (470 Ω) + R41 (10 kΩ) bridge topology that makes the single-wire gSPI work — POCI and IRQ tied back onto the GPIO29/RADIO_D net. Explains why WL_DATA_IN == WL_DATA_OUT == WL_HOST_WAKE in Caleb's firmware and confirms HOST_WAKE does not need a separate GPIO.
  2. U9 B5 (WLON) and B6 (BTON) are both tied to GPIO26/RADIO_ON — one GPIO enables both Wi-Fi and Bluetooth rails. Firmware can't sequence them separately.
  3. U5 APS6404L QSPI PSRAM (8 MB) is footprinted but DNP. Existing docs don't mention PSRAM at all. Important because (a) the schematic has FLASH2_SS as a real net even though no chip is soldered, and (b) a future populated revision would use FLASH2_SS as the PSRAM chip-select — code should not assume the net is NC.
  4. U3 flash is W25Q128JV (16 MB) — the existing docs don't specify size. Matters for linker scripts and XIP layout.
  5. L3 470 Ω ferrite bead on the radio's +3V3 feed — firmware/EMI detail that isn't in the pin map but is essential for understanding any Wi-Fi TX behavior.
  6. L1 is labeled "3.3uF" in the BOM CSV but is physically an inductor (3.3 µH) for the RP2350 internal buck converter. A BOM typo — flagged here so nobody trusts it blindly.
  7. MC54–MC57 are reserved silk positions with no footprint placed — BOM confirms these are absent. Existing docs noted "pad not placed"; this file confirms it matches the CPL.
  8. RP2350B (80-pin) variant is confirmed — not the 60-pin RP2350A. All 48 GPIOs and 8 ADCs are routed out.
  9. Internal +1V1 rail is generated by the RP2350's own buck converter (L1 / VREG_LX / VREG_AVDD), not an external regulator. Firmware doesn't need to enable an external +1V1 supply.
  10. Silk pin Tx0 on MC23 and Rx1 on MC22 are the UART0 default pin pair, not just generic GPIO0/GPIO1 — handy for boot logging via stdio_uart.

Gotchas for firmware bring-up

  • LDO_EN must be high or nothing runs. When you first power the bare molecule on a breadboard, remember to tie MC30 to +5 V (or a host GPIO that does).
  • Do not enable PICO_USE_PSRAM. The PSRAM is DNP. Setting this will break the flash XIP at boot because the RP2350 boot ROM may try to probe FLASH2_SS.
  • Do not assume WL_DATA_IN is a separate GPIO when porting CYW43 code that was written for a module with a 4-wire SPI — this board shares data/in/out/host-wake on GPIO29.
  • GPIO26 gates both Wi-Fi and Bluetooth. Don't drop it while doing a Wi-Fi-only workflow expecting BT to stay up from a prior enable — it won't.
  • USB differential pair is through 27 Ω series resistors (R7, R8) routed from die pins 66/67 out to MC26/MC27. That's standard but worth noting if you're adding ESD / CM choke downstream.
  • 12 MHz crystal (Y1) matches the Pico SDK default; no custom PICO_XOSC_STARTUP_DELAY_MULTIPLIER needed.
  • 4-layer board. If you respin the carrier, route the radio ground return on an adjacent layer — the RM2's RF performance is sensitive to return-path integrity under L3.
  • The wiki page is a stub. If you want the rest of the team to find this information, the publish step is still outstanding — see "Publishing to the wiki" below.

Publishing to the wiki (TODO)

The page molecules/molecule-rp2350b-rm2-v1-106000 exists but has no body content, no photo annotations, no pin table, no BOM. The content of this README could be published there with:

adom-wiki page edit molecules/molecule-rp2350b-rm2-v1-106000 \
    --field content \
    --body-md /home/adom/project/bosch-sensortec-demo/hardware/molecule_rp2350b_rm2_v1/README.md

Before doing that, confirm discovery triggers with the project lead (current stub has none).

Description

Edit AI Skill

Molecule: Molecule_RP2350B_RM2_v1 (imported from Curium S3)

3D Model

Files

Download ZIP
3D Molecule_RP2350B_RM2_v1.glb 3D Model

AI Skill Technical Reference

Edit AI Skill

Molecule_RP2350B_RM2_v1

Type: Adom Molecule Creator: abcdefgh Version: v1 Category: other Availability: 100%, 24/7

Overview

Molecule: Molecule_RP2350B_RM2_v1 (imported from Curium S3)

Integration Guide

To use Molecule_RP2350B_RM2_v1 in your design:

  1. Download the schematic symbol and PCB footprint from the Files section
  2. Import into your EDA tool (KiCad or Fusion 360 / EAGLE)
  3. Place the molecule in your schematic and connect the interface pins
  4. Use the 3D model (.glb) for mechanical fit verification

Design Notes

Board design files (.brd, .sch, .f3d) are available for modification and reference.

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!

1 revision · Molecule #17191715246447106000 · Updated 2026-04-17 20:23:55