Skip to content

projects/ janelia/ Mouse Joystick/

rp2040_with_gpio_isolation_sn74cb3q3245

Block orb_weaver_private:rp2040_with_gpio_isolation_sn74cb3q3245 placed in /mcu of mouse-joystick-pcb. RP2040 controller core and its GPIO isolation in one block: the full rp2040 core - W25Q128JVPIQ QSPI flash, 12 MHz ABM8 crystal, decoupling, BOOTSEL and RUN switches - plus four SN74CB3Q3245RGYR 8-channel bidirectional FET bus switches, with all 29 MCU-to-switch connections made inside the block so that routing is placed once instead of re-drawn per board.

Lifecycle routed
Family none (a private block)
Placement anchor (-32, 19) mm, rotation 90°, front side
Sheet rp2040_with_gpio_isolation_sn74cb3q3245.kicad_sch; sheet pins: the board's own arrangement
Drawing mouse-joystick-pcb-mcu-rp2040_with_gpio_isolation_sn74cb3q3245.svg

On the Board

rp2040_with_gpio_isolation_sn74cb3q3245 on the board

Block 9 of the board view: 28.8 × 23.7 mm on the top side, its centre 35.1 mm left of and 19.1 mm below the board centre (X right, Y up, as the enclosure tables); 35 footprints. The picture is the top render clipped around the block, the rectangle the extent of its footprints' courtyards.

Description

