ST25R3916 Documentation

ST25R3916 Documentation covers quick start steps, SPI wiring, ESP32 setup, performance notes, test workflow, and troubleshooting for the ELECHOUSE ST25R3916 NFC Reader Module.

Quick Start

  1. Use the module over SPI. This board is built around the high-performance STMicroelectronics ST25R3916 NFC reader IC.
  2. Wire the board to your host MCU using MOSI, MISO, SCLK, CS, IRQ, 5V, and GND.
  3. Install the ST25R3916 Arduino sample / library package referenced in the test document.
  4. Open the test sketch, compile, upload, and watch Serial Monitor at 115200 baud.
  5. Present a tag to confirm detection and SPI communication.

Key Technical Facts

  • Chip: STMicroelectronics ST25R3916
  • Operating frequency: 13.56 MHz
  • Interface: SPI
  • Supported standards: ISO 14443A/B, ISO 15693, FeliCa, NFC Forum Type 1–5
  • Card emulation: NFC Forum Type 4 with active load modulation
  • Typical strength: long reading distance, especially on ISO 15693 tags

SPI Wiring

ESP32 Pin ST25R3916 Pin Notes
D23 MOSI SPI MOSI
D19 MISO SPI MISO
D18 SCLK SPI clock
D5 CS Chip select
D4 IRQ Interrupt
VIN 5V Power
GND GND Common ground

Supported Platforms

  • ESP32
  • Arduino-class boards with SPI
  • STM32 and other ARM MCUs
  • Raspberry Pi via SPI
  • Any microcontroller with a stable SPI interface

Initialization Method

  1. Install Arduino IDE and ESP32 board support.
  2. Install the ST25R3916 library ZIP / sample package.
  3. Open the sample sketch testingCode_LED or equivalent test sketch.
  4. Verify the board / port / upload speed settings.
  5. Upload the sketch, open Serial Monitor at 115200, and test with a nearby tag.

Example Test Workflow

# Arduino IDE baseline test flow
1. Install ESP32 board package
2. Install ST25R3916 sample library ZIP
3. Open testingCode_LED
4. Verify sketch
5. Upload to ESP32
6. Open Serial Monitor at 115200
7. Tap a tag and watch UID output

Libraries and Resources

Reading Performance Highlights

Under ELECHOUSE test conditions with the on-board PCB antenna, the ST25R3916 module showed strong performance across multiple tag families:

  • NTAG213 / NTAG216: about 6.5 cm
  • FeliCa: about 5.0 cm
  • MIFARE DESFire: about 2.8 cm
  • ISO 15693 ICODE SLI-S: about 9.5 cm
  • ISO 15693 ICODE SLIX2: up to 11.0 cm

Actual distance varies with tag type, orientation, shielding, and surrounding metal.

Common Errors

  • No serial output: wrong COM / serial port or wrong baud rate.
  • Sketch compiles with warnings: some library warnings may be harmless if upload and runtime behavior are correct.
  • No LED blink / no UID: re-check CS and IRQ first, then MOSI / MISO / SCLK.
  • Weak reading distance: tag is too far away, orientation is poor, or there is strong nearby interference.

Troubleshooting

  • Start with the provided LED / UID detection example before building a full application.
  • Keep the tag within close range during first tests.
  • Double-check MOSI / MISO are not swapped.
  • Confirm your ESP32 is in normal run mode and Serial Monitor is set to 115200 baud.

Version Differences / Positioning

  • Compared with PN532, ST25R3916 usually offers stronger high-performance reader behavior and longer ISO 15693 range.
  • Compared with PN7160 / PN7161, ST25R3916 focuses on SPI-hosted high-performance reading rather than NCI 2.0 Linux / Android workflows.

Update History

  • 2026-04-05: First public ST25R3916 documentation page published.
  • Reference basis: ELECHOUSE product page performance table and SPI test guide.

Supported Protocols Detail

Protocol Standard Typical Tag / Card Read Write Card Emulation
MIFARE Classic ISO 14443A 1K / 4K key fobs
MIFARE DESFire EV1/EV2 ISO 14443A Secure access cards
NTAG 213/215/216 ISO 14443A NFC stickers, wristbands
ISO 14443B ISO 14443B Bank cards, ID cards UID
FeliCa ISO 18092 / JIS 6319 Suica, Octopus
ISO 15693 / NFC-V ISO 15693 ICODE SLI, ICODE SLIX2, industrial
NFC Forum Type 4 emulation ISO 14443A NDEF HCE Active load modulation

Arduino / ESP32 Code Example — Read UID

#include <SPI.h>
#include "ST25R3916.h"  // include ST25R3916 library

#define SS_PIN   5
#define IRQ_PIN  4

ST25R3916 rfid(SS_PIN, IRQ_PIN);

void setup() {
    Serial.begin(115200);
    SPI.begin();
    rfid.begin();
    Serial.println("ST25R3916 ready");
}

void loop() {
    if (rfid.readPassiveTargetID()) {
        Serial.print("UID: ");
        for (int i = 0; i < rfid.uidLength; i++) {
            Serial.print(rfid.uid[i], HEX);
            Serial.print(" ");
        }
        Serial.println();
        delay(1000);
    }
}

Reading ISO 15693 Tags

The ST25R3916 provides longer reading distance on ISO 15693 tags compared with PN532. This makes it well-suited for industrial label reading and asset tracking.

// ISO 15693 inventory / scan (library-dependent, conceptual example)
rfid.iso15693Inventory();  // returns list of tag UIDs in field

Under ELECHOUSE test conditions, ICODE SLIX2 tags were readable at up to 11.0 cm, significantly exceeding typical PN532 ISO 14443 read range.

Card Emulation

The ST25R3916 supports NFC Forum Type 4 card emulation via active load modulation. This can be used to emulate smart cards in testing, access control proof-of-concept, or HCE (Host Card Emulation) scenarios when integrated with a host processor.

Related Pages

Shopping Cart