ST25R3911B Single-Ended Cable Mode — Only 10mm Read Range Despite Good SWR Match
Just a heads-up, this post was written by AI. I used it to document a process of debugging this board, and create a summary for a forum post.
Platform: ST25R3911B, RFAL library, ISO 14443A
Config: Single-ended mode, 0.3m 50Ω coaxial cable, remote antenna PCB
Supply: 5V on VDD and VIO
Read range: ~10mm (expected 40-80mm for antenna size)
Setup Overview
I'm using an ST25R3911B driving a remote PCB antenna via a 0.3m 50Ω coaxial cable in single-ended mode (RFO1). The antenna is a 2-turn square loop, 70×70mm outer dimension, 1.4mm trace width, 0.7mm spacing, calculated inductance ~735nH.
The chip drives two antennas switched alternately — RFO1 to the remote antenna via coax, RFO2 to a local antenna. Both antennas show identical poor range (~10mm), so the problem is not specific to the coax path.
Hardware — Reader PCB Matching Network
Designed using the ST25R Antenna Matching Tool V3.6.2 with these parameters:
- Target: ST25R3911B
- Config: single-ended-cable
- Antenna inductance: 701 nH
- Target matching Z: 8 Ω
- Target Q: 40
- Cable length: 0.3 m
Reader-side components (confirmed populated):
- EMC inductor: 330nH, 160mΩ DCR
- First shunt: 220pF C0G
- Series cap: 176pF C0G
- Middle shunt: 452pF C0G
- RFI1 divider: 10pF / 150pF C0G
- SMA shunt: 154pF C0G
Hardware — Antenna PCB
Topology: Coax SMA → C1 (series) → node → C2 (parallel to GND) + R1 (parallel to GND) + Antenna loop
Current tuned values (arrived at empirically via VNA):
- C1 = 47pF C0G
- C2 = 110pF C0G
- R1 = 1kΩ
- All caps confirmed C0G/NP0 (Kyocera KGM series)
Antenna:
- 2-turn square PCB loop
- Outer dimension: 70×70mm (trace center to center)
- Trace width: 1.4mm, spacing: 0.7mm
- Calculated inductance (Greenhouse formula): ~735nH
- DC resistance measured: 0.1Ω
VNA Results
After extensive iterative tuning, best result achieved:
- SWR: 1.04 at the reader SMA (measuring through 0.3m cable)
- S11: -35dB
- Resonance: ~13.85 MHz (slightly high, 13.56 MHz target)
- Impedance: ~49Ω — essentially perfect 50Ω match
Smith chart shows clean resonance loop passing through center.
Voltage Measurements (scope, 5V supply)
| RFO1 pin | 4V |
| After 330nH EMC inductor | 9V |
| After matching network / before SMA | 5-6V |
| After 0.3m coax cable at antenna SMA | 6V |
| Directly across antenna loop terminals | 7V |
The problem: Despite SWR=1.04 and a resonant antenna tank, there is virtually no Q multiplication at the antenna. 6Vpp into the antenna SMA, only 7Vpp across the antenna loop.
Software Configuration
RFAL library, confirmed working after fixing a critical bug:
Bug fixed: The handshake() function was calling rfalNfcInitialize() on every poll cycle when no tag was present, constantly resetting the chip including analog config and calibration. This was causing instability. Fixed by moving init to a one-time startup function.
Current firmware:
// Called once at startup: void init() { spiInit(spiHandler); rfalNfcInitialize(); rfalChipSetAntennaMode(true, false); // single-ended rfalAdjustRegulators(NULL); rfalCalibrate(); } // Poll loop: NFC_State handshake() { rfalNfcDiscoverParam discPParam = { .compMode = RFAL_COMPLIANCE_MODE_ISO, .techs2Find = RFAL_NFC_POLL_TECH_A, .techs2Bail = 0, .totalDuration = 1000U, .devLimit = 1, .maxBR = RFAL_BR_106, }; rfalNfcDiscover(&discPParam); uint32_t timeoutRef = HAL_GetTick(); while (rfalNfcGetState() != RFAL_NFC_STATE_ACTIVATED) { rfalNfcWorker(); if (HAL_GetTick() - timeoutRef > 1500U) return NFC_State::SENSOR_NOT_DETECTED; } return NFC_State::OK; }
Register readback after init:
- 0x00 (IO_CONF1) = 0x8F → bit 7 = 1 → single-ended confirmed :white_heavy_check_mark:
- 0x27 (RFO_AM_OFF_LEVEL) = 0x00 → all driver segments enabled = maximum power :white_heavy_check_mark:
- Transmit frequency confirmed at 13.56 MHz on scope :white_heavy_check_mark:
What I've Ruled Out
- :white_heavy_check_mark: Antenna trace continuity — 0.1Ω DC resistance, no broken vias
- :white_heavy_check_mark: Cap dielectric — all C0G/NP0 confirmed
- :white_heavy_check_mark: Driver strength — register 0x27=0x00 (max power)
- :white_heavy_check_mark: Single-ended mode — confirmed via register readback
- :white_heavy_check_mark: Firmware constant reinit bug — fixed, slight range improvement after fix
- :white_heavy_check_mark: Transmit frequency — confirmed 13.56 MHz on scope
- :white_heavy_check_mark: Both antennas affected equally — rules out coax-specific issue
- :white_heavy_check_mark: Supply voltage — 5V on VDD and VIO, within spec
Key Questions
- Why is Q multiplication not happening at the antenna despite SWR=1.04? The 50Ω coax termination seen through C1 may be the dominant loss (50Ω coax presents ~77Ω effective parallel load to the tank), killing Q. Is this expected in single-ended cable mode?
- Is 10mm range expected for single-ended cable operation? I understand single-ended costs 6dB vs differential. Combined with 3.3V→5V improvement, are there other fundamental limitations I'm missing?
- Should I expect voltage multiplication at the antenna in this topology? Or does the 50Ω matching inherently prevent high Q operation at the antenna?
- Any suggestions for improving range in single-ended cable mode without switching to differential?
Any help appreciated — I've been at this for a while and running out of ideas!
Summary of Setup
ST25R3911B (5V, single-ended) ↓ RFO1330nH EMC inductor ↓Pi matching network (220pF || 176pF series || 452pF) ↓RFI1 tap (10pF/150pF divider) ↓0.3m 50Ω coax ↓Antenna PCB: C1=47pF series → C2=110pF || R1=1kΩ || 2-turn 70×70mm loop (735nH, 0.1Ω) Result: SWR=1.04, S11=-35dB, range ~10mm
