PN7150 Near Feather Field Controller

PN7150 Controller FeatherWing with snapable NFC PCB Trace Antenna (fits within a Feather Tripler board)

Public Chat
Similar projects worth following
This is a proposed PN7150 NFC Controller Featherwing, as per Adafruit's specification includes a PCB trace antenna. The antenna portion is also designed so that it can be snapped off and then joined with a uFL RF adapter cable.The antenna and controller board all fit within a Feather Tripler Protoboard.


NXP describes the PN7150 as a high-performance version of the PN7120, which is a plug’n play NFC solution for easy integration into any OS environment, reducing Bill of Material (BOM) size and cost compared to say the pin compatible PN532 controller. It provides direct connection to the main host (MCU or MPU) by I2C-bus and the NCI 1.0 communication protocol.

source: NXP documentation

Like the older PN7120, the PN7150 has an embedded Arm® Cortex®-M0 microcontroller core, which is loaded with integrated firmware, supporting all NFC Forum modes for contactless communication at 13.56 MHz. This simplifies application development and implementation as all the NFC real-time constraints, protocols and the device discovery (polling loop) are processed internally.

The PN7150 embeds a new RF contactless front-end supporting various transmission modes according to NFCIP-1 and NFCIP-2, ISO/IEC 14443, ISO/IEC 15693, MIFARE Classic IC-based card and FeliCa card specifications.

source: NXP documentation

The NXP Single Board Computer (SBC) Demo Kits

NXP have 3 configurations of it's PN7150 NFC Controller SBC kit:

  • OM5578/PN7150ARD for Arduino R3 boards
  • OM5578/PN7150RPI for Raspberry Pi
  • OM5578/PN7150BBB for BeagleBone Black/Green/Blue

Another useful PN7150 reference design is the Mikroe NFC USB DONGLE. However, the antenna on the Dongle is a much smaller size and so the matching circuit used is different.

For the purpose of this project, the OM5578 Interface Board, which sits on top of the SBC kit, will be used as the reference design as the antenna shape and size conveniantly fits within a FeatherWing Tripler protoboard.

Besides the data sheet and the user manual, NXP provide two very useful application notes, which help guide the design elements:

  • AN11756: PN7150 Hardware Design Guide
  • AN11755: PN7150 Antenna Design and Matching Guide

OM5578 Hardware Design Review

source: NXP documentation
source: NXP documentation

PN7150 Host Interface

There are 4 possible I2C slave addresses for the PN7150. These are set as follows:

I2C Address (R/W) I2CADR0 (pin1) I2CADR1 (pin3)
0x50/0x51 0 (GND) 0 (GND)
0x52/0x53 1 (VDD_PAD) 0 (GND)
0x54/0x55 0 (GND) 1 (VDD_PAD)
0x56/0x57 1 (VDD_PAD) 1 (VDD_PAD)
source: NXP documentation

I2C Pullup Resistors are required. These were not included on the OM5578 interface board, so these will be be added into this design. The values of these resistors can be determined using NXP's I2C bus specification and user manual (UM10204).

For this design, 4k7 resistors were chosen on the assumption that Standard-mode (100k) is used as default. As the circuit if pretty compact, one could assume that the bus capacitance is below 100pF for Fast-mode (400k) to work too.

The hardware design document (AN11756) recommends that the IRQ pin is connected as an external interrupt to the host controller. The PN7150 IRQ signal can be configured active high or active low via the NCI Configuration API. This configuration is stored in non-volatile memory. The IRQ signal will be active any time data is available in the PN7150 send buffer. The IRQ pad state is maintained during the standby mode and is configured as pull down in hard power down mode.

The VEN pin is used to reset or activate the PN7150 chip. When VEN is greater than 1.1V the PN7150 chip is powered from VBAT. When the VEN pin is pulled lower than 0.4V, the PN7150 is in a hard powered down state. The chip is reset when VEN is switched back to a voltage level higher than 1.1V.

PN7150 Clock Interface

The 13.56MHz RF field carrier accuracy requirements are not compatible with the use of an internal oscillator, which can be found within the PN7150 ARM Cortex M0+. An external 27.12MHz crystal needs to be used as the input clock for PN7150, which is attached to the XTAL pins.

