PN5180 NFC Module Documentation

PN5180 Documentation covers quick start steps, SPI wiring, BUSY pin handling, Arduino and ESP32 setup, ISO 15693 reading, and troubleshooting for the ELECHOUSE PN5180 NFC Module.

Quick Start

  1. Wire the module to your host MCU via SPI. The PN5180 is SPI-only — there is no I2C or UART option.
  2. Connect the BUSY pin to a GPIO input on your host. This pin is required — the PN5180 uses it to signal when it is ready for the next command.
  3. Install the PN5180 Arduino library (see Libraries section below).
  4. Upload a basic inventory example and tap a tag to confirm communication.

Key Technical Facts

Parameter Value
Chip NXP PN5180
Operating frequency 13.56 MHz
Interface SPI only
Supply voltage 3.3V (logic and RF)
IO voltage 3.3V — level shifter required for 5V Arduinos
Protocols ISO 14443A/B, ISO 15693, FeliCa, NFC Forum T1–T5
Special pin BUSY — required for SPI communication timing

Important: 3.3V IO and Level Shifting

The PN5180 operates at 3.3V logic. If you are using a 5V Arduino (Uno, Mega, Nano), you must use a logic level shifter on the following pins:

  • MOSI — 5V → 3.3V (required)
  • SCK — 5V → 3.3V (required)
  • NSS (CS) — 5V → 3.3V (required)
  • RST — 5V → 3.3V (required)
  • MISO — 3.3V → 5V (usually tolerated without shifter)
  • BUSY — 3.3V → 5V (usually tolerated without shifter)

ESP32 and Raspberry Pi operate at 3.3V natively and do not require level shifting.

ESP32 Wiring

PN5180 Pin ESP32 Notes
5V / 3.3V 3.3V Module power supply
GND GND Common ground
MOSI GPIO23 SPI MOSI
MISO GPIO19 SPI MISO
SCK GPIO18 SPI clock
NSS (CS) GPIO5 SPI chip select
BUSY GPIO4 Required: module busy signal
RST GPIO2 Reset (active low)

Arduino Uno Wiring (with Level Shifter)

PN5180 Pin Arduino Uno (via level shifter) Notes
3.3V 3.3V Module power
GND GND Common ground
MOSI D11 (via level shifter) 5V→3.3V required
MISO D12 3.3V output usually tolerated
SCK D13 (via level shifter) 5V→3.3V required
NSS D10 (via level shifter) 5V→3.3V required
BUSY D9 Input only, no shifter needed
RST D8 (via level shifter) 5V→3.3V required

The BUSY Pin — Why It Matters

Unlike the PN532 or PN7160, the PN5180 requires the host to monitor a dedicated BUSY pin before sending each SPI command. When BUSY is HIGH, the module is processing and must not receive new data. The host must wait for BUSY to go LOW before the next transaction.

Failure to handle the BUSY pin correctly will result in garbled SPI communication and no tag reads. The PN5180 Arduino library handles this automatically.

Supported Protocols

Protocol Standard Tags Support
ISO 14443A ISO 14443A Mifare Classic, Ultralight, NTAG, DESFire
ISO 14443B ISO 14443B Bank cards, ID chips
ISO 15693 ISO 15693 ICODE SLI, ICODE SLIX2, industrial tags
FeliCa ISO 18092 Suica, Octopus
NFC Forum T1–T5 NFC Forum Various NDEF tags

Example: ISO 15693 Inventory (Arduino)

#include <PN5180.h>
#include <PN5180ISO15693.h>

#define NSS_PIN  10
#define BUSY_PIN  9
#define RST_PIN   8

PN5180ISO15693 nfc(NSS_PIN, BUSY_PIN, RST_PIN);

void setup() {
  Serial.begin(115200);
  SPI.begin();
  nfc.begin();
  nfc.reset();
  nfc.setupRF();
  Serial.println("PN5180 ready — ISO 15693 mode");
}

void loop() {
  uint8_t uid[8];
  ISO15693ErrorCode rc = nfc.getInventory(uid);
  if (ISO15693_EC_OK == rc) {
    Serial.print("Tag UID: ");
    for (int i = 7; i >= 0; i--) {
      Serial.printf("%02X", uid[i]);
      if (i > 0) Serial.print(":");
    }
    Serial.println();
  }
  delay(1000);
}

Libraries and Resources

  • PN5180 Arduino library — search GitHub for PN5180-Arduino (supports ISO 14443 and ISO 15693)
  • NXP Application Note AN12650 — Using the PN5180 without library (low-level SPI register guide)
  • ELECHOUSE product page: PN5180 NFC Module

Troubleshooting

  • No response at all: Check BUSY pin is connected and your library reads it before each SPI transaction.
  • Garbled or zero reads: Level shifting missing on MOSI/SCK/NSS/RST when using 5V Arduino.
  • ISO 14443 works but ISO 15693 does not: Ensure you are using the ISO 15693 mode initialization in your library (separate from ISO 14443 mode).
  • Short read range: Confirm 3.3V supply is stable. The PN5180 is sensitive to supply noise.

PN5180 vs PN532 vs ST25R3916

PN5180 PN532 ST25R3916
Interface SPI only SPI/I2C/UART SPI only
IO voltage 3.3V (shifter for 5V) 3.3V and 5V 3.3V (shifter for 5V)
ISO 15693
BUSY pin ✓ Required
Arduino library Community Large ecosystem Community / ST
Card emulation Limited ✓ ALM

Related Pages

Shopping Cart