NXP NFC Reader Library v4.040.05.011646

NXP NFC Reader Library Documentation

# Introduction

- This document describes the NXP NFC Reader Library Version that supports the Reader Frontend ICs namely PN5180, PNEV512B, CLRC663 and Reader NFC Controller PN7462AU. The source code is intended to run on NXP LPC1769/LPC11U68 connected to PNEV512B v1.5 CE Certified blue board/CLRC663 Blue board v3.0 / PN5180 TFBGA64 performance board v1.0, FRDM-K82 Board connected to PN5180/RC663/PN512B, RasperryPi Board connected to PN5180/RC663/PN512B and on the PN7462AU CortexM0 based uC.

- Intended Audience:
  - This document is a reference to be used by the SW designers, implementers and integrators.

# Overview

The NXP reader library is encapsulated into Layers and Components written in ANSI C. The library structure provides a modular way of programming and setting up the reader interface. The reader library consists of below layers

- BAL (Bus Abstraction Layer)
- HAL (Hardware Abstraction Layer)
- PAL (Protocol Abstraction Layer)
- SA (Simplified API Layer)
- AL (Application Layer)
- AC (Activity Layer)
- CE (Host Card Emulation)
- LN (Link Abstraction Layer)

- NP (Network Protocol Layer)

  Each Layer consists of different components having a generic interface and a specific implementation. Find more information on the usage of the reader library in the related Application Notes [13],[8]

# LayerModel

# API Reference

## Simplified API Layer

Contains Simplified APIs for access to NxpNfcRdLib functionality.

- Simplified API Layer

## Network Protocol Layer

The Network Protocol Layer implements the Simple NDEF Exchange Protocol(SNEP) component.

- NFCForum-SNEP
  SNEP 1.0 component

## NFC Link Layer

The NFC Link Layer implements the Logical Link Control Protocol component.

- NFCForum-LLCP
  LLCP 1.1 component

## Card Emulation Layer

The Card Emulation Layer implements the commands for emulated card components.

- NFC Forum Type 4A Card Emulation
  NFC Forum T4T 2.0 component

## Activity Layer

The NFC Activity Layer implements the Discovery loop component.

- Discovery Loop
  Discovery Loop implements Poll phases and Listen Phase.

## Application Layer

The Application Layer implements the commands of contactless smart cards.

- MIFARE(R) Classic
  Commandset as described in [1]
- Type 1 tag
  Commandset as described in [5]
- MIFARE(R) Ultralight
  Commandset as described in [4]
- Felica
  Part of Felica Open commandset. Read, Write, Request Response, Request Service, REQC, ATQC are implemented according to [6]. Please be aware that the command 'Read' is described within NFC Forum Type 3 Tag Operation as 'Check' command and 'Write' as 'Update' command. REQC and ATQC are part of the polling sequence described in [15].
- MIFARE DESFire (R)
  Commandset as described in [9]
- ICode SLI
  ICODE SLI family as described in http://www.nxp.com/products/identification_and_security/smart_label_tag_ics/icode/index.html
- ISO/IEC 15693
  ISO/IEC 15693 Commandset as described in [14]
- ISO/IEC 18000-3 Mode3
  ICODE ILT Commandset as described in [12]
- Tag Operation Layer
  Commandset as described in [15]

## Protocol Abstraction Layer

The Protocol Abstraction Layer implements the activation and exchange within the protocol of the contactless communication.

- ISO/IEC 14443-3A, as described in [5]
- ISO/IEC 14443-3B, as described in [5]
- ISO/IEC 14443-4A, as described in [5]
- ISO/IEC 14443-4, as described in [5]
- MIFARE(R) needs to be included for any MIFARE card.
- ISO/IEC 14443-4mC, as described in [5]
- Felica compliant protocol, as described in [6],
  parts of it are also part of ISO 18092, see [10]
- ISO/IEC 15693 / ISO/IEC 18000-3M1, protocol as described in [14]
- ISO/IEC 18000-3 Mode3, as described in [13]
- ISO/IEC 18092 Mode Initiator, the DEP protocol as well as the
  passive/active communication mode, described in [7]
- ISO/IEC 18092 Mode Target, the DEP protocol as well as the
  passive/active communication mode, described in [7]

Hardware Abstraction Layer
The Hardware Abstraction Layer implements the Hardware specific elements of the reader.

- component : Rc523
  Reader Specifics for the RC523. It therefore also covers PN512 and RC522.
  Find more information in [2]
- component : Rc663
  Reader Specifics for the RC663. Find more information on this product in [3]
- component : Pn5180
  Reader Specifics for the Pn5180.

Bus Abstraction Layer
The Bus Abstraction Layer is defining the interface used.

