PN7150 NFC Controller Guide

NXP's Next-Gen NCI-Based Controller

| 5 min read

PN7150 NFC Controller: NXP's NCI-Based Controller

The PN7150 is NXP's production-grade nfc-controller designed for Linux-based embedded systems and Android-compatible hardware. Unlike the PN532, which uses a proprietary TFI protocol, the PN7150 implements the NFC Controller Interface (NCI) standard — the same interface used by integrated NFC controllers in smartphones. Its nfc-antenna and matching network design follow the same iso-14443 and iso-15693 physical layer standards as all NFC Forum-compliant devices.

PN7150 vs PN532 Architecture

Feature PN7150 PN532
Host interface I2C only (400 kHz) I2C / SPI / UART
Protocol stack NCI 1.1 (standard) Proprietary TFI
NDEF library Linux libnfc-nci or Android NFC HAL Adafruit, nfcpy
Card emulation Full NCI CE (CE-A, CE-B, CE-F) Limited via tgInitAsTarget
Secure element External SE interface (SWP) None
HCE support Yes (via Linux/Android HCE) No
Supply voltage 3.3 V (1.8 V I/O) 3.3 V
Cost ~$10–20 (module) ~$5–15
Best fit Linux SBC, industrial Android Arduino, Raspberry Pi

NCI Architecture Overview

The NCI (NFC Controller Interface) specification defines a standardised command/response/notification protocol between the NFC controller IC and the host processor. This standardisation means the PN7150 can be driven by:

  • Android NFC HAL (for Android-based products)
  • libnfc-nci (NXP's open-source Linux stack)
  • Custom NCI host implementation (for RTOS embedded systems)

NCI commands flow as 3-byte headers followed by variable-length payloads:

[MT|GID] [OID] [Length] [Payload...]
  MT: Message Type (Command/Response/Notification)
  GID: Group ID (Core, RF, NFCEE, Proprietary)
  OID: Opcode ID

Hardware Integration

The PN7150 is available as a bare IC (HVQFN40 package) or as a pre-certified module (OM27150CDK, OM5578). The module includes the antenna circuit and simplifies RF design.

Minimum connections (bare IC):

PN7150 Pin Signal Notes
VDD_IO 1.8 V Level of I2C signals
VDD 3.3 V Core supply
GND GND
SDA I2C data 4.7 kΩ pull-up to VDD_IO
SCL I2C clock 4.7 kΩ pull-up to VDD_IO
IRQ Host interrupt Active-high, signals data ready
VEN Enable Pull high to enable; toggle low for reset

The IRQ line is critical — the PN7150 drives it high when an NCI notification or response is ready. Without IRQ handling, you must poll, which increases latency significantly.

Linux Setup with libnfc-nci

NXP provides libnfc-nci and a companion Linux SE service on GitHub:

# Install dependencies
sudo apt install libpcsclite-dev libtool autoconf automake

# Clone and build NXP Linux stack
git clone https://github.com/NXPNFCLinux/linux_libnfc-nci
cd linux_libnfc-nci
./configure --prefix=/usr
make && sudo make install

Configure the I2C device in linux_libnfc-nci/conf/libnfc-nci.conf:

NCI_TRANSPORT=I2C
I2C_DEV=/dev/i2c-1
I2C_ADDR=0x28

Test with the included NFC demo:

nfcDemoApp poll   # Poll for any tag
nfcDemoApp write  # Write NDEF to tag

Raspberry Pi Integration

On Raspberry Pi 4/5 with Raspberry Pi OS:

  1. Connect PN7150 module to GPIO: SDA→GPIO2, SCL→GPIO3, IRQ→GPIO25, VEN→GPIO24
  2. Enable I2C and configure device tree overlay:
# /boot/config.txt
dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=2,i2c_gpio_scl=3
  1. Verify I2C detection:
i2cdetect -y 1  # Should show 0x28 (PN7150 default address)

Android HAL Integration

For Android-based products using the PN7150:

  1. NXP provides a reference Android NFC HAL at hardware/nxp/nfc/ in AOSP
  2. The HAL communicates with the PN7150 via I2C using NCI protocol
  3. Enable in device.mk:
PRODUCT_PACKAGES += [email protected]
  1. Device-specific configuration in libnfc-nxp.conf handles timing, proprietary extensions, and SE routing tables.

Card Emulation (HCE) Setup

Unlike the PN532, the PN7150 supports full Host Card Emulation through the NCI NFCEE interface. Configure the CE routing table to direct RF activations to the host processor:

NCI Command: RF_SET_LISTEN_MODE_ROUTING_CMD
  Entry 1: Protocol-based routing — ISO-DEP → HCE_HOST
  Entry 2: Technology-based routing — NFC-A → HCE_HOST

On Linux this is handled by libnfc-nci's routing manager. On Android it is managed by the NFC service via NfcRoutingTable.

PN7150 vs PN7160 (Successor)

Feature PN7150 PN7160
NCI version 1.1 2.0
Secure element interface SWP SWP + eSE direct
WLC (Wireless Charging) No Yes
NFC-V read range improvement Standard +20%
Production status Mature Current (2024)

For new designs starting in 2024+, evaluate the PN7160 for its NCI 2.0 support and WLC capability.

Use the Chip Selector to compare the PN7150 against other NFC controller ICs for your target platform, and the Compatibility Checker to verify tag-type support across the NFC protocol stack.

See Also

Terms in This Guide