RP2040 controller core and its GPIO isolation in one block: the full rp2040 core (W25Q128JVPIQ QSPI flash, 12 MHz ABM8 crystal, decoupling, BOOTSEL and RUN switches) plus four SN74CB3Q3245RGYR 8-channel bidirectional FET bus switches, with all 29 MCU-to-switch connections made inside the block so that routing is placed once instead of re-drawn per board. Derived from rp2040, which remains canonical for an MCU with no isolation and is the upstream for the core half: fix core circuitry there first, then refresh here. The switch half has no upstream; fix it here. This block replaces the retired isolation-only companion rp2040_gpio_isolation_sn74cb3q3245 outright and is the only isolated form. Core parts are positionally identical to rp2040. DO NOT place this block alongside rp2040: it already contains that core. Designators are the 40xxx band. Decoupling: C40003 (1 uF) is the +3.3V bulk at VREG_IN and seven 100 nF serve the nine +3.3V supply pins: C40005 at IOVDD 1, C40014 at IOVDD 10, C40009 at IOVDD 22, C40007 at IOVDD 33, and C40010, C40011 and C40013 at the corner of IOVDD 42, ADC_AVDD 43, VREG_IN 44, USB_VDD 48 and IOVDD 49, where the routed PCB fixes the pairing. C40012 bypasses the flash VCC (U40002 pin 8); C40016 to C40019 bypass VCC pin 20 of U40003 to U40006 in turn. The regulator's +1.1V has C40006 at DVDD 23, C40008 at VREG_VOUT 45 and C40004 (1 uF) beside DVDD 50. 1. THE INTERFACE IS 64 PORTS AND GPIO9 IS NOT ONE OF THEM: 29 raw MCU ports GPIO0-GPIO8 and GPIO10-GPIO29, 29 switched ports ISO0-ISO8 and ISO10-ISO29, USB_D+, USB_D-, +3.3V, GND, and the enable ~{BUS_SW_EN} with its instrument tap ~{BUS_SW_EN}_INST, both for observation only. GPIO9 is spent on the bus-switch enable and has no GPIO or ISO port; there is no ISO9 and no separate ~{OE} port. Any board placing this block gives up GPIO9 and inherits ~{BUS_SW_EN} as a firmware constant. tmc51x0-driver-dev-pcb puts the same signal on GPIO19 and does NOT use this block; do not align them. 2. GPIOn AND ISOn ARE THE SAME NODE WHENEVER THE BUS IS ENABLED. Per index they are an either/or, not a fan-out. Wiring both shorts whatever sits on the always-on side to whatever sits on the switched side the instant firmware pulls ~{BUS_SW_EN} low, and neither ERC nor DRC can see it. The board chooses per signal, and the rule is the powered domain of the far end: a GPIO goes through the switch if and only if its far end sits on a switched rail. See mouse-joystick-pcb docs/interface-map.md, The Rule - Follow The Far End's Power Domain. 3. THE ISO SIDE IS A BARE PASS GATE: no level shift, no buffer, no protection, no direction. Switch I/O is rated 0-5.5 V but the other end of every channel is an RP2040 pad limited to IOVDD+0.3 V, so a 5 V pull-up or a 5 V driver on an ISO pin damages the MCU, not the switch. Do not give ISO ports a direction shape: the gate is symmetric and they are passive by construction. Pull-ups and pull-downs on the switched side must reference the SWITCHED rail, never +3.3V, or they back-power the dead domain through the far chip's input clamps inside a block where the bus switch cannot see it. 4. THE ENABLE IS THE MCU'S, ACTIVE LOW, AND DISABLED BY DEFAULT: GPIO9 drives ~{BUS_SW_EN} to all four pin 19 inputs, with R40007 7.87 k to +3.3V so the bus is isolated at power-on until firmware asserts it. The enable cannot sit behind the switch it enables, and an MCU must be able to connect a bus that is currently disconnected, so the board never sources it: ~{BUS_SW_EN} leaves the block only to be observed, and ~{BUS_SW_EN}_INST through R40004 (1 k) is its instrument tap. NEVER drive it from the board; a second driver fights the MCU and the pull-up is the only thing defining the reset state. Sequencing is board policy and firmware must follow it: isolate first, then drop the rail; raise the rail, confirm it, then connect last. t_en is 14 ns max and t_dis 13 ns max at 3.3 V, so the disconnect is deterministic and instantaneous relative to any rail. 5. SUPPLY IS THE ALWAYS-ON 3.3 V RAIL, DELIBERATELY, AND THERE IS NO Ioff SECOND LINE OF DEFENCE. One +3.3V port feeds the MCU, all four V_CC pins and the pull-up. Powering the switches from the switched domain would give free isolation through Ioff at V_CC=0 and cost no GPIO, and is REJECTED: it hands sequencing to a rail ramp, removes the ability to isolate before powering down, and leaves the always-on MCU driving an enable input on an unpowered part; Ioff is specified for the data terminals (V_CC=0, 0 to 5.5 V, 1 uA max) with no control-input condition stated, and V_IH is characterized only over V_CC 2.3-3.6 V. Isolation therefore rests entirely on the MCU holding ~{BUS_SW_EN} high, which R40007 makes the reset default. This contradicts the catalog note on OW-MISC-SN74CB3Q3245RGYR, which recommends switched-domain power; the block and the boards win, see kicad-libs docs/rp2040-gpio-isolation-design-block-plan.md. 6. IT COSTS 4 mA JUST BY EXISTING: I_CC is 1 mA typ and 2 mA max per package with the switch ON OR OFF, because the charge pump runs regardless, so four packages draw about 4 mA typ and 8 mA max continuously from the always-on rail even with every channel isolated. That is the price of 1:1 coverage and it is accepted. 7. ONE CHANNEL PER GPIO, AND THREE SPARES. Pairing on the RGY-20 package is A_n = pin (n+1) and B_n = pin (19-n); A IS THE SWITCHED SIDE AND B IS THE MCU SIDE. U40003 carries GPIO0-GPIO7 to ISO0-ISO7, U40004 GPIO8 and GPIO10-GPIO15 to ISO8 and ISO10-ISO15, U40005 GPIO16-GPIO23 to ISO16-ISO23, U40006 GPIO24-GPIO29 to ISO24-ISO29. The three unused channels are U40004 channel 2, freed by the enable, and U40006 channels 7 and 8. Treatment for every spare is the same and is not arbitrary: MCU-side B pin to GND, A pin left open, so no node floats on the always-on rail and no switched-side pin is a hidden hard ground. 8. THE BOARD OWES NO-CONNECTS AND ITS OWN BIAS. Most ISO and raw ports are unused on any given board; flag them no-connect rather than leaving them dangling. Unused channels need nothing else: the pass gate has no internal buffer, so an open data pin is not a floating CMOS input. Bus terminations, input bias and instrument taps are board-level or belong to the far-end block, never here. USB_D+ and USB_D- leave OUTSIDE the 27 ohm series resistors R40001 and R40002; do not add more series resistance at the board. 9. CORE GOTCHAS CARRIED FROM rp2040 (full text in that block's description): SWD IS NOT EXPOSED, pins 24 and 25 are deliberately open and no debug-connector footprint exists in the libraries, so this block offers no debug header. Place SW40002 (RUN) physically adjacent to SW40001 (BOOTSEL) on the same board edge or the one-handed hold-BOOTSEL-tap-RUN recovery gesture becomes a two-handed operation on an installed rig. C40015 is the exception to that adjacency: it decouples RUN and belongs hard against pin 26 with a short return. RUN has no external pull-up and needs none (the internal 50-80 k is the only one) and needs neither the 1 k series nor the 10 k pull-up that belong to BOOTSEL's QSPI_SS. A RUN reset does NOT reset U40002, so a warm reset that hangs where a power cycle works is the flash. RUN also releases every GPIO to high-Z, so the placing board must ensure each domain it controls defaults to safe on MCU reset. 10. TWO INSTANCES NEED SEPARATE SHEETS or the internal nets (RUN, ~{USB_BOOT}, QSPI_SS, XIN, XOUT, XOUTB, +1.1V, D+ and D-) silently merge between copies.

Ports

The brief's shape, edge, class and meaning for each port, then what the board wires it to.

Port Shape Edge Class Wired to Board net Board class GPIO Meaning On this board
+3.3V passive west PWR_3V3_LOCAL +3.3V_MCU /+3.3V_MCU PWR_3V3 Always-on 3.3 V for the MCU, flash, four switches and pull-ups.
GND passive west PWR_RETURN_LOCAL GND /GND PWR_RETURN_LOCAL Common return: core, flash, switches (GND, EPAD), crystal, switch frames.
GPIO0 bidirectional west Default PYC_UART_TX /PYC_UART_TX MCU_FINE GP0 Raw MCU GPIO0, 3.3 V; one node with ISO0 via U40003 B1 (pin 18) when enabled. UART TX to pyControl (UART0 TX); out as the MCU sees it
GPIO1 bidirectional west Default PYC_UART_RX /PYC_UART_RX MCU_FINE GP1 Raw MCU GPIO1, 3.3 V; one node with ISO1 via U40003 B2 (pin 17) when enabled. UART RX from pyControl (UART0 RX); in as the MCU sees it
GPIO2 bidirectional west Default open: no-connect flag Raw MCU GPIO2, 3.3 V; one node with ISO2 via U40003 B3 (pin 16) when enabled.
GPIO3 bidirectional west Default open: no-connect flag Raw MCU GPIO3, 3.3 V; one node with ISO3 via U40003 B4 (pin 15) when enabled.
GPIO4 bidirectional west Default open: no-connect flag Raw MCU GPIO4, 3.3 V; one node with ISO4 via U40003 B5 (pin 14) when enabled.
GPIO5 bidirectional west Default open: no-connect flag Raw MCU GPIO5, 3.3 V; one node with ISO5 via U40003 B6 (pin 13) when enabled.
GPIO6 bidirectional west Default open: no-connect flag Raw MCU GPIO6, 3.3 V; one node with ISO6 via U40003 B7 (pin 12) when enabled.
GPIO7 bidirectional west Default open: no-connect flag Raw MCU GPIO7, 3.3 V; one node with ISO7 via U40003 B8 (pin 11) when enabled.
GPIO8 bidirectional west Default open: no-connect flag Raw MCU GPIO8, 3.3 V; one node with ISO8 via U40004 B1 (pin 18) when enabled.
GPIO10 bidirectional west Default open: no-connect flag Raw MCU GPIO10, 3.3 V; one node with ISO10 via U40004 B3 (pin 16) when enabled.
GPIO11 bidirectional west Default open: no-connect flag Raw MCU GPIO11, 3.3 V; one node with ISO11 via U40004 B4 (pin 15) when enabled.
GPIO12 bidirectional west Default open: no-connect flag Raw MCU GPIO12, 3.3 V; one node with ISO12 via U40004 B5 (pin 14) when enabled.
GPIO13 bidirectional west Default open: no-connect flag Raw MCU GPIO13, 3.3 V; one node with ISO13 via U40004 B6 (pin 13) when enabled.
GPIO14 bidirectional west Default HV_DIAG_EN /HV_DIAG_EN MCU_FINE GP14 Raw MCU GPIO14, 3.3 V; one node with ISO14 via U40004 B7 (pin 12) when enabled. 36 V switch diagnostics enable⁵; out as the MCU sees it
GPIO15 bidirectional west Default open: no-connect flag Raw MCU GPIO15, 3.3 V; one node with ISO15 via U40004 B8 (pin 11) when enabled.
GPIO16 bidirectional west Default DAC_SDA_BYP /mcu/DAC_SDA_BYP MCU_FINE Raw MCU GPIO16, 3.3 V; one node with ISO16 via U40005 B1 (pin 18) when enabled.
GPIO17 bidirectional west Default DAC_SCL_BYP /mcu/DAC_SCL_BYP MCU_FINE Raw MCU GPIO17, 3.3 V; one node with ISO17 via U40005 B2 (pin 17) when enabled.
GPIO18 bidirectional west Default open: no-connect flag Raw MCU GPIO18, 3.3 V; one node with ISO18 via U40005 B3 (pin 16) when enabled.
GPIO19 bidirectional west Default HV_EN /HV_EN MCU_FINE GP19 Raw MCU GPIO19, 3.3 V; one node with ISO19 via U40005 B4 (pin 15) when enabled. 36 V input switch enable; out as the MCU sees it
GPIO20 bidirectional west Default open: no-connect flag Raw MCU GPIO20, 3.3 V; one node with ISO20 via U40005 B5 (pin 14) when enabled.
GPIO21 bidirectional west Default FW_TRIG1 /FW_TRIG1 MCU_FINE GP21 Raw MCU GPIO21, 3.3 V; one node with ISO21 via U40005 B6 (pin 13) when enabled. Firmware timing marker; out as the MCU sees it
GPIO22 bidirectional west Default open: no-connect flag Raw MCU GPIO22, 3.3 V; one node with ISO22 via U40005 B7 (pin 12) when enabled.
GPIO23 bidirectional west Default ~{HV_FAULT} /~{HV_FAULT} MCU_FINE GP23 Raw MCU GPIO23, 3.3 V; one node with ISO23 via U40005 B8 (pin 11) when enabled. 36 V switch fault, open-drain, pull-up 3.3 V¹¹; in as the MCU sees it
GPIO24 bidirectional west Default HV_LATCH /HV_LATCH MCU_FINE GP24 Raw MCU GPIO24, 3.3 V; one node with ISO24 via U40006 B1 (pin 18) when enabled. 36 V switch latch-off select¹⁰; out as the MCU sees it
GPIO25 bidirectional west Default FW_TRIG0 /FW_TRIG0 MCU_FINE GP25 Raw MCU GPIO25, 3.3 V; one node with ISO25 via U40006 B2 (pin 17) when enabled. Firmware timing marker; out as the MCU sees it
GPIO26 passive west Default SW_RAIL_SENSE_DIV_2 /mcu/SW_RAIL_SENSE_DIV_2 MCU_FINE GP26 Raw MCU GPIO26/ADC0, 3.3 V; one node with ISO26 via U40006 B3 (pin 16) when enabled. +3.3V_SW presence and level, divided by 2 inside mcu (R408/R409); in as the MCU sees it
GPIO27 passive west Default BRAKE_ISENSE /BRAKE_ISENSE MCU_FINE GP27 Raw MCU GPIO27/ADC1, 3.3 V; one node with ISO27 via U40006 B4 (pin 15) when enabled. Brake sink current readback, ADC1¹¹; in as the MCU sees it
GPIO28 passive west Default HV_SNS /HV_SNS MCU_FINE GP28 Raw MCU GPIO28/ADC2, 3.3 V; one node with ISO28 via U40006 B5 (pin 14) when enabled. 36 V input load-current sense, R_SNS = 249 Ω; in as the MCU sees it
GPIO29 passive west Default ANGLE_OUT_MON /ANGLE_OUT_MON MCU_FINE GP29 Raw MCU GPIO29/ADC3, 3.3 V; one node with ISO29 via U40006 B6 (pin 13) when enabled. Analog output readback, ADC3¹¹; in as the MCU sees it
ISO0 passive east Default open: no-connect flag Switched GPIO0: U40003 A1 (pin 2); bare pass gate, 3.3 V domain only.
ISO1 passive east Default open: no-connect flag Switched GPIO1: U40003 A2 (pin 3); bare pass gate, 3.3 V domain only.
ISO2 passive east Default ~{TMC_CS} /~{TMC_CS} Default GP2 Switched GPIO2: U40003 A3 (pin 4); bare pass gate, 3.3 V domain only. Driver chip select; out as the MCU sees it, via the bus switch
ISO3 passive east Default ~{TMC_DRV_EN} /~{TMC_DRV_EN} Default GP3 Switched GPIO3: U40003 A4 (pin 5); bare pass gate, 3.3 V domain only. Driver enable, active low; out as the MCU sees it, via the bus switch
ISO4 passive east Default TMC_SPI_CIPO /TMC_SPI_CIPO Default GP4 Switched GPIO4: U40003 A5 (pin 6); bare pass gate, 3.3 V domain only. Driver SPI CIPO (SPI0 RX); in as the MCU sees it, via the bus switch
ISO5 passive east Default TMC_DIAG0 /TMC_DIAG0 Default GP5 Switched GPIO5: U40003 A6 (pin 7); bare pass gate, 3.3 V domain only. Driver diagnostic 0; in as the MCU sees it, via the bus switch
ISO6 passive east Default TMC_SPI_SCK /TMC_SPI_SCK Default GP6 Switched GPIO6: U40003 A7 (pin 8); bare pass gate, 3.3 V domain only. Driver SPI clock (SPI0 SCK); out as the MCU sees it, via the bus switch
ISO7 passive east Default TMC_SPI_COPI /TMC_SPI_COPI Default GP7 Switched GPIO7: U40003 A8 (pin 9); bare pass gate, 3.3 V domain only. Driver SPI COPI (SPI0 TX); out as the MCU sees it, via the bus switch
ISO8 passive east Default TMC_DIAG1 /TMC_DIAG1 Default GP8 Switched GPIO8: U40004 A1 (pin 2); bare pass gate, 3.3 V domain only. Driver diagnostic 1; in as the MCU sees it, via the bus switch
ISO10 passive east Default TQ_SPI_SCK /TQ_SPI_SCK Default GP10 Switched GPIO10: U40004 A3 (pin 4); bare pass gate, 3.3 V domain only. Torque ADC SPI clock (SPI1 SCK)⁷; out as the MCU sees it, via the bus switch
ISO11 passive east Default TQ_SPI_COPI /TQ_SPI_COPI Default GP11 Switched GPIO11: U40004 A4 (pin 5); bare pass gate, 3.3 V domain only. Torque ADC SPI COPI (SPI1 TX)⁷; out as the MCU sees it, via the bus switch
ISO12 passive east Default TQ_SPI_CIPO /TQ_SPI_CIPO Default GP12 Switched GPIO12: U40004 A5 (pin 6); bare pass gate, 3.3 V domain only. Torque ADC SPI CIPO (SPI1 RX)⁷; in as the MCU sees it, via the bus switch
ISO13 passive east Default ~{BRAKE_FAULT} /~{BRAKE_FAULT} Default GP13 Switched GPIO13: U40004 A6 (pin 7); bare pass gate, 3.3 V domain only. Brake block fault, active low⁷; in as the MCU sees it, via the bus switch
ISO14 passive east Default open: no-connect flag Switched GPIO14: U40004 A7 (pin 8); bare pass gate, 3.3 V domain only.
ISO15 passive east Default TQ_CONVST_CS /TQ_CONVST_CS Default GP15 Switched GPIO15: U40004 A8 (pin 9); bare pass gate, 3.3 V domain only. ADS8689 convert-start / frame, plain GPIO⁷; out as the MCU sees it, via the bus switch
ISO16 passive east Default DAC_SDA /DAC_SDA Default GP16 Switched GPIO16: U40005 A1 (pin 2); bare pass gate, 3.3 V domain only. I2C0 SDA — analog 0x48, brake 0x49⁷; bidi as the MCU sees it, via the bus switch
ISO17 passive east Default DAC_SCL /DAC_SCL Default GP17 Switched GPIO17: U40005 A2 (pin 3); bare pass gate, 3.3 V domain only. I2C0 SCL — same bus⁷; out as the MCU sees it, via the bus switch
ISO18 passive east Default TQ_CAL_EN /TQ_CAL_EN Default GP18 Switched GPIO18: U40005 A3 (pin 4); bare pass gate, 3.3 V domain only. Torque calibration enable⁷; out as the MCU sees it, via the bus switch
ISO19 passive east Default open: no-connect flag Switched GPIO19: U40005 A4 (pin 5); bare pass gate, 3.3 V domain only.
ISO20 passive east Default open: no-connect flag Switched GPIO20: U40005 A5 (pin 6); bare pass gate, 3.3 V domain only.
ISO21 passive east Default open: no-connect flag Switched GPIO21: U40005 A6 (pin 7); bare pass gate, 3.3 V domain only.
ISO22 passive east Default open: no-connect flag Switched GPIO22: U40005 A7 (pin 8); bare pass gate, 3.3 V domain only.
ISO23 passive east Default open: no-connect flag Switched GPIO23: U40005 A8 (pin 9); bare pass gate, 3.3 V domain only.
ISO24 passive east Default open: no-connect flag Switched GPIO24: U40006 A1 (pin 2); bare pass gate, 3.3 V domain only.
ISO25 passive east Default open: no-connect flag Switched GPIO25: U40006 A2 (pin 3); bare pass gate, 3.3 V domain only.
ISO26 passive east Default open: no-connect flag Switched GPIO26: U40006 A3 (pin 4); bare pass gate, 3.3 V domain only.
ISO27 passive east Default open: no-connect flag Switched GPIO27: U40006 A4 (pin 5); bare pass gate, 3.3 V domain only.
ISO28 passive east Default open: no-connect flag Switched GPIO28: U40006 A5 (pin 6); bare pass gate, 3.3 V domain only.
ISO29 passive east Default open: no-connect flag Switched GPIO29: U40006 A6 (pin 7); bare pass gate, 3.3 V domain only.
USB_D+ bidirectional west USB_HS USB_D+ /USB_D+ USB_HS USB D+ outside R40001 (27 ohm), USB_HS class.
USB_D- bidirectional west USB_HS USB_D- /USB_D- USB_HS USB D- outside R40002 (27 ohm), USB_HS class.
~{BUS_SW_EN} output west Default open: no-connect flag GPIO9 drives all four ~{OE}; R40007 holds it high (isolated) at reset. Never drive it.
~{BUS_SW_EN}_INST output east INSTRUMENT ~{BUS_SW_EN}_INST /~{BUS_SW_EN}_INST INSTRUMENT Instrument tap of ~{BUS_SW_EN} through R40004 (1 k); observe only.

Parts

As placed on the board's sheet; 35 of 35 paired with the brief's references by symbol identity, the rest given the brief's role where the internal part has one, else the catalog's role slug; the placement is the Placement field of the board's symbol, else of the library's (D38); the manufacturer part and the LCSC number are the board's BOM's.

Reference Brief Part Value Role Placement Manufacturer part LCSC DNP
C601 C40001 OW-PASS-C0402C150J3GACAUTO 15pF Crystal load capacitors (15 pF, C0G) beside Y601.1, on XIN C0402C150J3GACAUTO C3888936
C602 C40002 OW-PASS-C0402C150J3GACAUTO 15pF Crystal load capacitors (15 pF, C0G) beside Y601.3, on XOUTB C0402C150J3GACAUTO C3888936
C603 C40003 OW-PASS-CL05A105KL5NRNC 1uF +3.3V bulk at VREG_IN pin 44, 1 uF beside U601.44 (VREG_IN), on +3.3V CL05A105KL5NRNC C307413
C604 C40004 OW-PASS-CL05A105KL5NRNC 1uF +1.1V bulk beside DVDD pin 50, 1 uF beside U601 DVDD pins 23, 50 (one per pin), on +1.1V CL05A105KL5NRNC C307413
C605 C40005 OW-CAP-100N-0402-X5R-16V 100nF IOVDD pin 1 bypass, 100 nF beside U601 IOVDD pins 1, 10, 22, 33, 42, 49 (one per pin), on +3.3V GRM155R62A104KE14D C162178
C606 C40006 OW-CAP-100N-0402-X5R-16V 100nF DVDD pin 23 bypass, 100 nF beside U601 DVDD pins 23, 50 (one per pin), on +1.1V GRM155R62A104KE14D C162178
C607 C40007 OW-CAP-100N-0402-X5R-16V 100nF IOVDD pin 33 bypass, 100 nF beside U601 IOVDD pins 1, 10, 22, 33, 42, 49 (one per pin), on +3.3V GRM155R62A104KE14D C162178
C608 C40008 OW-CAP-100N-0402-X5R-16V 100nF VREG_VOUT pin 45 bypass, 100 nF beside U601.45 (VREG_VOUT), on +1.1V GRM155R62A104KE14D C162178
C609 C40009 OW-CAP-100N-0402-X5R-16V 100nF IOVDD pin 22 bypass, 100 nF beside U601 IOVDD pins 1, 10, 22, 33, 42, 49 (one per pin), on +3.3V GRM155R62A104KE14D C162178
C610 C40010 OW-CAP-100N-0402-X5R-16V 100nF Corner bypass, pins 42-44, 48, 49, 100 nF beside U601 IOVDD pins 1, 10, 22, 33, 42, 49 (one per pin), on +3.3V GRM155R62A104KE14D C162178
C611 C40011 OW-CAP-100N-0402-X5R-16V 100nF Corner bypass, pins 42-44, 48, 49, 100 nF beside U601.43 (ADC_AVDD), on +3.3V GRM155R62A104KE14D C162178
C612 C40012 OW-CAP-100N-0402-X5R-16V 100nF U40002 VCC pin 8 bypass, 100 nF beside U602.8 (VCC), on +3.3V GRM155R62A104KE14D C162178
C613 C40013 OW-CAP-100N-0402-X5R-16V 100nF Corner bypass, pins 42-44, 48, 49, 100 nF beside U601.48 (USB_VDD), on +3.3V GRM155R62A104KE14D C162178
C614 C40014 OW-CAP-100N-0402-X5R-16V 100nF IOVDD pin 10 bypass, 100 nF beside U601 IOVDD pins 1, 10, 22, 33, 42, 49 (one per pin), on +3.3V GRM155R62A104KE14D C162178
C615 C40015 OW-CAP-100N-0402-X5R-16V 100nF RUN pin 26 filter, 100 nF beside SW602.1, on RUN GRM155R62A104KE14D C162178
C616 C40016 OW-CAP-100N-0402-X5R-16V 100nF U40003 VCC pin 20 bypass, 100 nF beside U603.20 (VCC), on +3.3V GRM155R62A104KE14D C162178
C617 C40017 OW-CAP-100N-0402-X5R-16V 100nF U40004 VCC pin 20 bypass, 100 nF beside U604.20 (VCC), on +3.3V GRM155R62A104KE14D C162178
C618 C40018 OW-CAP-100N-0402-X5R-16V 100nF U40005 VCC pin 20 bypass, 100 nF beside U605.20 (VCC), on +3.3V GRM155R62A104KE14D C162178
C619 C40019 OW-CAP-100N-0402-X5R-16V 100nF U40006 VCC pin 20 bypass, 100 nF beside U606.20 (VCC), on +3.3V GRM155R62A104KE14D C162178
R601 R40001 OW-RES-27R-0402 27 USB_DP series, 27 R ERJ2GEJ270X C278580
R602 R40002 OW-RES-27R-0402 27 USB_DM series, 27 R ERJ2GEJ270X C278580
R603 R40003 OW-PASS-RC0402FR-071KL 1k Crystal drive limit, 1 k, XOUT RC0402FR-071KL C106235
R604 R40004 OW-PASS-RC0402FR-071KL 1k ~{BUS_SW_EN} instrument tap, 1 k RC0402FR-071KL C106235
R605 R40005 OW-RES-10K-0402 10k QSPI_SS pull-up, 10 k beside U601.56 (QSPI_SS), on QSPI_SS ERJ2GEJ103X C278577
R606 R40006 OW-PASS-RC0402FR-071KL 1k BOOTSEL series, 1 k, QSPI_SS to ~{USB_BOOT} RC0402FR-071KL C106235
R607 R40007 OW-PASS-FRC0402F7871TS 7.87k ~{BUS_SW_EN} pull-up: bus isolated at reset FRC0402F7871TS C2998145
SW601 SW40001 OW-MISC-436333045822 436333045822 BOOTSEL switch, grounds ~{USB_BOOT} 436333045822 C7185056
SW602 SW40002 OW-MISC-436333045822 436333045822 RUN switch, grounds RUN pin 26 436333045822 C7185056
U601 U40001 OW-MCU-RP2040 RP2040 Controller core; GPIO9 is the switch enable RP2040 C2040
U602 U40002 OW-MCU-W25Q128JVPIQ W25Q128JVPIQ QSPI boot flash, 16 MB W25Q128JVPIQ C190862
U603 U40003 OW-MISC-SN74CB3Q3245RGYR SN74CB3Q3245RGYR FET bus switch, GPIO0-7 to ISO0-7 SN74CB3Q3245RGYR C201559
U604 U40004 OW-MISC-SN74CB3Q3245RGYR SN74CB3Q3245RGYR FET bus switch, GPIO8,10-15 to ISO8,10-15 SN74CB3Q3245RGYR C201559
U605 U40005 OW-MISC-SN74CB3Q3245RGYR SN74CB3Q3245RGYR FET bus switch, GPIO16-23 to ISO16-23 SN74CB3Q3245RGYR C201559
U606 U40006 OW-MISC-SN74CB3Q3245RGYR SN74CB3Q3245RGYR FET bus switch, GPIO24-29 to ISO24-29 SN74CB3Q3245RGYR C201559
Y601 Y40001 OW-XTAL-12M-3225-10PF 12MHz 12 MHz crystal ABM8-272-T3 C20625731

Operating Notes

  • 64 ports: GPIO0-8 and GPIO10-29 are the raw pads, ISO0-8 and ISO10-29 the same pads behind one switch channel each; ~{BUS_SW_EN} and its tap ~{BUS_SW_EN}_INST leave for observation only. GPIO9 (pin 12) is the enable and has no GPIO or ISO port. Per index, GPIOn and ISOn are one node when enabled: wire one or the other, by the far end's power domain.
  • The ISO side is a bare pass gate: no level shift, buffer or protection. Switch I/O is rated to 5.5 V but the MCU pad behind it is limited to IOVDD + 0.3 V; pulls on the switched side reference the switched rail, never +3.3V. Unused ports get no-connect flags on the placing sheet.
  • Enable: GPIO9 drives ~{BUS_SW_EN} (active low) to the four ~{OE} pins; R40007 (7.87 k) keeps the bus isolated from power-on; R40004 (1 k) makes the instrument tap. t_en 14 ns, t_dis 13 ns max at 3.3 V. Firmware: isolate, drop the rail; raise, confirm, connect.
  • Supply: always-on +3.3V for IOVDD, USB_VDD, ADC_AVDD, VREG_IN, the flash and the switches' VCC (2.3-3.6 V); the regulator makes +1.1V for DVDD. Each switch draws 1 mA typ, 2 mA max on or off (about 4 mA typ, 8 mA max total). Isolation rests on the enable, not on Ioff.
  • Core: Y40001 12 MHz with C40001/C40002 (15 pF) and R40003 (1 k); W25Q128 on QSPI; BOOTSEL grounds ~{USB_BOOT} (R40006 1 k to QSPI_SS, R40005 10 k up); RUN grounds pin 26 (C40015, internal pull-up only), does not reset the flash, releases GPIO to high-Z. SWD is not exposed. Two instances need separate sheets.

Placement and Routing

Controller core

U40001, C40003, C40005, C40007, C40009, C40010, C40011, C40013, C40014, R40005, C40004, C40006, C40008

U40001: QSPI to U40002, USB through R40001/R40002, GPIO0-29 to the switches' B side, GPIO9 as the enable. +3.3V: C40003 (1 uF) bulk at VREG_IN and seven 100 nF for the nine +3.3V supply pins: C40005 at IOVDD 1, C40014 at IOVDD 10, C40009 at IOVDD 22, C40007 at IOVDD 33; C40010, C40011 and C40013 at the corner of IOVDD 42, ADC_AVDD 43, VREG_IN 44, USB_VDD 48 and IOVDD 49, where the routed PCB fixes the pairing. +1.1V: C40006 at DVDD 23, C40008 at VREG_VOUT 45, C40004 (1 uF) beside DVDD 50.

  • Place: Exposed pad to GND copper with vias; GPIO escapes toward the switches.
  • Place: Each capacitor hard against its pin with the shortest return to the GND pad (57); the corner pins 42 to 44, 48 and 49 share C40010, C40011 and C40013.
  • Route: Switched signals leave on the A side; raw GPIO ports are the same B-side traces.
  • Route: +1.1V stays inside the block; the switches' VCC pins have their own capacitors.

Clock

C40001, Y40001, C40002, R40003

Y40001 (12 MHz) between XIN and XOUTB with 15 pF loads; R40003 (1 k) in the XOUT leg.

  • Place: All four at pins 20 and 21 over a local ground; nothing else beside the crystal.
  • Route: Short traces, no vias, GND fill around; keep switching lines away.

QSPI flash

U40002, C40012

U40002 (W25Q128JVPIQ) on QSPI_SCLK, SD0-SD3 and QSPI_SS; C40012 decouples pin 8.

  • Place: Next to pins 51-56, C40012 at pin 8, pad 9 to GND.
  • Route: Six short QSPI lines of similar length; up to 133 MHz.

USB

R40001, R40002

R40001/R40002 (27 ohm) between the pads (D+, D-) and the USB_D+/USB_D- ports.

  • Place: At pins 46 and 47; the ports leave outside them.
  • Route: USB_HS class, routed as a pair, no stubs.

BOOTSEL and RUN

R40006, SW40001, SW40002, C40015

R40005 pulls QSPI_SS up; SW40001 grounds ~{USB_BOOT} via R40006; SW40002 grounds RUN, C40015 filters it.

  • Place: SW40002 beside SW40001 on one edge (hold BOOTSEL, tap RUN); C40015 hard against pin 26.
  • Route: RUN is DC with an internal pull-up: length is free, noise is not.

Bus switch enable

R40007, R40004

R40007 (7.87 k) holds ~{BUS_SW_EN} high at reset; R40004 (1 k) makes ~{BUS_SW_EN}_INST.

  • Place: R40007 near pin 12; R40004 toward the instrument escape.
  • Route: One net to all four pin 19 inputs.

Bus switches U40003 and U40004

U40003, C40016, U40004, C40017

U40003 and U40004 pass GPIO0-7 and GPIO8, GPIO10-15 to the ISO ports (B side MCU, A side switched); C40016 (U40003) and C40017 (U40004) decouple pin 20. U40004 channel 2 spare (B2 pin 17 to GND, A2 pin 3 open).

  • Place: C40016 and C40017 at pin 20 with short returns to pin 10 and the EPAD.
  • Route: B side to the MCU, A side to the ISO port vias; EPADs to GND.

Bus switches U40005 and U40006

U40005, C40018, U40006, C40019

U40005 and U40006 pass GPIO16-23 and GPIO24-29 to the ISO ports (B side MCU, A side switched); C40018 (U40005) and C40019 (U40006) decouple pin 20. U40006 channels 7 and 8 spare (B7/B8 pins 12/11 to GND, A7/A8 pins 8/9 open).

  • Place: C40018 and C40019 at pin 20 with short returns to pin 10 and the EPAD.
  • Route: B side to the MCU, A side to the ISO port vias; EPADs to GND.

Library Identity

Block orb_weaver_private:rp2040_with_gpio_isolation_sn74cb3q3245
Resolution the placed id is in the library
Brief design_blocks/orb_weaver_private.kicad_blocks/rp2040_with_gpio_isolation_sn74cb3q3245.kicad_block/rp2040_with_gpio_isolation_sn74cb3q3245.brief.yaml, the block's brief
Published sheet 8ead76fd0ae4e22c
Published PCB d79a8f4d7e226204
Source lock symbol snapshot 43790a2d8bf6787f, published 2026-10-14
Placed sheet 740f29d1bb57716a: matches the brief: its 35 parts by internal part, every port by name and shape; the file is the board's copy under its own designators
Netlist check ok on 2026-10-15: every pin on the brief's net; 40 identity records differ, the board's own instances