The following crystal oscillator have been properly checked by NXP as suitable for use:...

Read more »

ms-excel - 4.79 kB - 12/31/2019 at 16:09


ms-excel - 9.14 kB - 12/31/2019 at 16:03


x-zip-compressed - 109.47 kB - 12/31/2019 at 16:02


Adobe Portable Document Format - 154.15 kB - 12/31/2019 at 16:01


Portable Network Graphics (PNG) - 550.59 kB - 12/31/2019 at 16:01


  • 1 × PN7150 NFC Controller HVQFN40
  • 4 × 100k Ohm Resistor 0603
  • 2 × 10pF Capacitor (ceramic) 0402
  • 2 × 2.2pF Capacitor (ceramic) 0603
  • 2 × 120pF Capacitor (ceramic) 0603

View all 19 components

  • Version 1.1 (prototype) has been fabricated

    Gerriko IO12/31/2019 at 15:52 0 comments

    Now that I've digested and summarised the design documentation, here is what I have come up with. A new iteration (version 1.1)...

    For now, I left in the component prefixs on the PCB silkscreen but I have made improvements on the initial design, which I published earlier. Removing these prefixs will provide room for improvement. Here's a comparison with the OM5578 component layout:

    I also decided to modify the antenna slightly so that I could measure the differences in performance.  After all, the OM5578 antenna design can very readily be cloned.

    So the trace antenna still consists of 4 turns but I now used a 14MIL trace instead of 20MIL as per OM5578. The external length / width is 1564 MIL instead of 1555 MIL. The spacing between traces is 24MIL, which results in a 10 MIL gap. The OM5578 had horizonal trace spacing of 35MIL, which creates a 15MIL gap. The vertical trace is more tightly spaced at 30MIL, creating a 10MIL gap.

    I used an online Inductance calculator as way of comparing designs.

    The OM5578 antenna inductance was calculated as 1.4uH:

    The new FeatherWing PCB trace antenna design is not precisely a rectangle and thus I viewed it as somewhere between a rectangle and an octagon. The rectangle inductance calculation gave me 1.52uH and the octagonal calculation was 1.41uH. 

    So, I felt I was in the right ballpark and have some wriggle room to make my antenna more octagonal should I need to reduce the actual measured inductance to match the OM5578 matching circuit (or come up with my own capacitance values for my own custom matching circuit). For now I am happy with what I have come up with.

    Anyhow, the "proof is in the pudding" and the antenna works (and no white smoke) when attaching it to the OM5578 shield (I disabled the existing antenna by removing the 0 ohm resistors).

    Let me now describe the design detail.

    As mentioned in the original write up, the antenna part can be removed from the controller part. I did not make this snappable as I wanted something more robust. Nevertheless, with a bit of filing and cutting, the antenna does snap off.

    When the antenna is removed there are two pads on the antenna side to allow you to solder a Twisted Pair cable instead of a u.FL cable (as per original diagram). I took this decision based on some antennae I had seen before, as shown here (Taoglas antenna):

    With my first prototype board, I found that the solder pads were too small for my liking (as shown below), so I have redesign and increased the size slightly.

    On the controller side there is a hybrid footprint for a 2-pin JST-SH or JST-ACH connector. Some copper has also been exposed on the trace to allow you to cut the unwanted trace to the antenna (in case this is really needed for say measurements etc).

    Then on the reverse side there are a few configuration options.

    The first is antenna voltage. 

    I have it set up so that the antenna voltage is powered from USB (i.e. at 5V) as this provides better antenna performance (as per PN7150 data sheet). I have provided 2 other power selection options. You can power the antenna via battery or via 3v3. This is all done here (left is USB, right is battery and top is 3v3):

    Then you have 4 I2C address options. The default is set with both ADR0 and ADR1 pulled to ground. This is done here:

    Finally there is another solder joint (SJIC). I simply included this because the OM5578 has the IC pin on the PN7150 connected to ground even though the datasheet shows this as not connected (NC).

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates