← AXC-005

Circuit review & bench-test guide

AXC-005 — nRF24L01+ socket carrier PMOD module

Design-stage — board not yet fabricated

Document purpose#

This document explains the axc-005-nrf24 PMOD module at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on generate_design.py, README.md, and the ERC report in reports/.

This board has never been fabricated. Repository status is schematic generated, ERC clean (0 errors / 0 warnings), netlist reviewed; PCB layout not started; not released. There is no PCB, no BOM export, no DRC record, and no first-article bench result. Every number below is a target to verify against real hardware, not a proven result.

1. What the board does#

The board is a socket carrier for the ubiquitous nRF24L01+ 2.4 GHz packet-radio breakout — no RF silicon lives on this PCB. A standard 2×4 socket (J2) accepts the breakout; the carrier adds the platform's SPI conditioning, the CE/~IRQ control network, and — critically — bulk capacitance at the socket to survive the transmit power-amp ramp. It is a PMOD Type 2A "expanded SPI" module: SPI mode 0 at ≤ 8 MHz (10 MHz absolute max), CE to trigger/gate the radio, and an active-low ~IRQ on a PMOD pin per the platform interrupt rule. It is the cheap two-way robot remote, pairing with the joystick (axo-013) and the actuator line.

Functional block diagram#

PMOD host (3.3 V)              Carrier                nRF24L01+ breakout
┌────────────────┐   ┌──────────────────────┐   ┌────────────────────┐
│ 1 CS_N ────────┼──>│ J2.4 CSN             │   │ SPI slave          │
│ 2 MOSI ────────┼──>│ J2.6 MOSI            │   │ 2.4 GHz ShockBurst │
│ 3 MISO <──R1───┼───│ J2.7 MISO            │   │ PCB antenna ►►     │
│ 4 SCK ─────────┼──>│ J2.5 SCK             │   │ (hangs off-board)  │
│ 7 IRQ_N <─R2───┼─┬─│ J2.8 IRQ  (R3 10k PU)│   │                    │
│ 8 CE ──────────┼─│─│ J2.3 CE   (R4 10k PD)│   │ 1 GND  2 VCC       │
│ 6/12 3V3 ──────┼─│>│ J2.2 VCC ─ C1 100n + │   │                    │
│ 5/11 GND ──────┼─┴─│ J2.1 GND    C2/C3 2×10µ                       │
└────────────────┘   └──────────────────────┘   └────────────────────┘

2. Safety and scope boundaries#

3. Power and control sequence#

  1. Socket VCC (J2.2) comes from PMOD 3V3; C1 (100 nF) + C2/C3 (2 × 10 µF) sit right at the socket to source the TX-ramp current the breakout's own small caps cannot.
  2. The breakout powers up in Power Down and the host brings it through Standby to active modes via the CONFIG register.
  3. CE idles low — R4 (10 k) is a pull-down, so the radio stays in Standby-I until the host deliberately drives CE high. This prevents a floating CE from starting an unwanted transmit at power-on.
  4. ~IRQ (J2.8) is active-low and pulled up by R3 (10 k) on-carrier; it asserts on TX-done, RX-done, or MAX_RT and reaches the host through R2.
  5. SPI mode 0: CSN low selects the radio; commands (R_REGISTER / W_REGISTER / W_TX_PAYLOAD, etc.) clock at ≤ 8 MHz.
  6. To transmit: load a payload, then pulse CE high for > 10 µs; the PA ramps (the current spike) and the packet goes out with auto-ack. To receive: hold CE high to keep the radio listening.

4. Interfaces#

ReferencePins/signalsIntended use
J112-pin PMOD plug, Type 2A1 ~CS(CSN), 2 MOSI, 3 MISO (via R1), 4 SCK, 7 ~IRQ (via R2), 8 CE, 5/11 GND, 6/12 3V3, 9/10 NC
J22×4 pin socket, 2.54 mmnRF24L01+ breakout socket: 1 GND, 2 VCC, 3 CE, 4 CSN, 5 SCK, 6 MOSI, 7 MISO, 8 IRQ. Pin-1 = GND corner; match the breakout key

There are no dedicated test points; bench probing is at J1 pins, the socket pins, and the passive bank.

5. Component-by-component review#

5.1 Socket and radio#

Ref.PartFunction and why neededIf absent/openIf shorted, wrong, or misassembled
J22×4 pin socket, 2.54 mm (PinSocket_2x04_P2.54mm_Vertical); plug-in = nRF24L01+ breakoutAccepts the radio breakout and carries VCC/GND/SPI/CE/IRQNo radioReversed breakout swaps VCC↔GND — kills the module. A bent/open socket pin gives partial SPI (looks dead or intermittent); the breakout is 3.3 V, not 5 V-tolerant