- Component : LpcOpenSpi
  BAL LpcOpen SPI interface is used to abstract SPI interface of a LPCOpen microcontroller library which is part of a seperate project released with this Library (ex: lpc_chip_175x_6x, lpc_chip_11u6x).
- Component : LpcOpenI2c
  BAL LpcOpen I2C interface is used to abstract I2C interface of a LPCOpen microcontroller library which is part of a seperate project released with this Library (ex: lpc_chip_175x_6x, lpc_chip_11u6x).

## Common Layer

- KeyStore
  Storage of the keys, like MIFARE keys.
- CryptoSym
  Used for Symmetric Cryptography operations.
- CryptoRng
  Used to generate random numbers for CryptoSym.
- Cid Manager
  The CID manager manages the CID of all cards.
- Tools
  Some tools are attached to calculate the CRC or Parity.
- PhLog
  Every block has a logging functionality, which can be used.
- Operating System Abstraction Layer
  Operating system abstraction layer Abstraction APIs.

## Other

- Error Code Collection
  A collection of error codes known.
- Platform Definitions
  Definitions for specific platform.
- (Private definitions)

## References

[1] Data sheet - MF1S50yyyX MIFARE Classic 1K - Mainstream contactless smart card IC for fast and easy solution development, available on NXP web
[2] Data sheet - MFR523; Contactless reader IC, BU-ID Doc. No. 115235, available on NXP Web
[3] Data sheet - CLRC663; Contactless reader IC, BU-ID Doc. No. 171110, available on NXP Web
[4] Datasheet - MIFARE Ultralight; MF0ICU1, MIFARE Ultralight contactless single-ticket IC, BU-ID Doc. No. 028638, available on NXP Web
[5] ISO/IEC Standard - ISO/IEC14443 Identification cards - Contactless integrated circuit cards - Proximity cards
[6] JIS Standard - JIS X 6319 Specification of implementation for integrated circuit(s) cards - Part 4: High Speed proximity cards
[7] ISO/IEC Standard - ISO 18092 Information technology - Telecommunications and information exchange between systems - Near Field Communication- Interface and Protocol (NFCIP-1)
[8] Application Note - AN11021 CLRC663 Software Design Guide for NXPRdLib, available on NXP Web
[9] Data Sheet MIFARE DESFire; MF3ICDx21_41_81, MIFARE DESFire EV1 contactless multi-application IC, BU-ID Doc. No. 134036, available on NXP docu control
[10] Data Sheet MIFARE Plus; MF1PLUSx0y1, Mainstream contactless smart card IC for fast and easy solution development, BU-ID Doc. No. 163734, available at NXP docu control
[11] Data Sheet MIFARE Ultralight C; MF0ICU2, BU-ID Doc. No. 171432, available on NXP Web
[12] Data Sheet ICODE ILT , smart label IC; will be available on NXP Web
[13] Data Sheet ISO/IEC Standard - ISO 18000-3 Information technology AIDC techniques - RFID for item management - Air interface, Part 3 - Parameters for air interface communications at 13.56 Mhz, M1 stands for Mode 1, M3 stands for Mode 3
[14] ISO/IEC Standard - ISO/IEC15693 Identification cards - Contactless integrated circuit(s) cards - Vicinity cards
[15] NFC Forum Standard - NFC Forum Type 1,2,3,4 Tag Operation Specification
[16] NFC Forum Standard - Activity Specification
[17] NFC Forum Standard - Digital Protocol Specification

# DISCLAIMER OF WARRANTIES:

    YOU AGREE THAT NXP HAS MADE NO EXPRESS WARRANTIES TO YOU REGARDING THE
    SOFTWARE AND THAT THE SOFTWARE IS BEING PROVIDED TO YOU "AS IS" WITHOUT
    WARRANTY OF ANY KIND.
    NXP DISCLAIMS ALL WARRANTIES WITH REGARD TO THE SOFTWARE, EXPRESS OR
    IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF FITNESS
    FOR A PARTICULAR PURPOSE, MERCHANTABILITY, MERCHANTABLE QUALITY OR
    NONINFRINGEMENT OF THIRD PARTY RIGHTS.
    Some states or jurisdictions do not allow the exclusion of implied warranties so the above
    limitations or parts of it may not apply to you.

# LIMITATION OF LIABILITY:

    IN NO EVENT WILL NXP BE LIABLE TO YOU FOR ANY LOSS OF USE, INTERRUPTION OF
    BUSINESS, OR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
    DAMAGES OF ANY KIND (INCLUDING LOST PROFITS) REGARDLESS OF THE FORM OF
    ACTION WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT PRODUCT
    LIABILITY OR OTHERWISE, EVEN IF ENDUSER HAS BEEN ADVISED OF THE POSSIBILITY
    OF SUCH DAMAGES.
    Some states or jurisdictions do not allow the exclusion or limitation of incidental or consequential
    damages, so the above limitation, exclusion or parts of it may not apply to you.