5.2 SPI/IRQ conditioning and CE default#

Refs.ValueFunctionIf omitted or wrong
R1100 ΩSeries protection on the module-driven MISO lineOpen = host reads no SPI data: CONFIG/STATUS read as 0x00/0xFF, radio looks dead though fine
R2100 ΩSeries protection on the module-driven ~IRQ lineOpen = host never sees the interrupt: TX/RX/MAX_RT events appear to hang
R310 kΩ to 3V3~IRQ pull-up (active-low interrupt idles high on-carrier per line rule)Missing = ~IRQ floats; spurious or missed interrupts
R410 kΩ to GNDCE pull-DOWN — radio stays in Standby until the host drives CE highMissing = CE floats; the radio can start transmitting/listening at power-on unbidden. A pull-up here would be wrong (auto-TX)

5.3 Socket bulk and decoupling#

Refs.ValueFunctionIf omitted or wrong
C1100 nF 16 V X7RSocket HF decouplingRail noise into the synthesiser; spurs, unstable link
C2, C310 µF 10 V X5R each (20 µF total)Socket bulk for the TX power-amp ramp — the classic nRF24 brownout fixBrownout on transmit: resets, MAX_RT storms, "works in RX only". Do not shrink or omit — this is the whole point of the carrier
#FLG01–02ERC power flags (3V3, GND)Bookkeeping only

Every ref-des is covered: J1, J2, R1–R4, C1–C3.

6. Datasheet summary and design interpretation#

DeviceKey manufacturer facts used hereBoard-specific interpretation
Nordic nRF24L01+1.9–3.6 V supply (not 5 V tolerant on VCC); SPI mode 0 ≤ 10 MHz (design uses ≤ 8 MHz); CONFIG register at address 0x00, power-on reset value 0x08 (EN_CRC set); CE > 10 µs pulse triggers TX, CE high sustains RX; ~IRQ active-low on TX_DS/RX_DR/MAX_RT; TX PA ramp draws a current spike (tens of mA, up to ~115 mA transient class at 0 dBm+PA settings)The CONFIG read (expect 0x08 after POR) is the SPI bring-up gate. R4's CE pull-down enforces safe Standby default. The 2×10 µF bulk targets the PA-ramp spike
nRF24 breakout moduleGeneric 2×4 pinout: 1 GND, 2 VCC, 3 CE, 4 CSN, 5 SCK, 6 MOSI, 7 MISO, 8 IRQ; PCB or +PA/LNA variantsOrientation is the hazard — pin 1 is the GND corner; the design flags this on schematic and (at layout) silkscreen
Enhanced ShockBurstAuto-ack, auto-retransmit (ARC/ARD), 6 RX pipes, CRCThe two-module ping test exercises addressing + auto-ack end to end

The nRF24L01+ datasheet is the Nordic Product Specification; verify the exact breakout variant (plain PCB-antenna vs +PA/LNA SMA), as the +PA/LNA variant draws far more TX current and needs even more bulk.

7. Expected values before bench testing#

All values are design targets for a board that does not yet exist.

QuantityTargetHow to measure
VCC-to-GND, unpowered (breakout removed)High (caps only), both polaritiesDMM
MISO / ~IRQ series~100 Ω to the PMOD pinDMM at R1/R2
~IRQ idle≈3.3 V (R3 pull-up) after powerDMM/scope
CE idle≈0 V (R4 pull-down)DMM/scope
Socket pin-1 vs breakout pin-1GND-corner alignedVisual + continuity
CONFIG register (0x00) after POR0x08SPI read, logic analyzer
Idle current (Standby-I)~tens of µA class (breakout dependent)Bench supply
TX-ramp current spiketens of mA (up to ~115 mA class on +PA/LNA); record actualCurrent probe / 0.1 Ω shunt + scope — a DMM cannot catch it
Rail droop at socket during TXVCC stays > 3.0 VScope, AC-coupled, at C2/C3
Two-module linkTX node gets TX_DS (auto-ack RX), RX node gets RX_DRSTATUS register / ~IRQ on both nodes

8. Manual schematic and assembly review checklist#

9. Ordered bench-test procedure#

Stop at the first abnormal result. Record board serial, breakout variant and marking, and supply identity. Verify breakout orientation before every power-on.

A. Unpowered inspection and resistance tests (breakout removed)#

  1. Visual: socket, passive bank, silkscreen orientation mark.
  2. DMM: VCC-to-GND both polarities; MISO/~IRQ series ≈ 100 Ω; ~IRQ to 3V3 ≈ 10 k; CE to GND ≈ 10 k. Confirm no VCC-GND short.

B. Orientation and power-on#

  1. Confirm the breakout's pin-1/GND marker aligns with J2 pin 1, then seat it fully.
  2. Power at 3.3 V, 250 mA limit. Expect a small idle current, no heating. Any large current draw = suspect a reversed breakout — remove power.

C. SPI identity and register bring-up#

  1. With a logic analyzer or host in a safe mode (CE held low), read CONFIG (0x00); expect 0x08 after a fresh power-on. A wrong value stops the test — debug SPI/CSN/orientation first.
  2. Write and read back a scratch register (e.g. an address register or RF_SETUP) to confirm write access.
  3. Read STATUS and the FIFO_STATUS to confirm sane defaults.

D. Transmit-ramp / brownout characterisation (the carrier's core test)#

  1. Insert a current probe/shunt in the 3.3 V feed; scope it and VCC (at C2/C3) simultaneously.
  2. Configure a PTX, load a payload, and pulse CE high > 10 µs. Capture the PA-ramp current spike and the minimum VCC. VCC must stay > 3.0 V.
  3. Deliberately reproduce the brownout signature once for the record: set the bench limit to 100 mA and transmit repeatedly; document the resets / MAX_RT behaviour so field failures are recognisable. Restore 250 mA after.

E. Two-module ping test (the real RF test)#

  1. Bring up a second nRF24 node (a second AXC-005 is ideal) with matching channel, data rate, address, and auto-ack.
  2. PTX pulses CE, sends a payload; confirm TX_DS (auto-ack received) on the transmitter and RX_DR on the receiver via STATUS/~IRQ.
  3. Log packet-error rate over N packets; sweep a couple of data rates and channels. Check antenna overhang / no nearby metal.

F. Host (PMOD) bring-up and robustness#

  1. Repeat C–E through the FPGA fabric SPI; compare against a logic-analyzer tap. Exercise the CE-pulse and ~IRQ handling from gateware.
  2. Measure PMOD 3V3 droop at the socket during a TX ramp before trusting long sessions.
  3. 50 power cycles with a transmit each time; count failures.

10. Troubleshooting map#

SymptomFirst measurementsLikely areas
Large current at power-on / hot moduleVCC-GND, orientationReversed breakout (VCC↔GND) — power off immediately
CONFIG ≠ 0x08 / reads 0x00 or 0xFFSPI lines, CSN, MISO at R1R1 open, CSN wiring, orientation, dead/absent breakout
Radio transmits at power-on unbiddenCE idle levelR4 wired as pull-up instead of pull-down, or CE floating
~IRQ never asserts~IRQ at R2, R3 pull-upR2 open, R3 missing, DioMapping/config
Resets / MAX_RT storms on TXShunt + VCC droop at C2/C3Supply limit too low, C2/C3 missing, thin rail — the classic brownout
Link fails despite good SPIChannel/rate/address match, antennaMismatched RF config, antenna against metal, +PA/LNA needs more bulk

11. Bench record template#

FieldRecord
Board revision / serial; breakout variant + marking
Orientation verified (pin-1/GND)
Supply / shunt / analyzer IDs and calibration
Unpowered resistance results (9.A)
CONFIG read after POR
TX-ramp peak current, min VCC
Brownout reproduction notes (9.D.3)
Two-module ping result (TX_DS / RX_DR, PER)
Channels / data rates tested
Host rail droop measurement
Deviations, photos, raw-file paths
Reviewer / date / disposition

12. Review conclusion#

This carrier carries no radio silicon — its whole value is the socket, the control-default network, and the bulk. The two features that earn it are R4's CE pull-down (radio powers up safely in Standby, never transmitting on a floating pin) and the 2 × 10 µF socket bulk that keeps the TX power-amp ramp from browning out the rail. The two operating disciplines are the orientation check (pin-1 = GND corner; a reversed breakout swaps VCC onto GND and destroys it) and the CONFIG = 0x08 read as the SPI bring-up gate. The most valuable bench activity is the shunt-and-scope TX-ramp capture in 9.D, and the two-module ping in 9.E is the real RF proof. Open risks: no PCB exists (bulk placement and antenna overhang are promises), and the +PA/LNA breakout variant, if used, needs even more bulk than rev 1 provides.