# Revision History

Release | Date | Notes
--- | --- | ---
4.040.05.011646 | Nov 2016 | Patch Updates on top of 4.040.05.001642
|  | Linux Porting updates for phOsal_ThreadDelay and
|  | Enable On-Board Pull Up by SW for IRQ pin used for RC523
4.040.05.001642 | Oct 2016 | Linux Support, Freedom platform support, Simplified Layer
4.022.00.001626 (PRC-M6) | June 2016 | Pre Release Check, with OSAL+Platform Restructuring
|  | See Operating System Abstraction Layer
4.010.04.001617 | April 2016 | Incremental code drop Week 17, 2016
4.010.03.001609 | Mar 2016 | Incremental code drop Week 9, 2016
4.010.02.001606 | Feb 2016 | Incremental code drop Week 6, 2016
4.010.01.021604 | Jan 2016 | Incremental code drop Week 4, 2016
4.010.01.001604 | Jan 2016 | Incremental code drop Week 9, 2016
4.010.01.001603 | Jan 2016 | Incremental code drop Week 3, 2016
4.010.00.001602 | Jan 2016 | R Gate Release for Week 02, 2016
4.010.00.001551 | Dec 2015 | V Gate Release for Week 51, 2015
3.092.12.001546 | Nov 2015 | Incremental code drop Week 47, 2015
3.092.11.001546 | Nov 2015 | Incremental code drop Week 46, 2015
3.092.10.001539 | Sept 2015 | Incremental code drop Week 39, 2015
3.092.09.001539 | Sept 2015 | Incremental code drop Week 39, 2015
3.092.08.001537 | Sept 2015 | Incremental code drop Week 37, 2015
3.092.07.001537 | Sept 2015 | Incremental code drop Week 37, 2015
3.092.06.011536 | August 2015 | Incremental code drop Week 36, 2015
3.092.06.001535 | August 2015 | Incremental code drop Week 35, 2015
3.092.05.001534 | August 2015 | Incremental code drop Week 34, 2015
3.092.04.001533 | August 2015 | Incremental code drop Week 33, 2015
3.092.03.001532 | August 2015 | Incremental code drop Week 32, 2015
3.092.02.001531 | July 2015 | Incremental code drop Week 31, 2015
3.092.01.001530 | July 2015 | Incremental code drop Week 30, 2015
3.092.00.001529 | July 2015 | A Gate Release for Week 29, 2015
3.082.06.001528 | July 2015 | Incremental code drop Week 28, 2015
3.082.05.001526 | June 2015 | Incremental code drop Week 26, 2015
3.082.04.001524 | June 2015 | Incremental code drop Week 24, 2015
3.082.03.001522 | May 2015 | Incremental code drop Week 22, 2015
3.082.02.001520 | May 2015 | Incremental code drop Week 20, 2015
3.082.01.001518 | April 2015 | Incremental code drop Week 18, 2015
3.082.00.001516 | April 2015 | A1 Gate Release for Week 16, 2015
3.072.00.011514 | April 2015 | Internal Release with T4T Card Emulation implementation
3.072.00.001512 | March 2015 | Internal Release with LLCP 1.1 and SNEP 1.0 implementation
3.062.00.021509 | February 2015 | Internal Release for Discovery Loop for Error Code Changes
3.062.00.001506 | February 2015 | Internal Release for Discovery Loop and 14443-4 Card Mode Release
3.052.00.001451 | December 2014 | Internal Release for 18092 Target Mode Release
3.042.00.001443 | November 2014 | Internal Release for ISO15693 Extended Commands and ICODE SLIX2 new commands
3.032.00.001441 | October 2014 | Internal release with HAL and PAL Changes
3.020.00.001432 | August 2014 | Beta Release for Card Emulation for PN512
3.010.00.001407 | February 2014 | Final Release for P2P Extensions for PN512 and CLRC663
2.1.0.0 | January 2014 | Official Release for P2P Extensions for PN512 and CLRC663
2.0.4.2 | December 2013 | First Official Release for P2P Extensions for PN512 and CLRC663
2.0.4.1 | August 2013 | Development Release for P2P Extensions for PN512 and CLRC663
2.0.4.0 | December 2012 | P2P Extensions for PN512 and CLRC663
2.0.2.0 | May 2012 | Mifare Ultralight EV1 Beta Release
2.0 | May 2011 | First Official Release
1.1 | August 2010 | Second Release
1.0 | March 2010 | First Release