NOTE: Besides the Click board form factor, Mikroe offers a Dongle version also based on NXP’s PN7150 transceiver. If you are interested in finding out more about this product, please visit our NFC USB Dongle product page.
How does it work?
NFC 2 Click is based on the PN7150, high-performance full NFC solution with integrated firmware and I2C interface designed for contactless communication at 13.56 MHz from NXP USA Inc. This board has full compliance with NFC Forum specification that means that you will be able to use the full potential of NFC. It is the ideal solution for rapidly integrating NFC technology in any application, especially those running O/S environments like Linux and Android, reducing size and cost thanks to embedded NFC firmware providing all NFC protocols as a pre-integrated feature and ultra-low power consumption.
The PN7150 embeds a microcontroller core ARM Cortex-M0 loaded with the integrated firmware and provides an easy integration and validation cycle as all the NFC real-time constraints, protocols, and device discovery are being taken care of internally. The host can configure the PN7150 to notify for a card or peer detection and start communicating with them. The core microcontroller chip of the PN7150 can run without any external clock (based on an internal oscillator). However, the 13.56MHz RF field carrier accuracy requirements are not compatible with the use of an internal oscillator. That’s why the PN7150 has an external crystal oscillator connected to its XTAL pins.
It also has four power states: Monitor, Hard Power Down (HPD), Standby, and Active. At the application level, the PN7150 will continuously switch between different power states to optimize the current consumption. The PN7150 is designed to allow the host controller to have full control over its operation, thus of the power consumption of the PN7150 based NFC solution and the possibility to restrict parts of the PN7150 functionality. More information about these modes user can find in the attached datasheet.
NFC 2 Click communicates with MCU using the standard I2C 2-Wire interface with a clock frequency up to 100kHz in the Standard, up to 400kHz in the Fast, and up to 3.4MHz in the High-Speed Mode. The PN7150 also allows the choice of the least significant bit (LSB) of its I2C slave address by positioning SMD jumpers labeled as ADDR SEL to an appropriate position marked as 0 and 1. To enable and ensure data flow control between PN7150 and host controller, additionally, a dedicated interrupt line labeled as INT is provided that Active state is programmable. It also contains Reset function, and the RF antenna which is used to communicate over RF with a Tag (Card) and a Reader/Writer or a Peer device.
This Click board™ is designed to be operated only with a 3.3V logic voltage level, while 5V is used as transmitter input supply voltage of PN7150. A proper logic voltage level conversion should be performed before the Click board™ is used with MCUs with different logic levels. However, the Click board™ comes equipped with a library that contains easy to use functions and an example code which can be used, as a reference, for further development.
Specifications
Type
RFID/NFC
Applications
Can be used for rapidly integrating NFC technology in any application.
On-board modules
NFC 2 Click is based on the PN7150, high-performance full NFC solution with integrated firmware and I2C interface designed for contactless communication at 13.56 MHz from NXP USA Inc.
Key Features
Ultralow power consumption, automatic wake-up via RF field, integrated non-volatile memory to store data and executable code for customization, various RF protocols supported, includes ARM Cortex-M0 microcontroller core, and more.
Interface
I2C
Feature
No ClickID
Compatibility
mikroBUS™
Click board size
L (57.15 x 25.4 mm)
Input Voltage
3.3V or 5V
Pinout diagram
This table shows how the pinout on NFC 2 Click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | – | Power LED Indicator |
JP1-JP2 | ADDR SEL | Left | I2C Address Selection: Left position 0, Right position 1 |
NFC 2 Click electrical specifications
Description | Min | Typ | Max | Unit |
---|---|---|---|---|
Supply Voltage | -0.3 | 3.3 | 4.35 | V |
Operating Frequency | – | 13.56 | 52 | MHz |
Maximum RF Driver Current | – | – | 180 | mA |
Maximum Output Power | – | – | 0.85 | W |
Operating Temperature Range | -30 | +25 | +85 | °C |
Software Support
We provide a library for the NFC 2 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
The library covers all the necessary functions to control NFC 2 Click board™. A library performs the communication with the device via I2C interface.
Key functions:
void nfc2_generic_write ( uint8_t *p_tx_data, uint8_t n_bytes )
– Generic write function.void nfc2_generic_read ( uint8_t *p_rx_h_data, uint8_t *p_rx_p_data )
– Generic read function.void nfc2_cmd_core_reset ( void )
– Core reset command function.
Examples description
The application is composed of three sections :
- System Initialization – Initializes I2C and start to write log.
- Application Initialization – Initialization driver enables – I2C, hw reset, reseteting and initialize core, disabling standby mode, starting test procedure, set configuration and start discovery, also write log.
- Application Task – (code snippet) This is an example which demonstrates the usage of NFC 2 Click board™. NFC 2 Click board™ can be used for detection of RFiD tag and displays it’s value via USART terminal. All data logs write on USB uart changes for every 1 sec.
void application_task ( ) { while ( nfc2_check_irq( ) == NFC2_IQR_STATE_HIGH ) { nfc2_read_ctrl_packet_data( &ctrl_pck_data ); Delay_ms( 100 ); nfc2_activate_rmt_mifare_card( ); Delay_ms( 100 ); nfc2_read_ctrl_packet_data( &ctrl_pck_data ); Delay_ms( 10 ); while ( nfc2_check_irq( ) == NFC2_IQR_STATE_LOW ); nfc2_read_ctrl_packet_data( &ctrl_pck_data ); nfc2_cmd_authenticate_sector( 0x30 ); Delay_ms( 100 ); nfc2_read_ctrl_packet_data( &ctrl_pck_data ); Delay_ms( 10 ); while ( nfc2_check_irq( ) == NFC2_IQR_STATE_LOW ); nfc2_read_ctrl_packet_data( &ctrl_pck_data ); display_nfc_data( ); mikrobus_logWrite( " Disconnect Card ", _LOG_LINE ); nfc2_cmd_card_disconnected( ); Delay_ms( 10 ); nfc2_read_ctrl_packet_data( &ctrl_pck_data ); Delay_ms( 10 ); while ( nfc2_check_irq( ) == NFC2_IQR_STATE_LOW ); nfc2_read_ctrl_packet_data( &ctrl_pck_data ); Delay_ms( 100 ); } while ( nfc2_check_irq( ) == NFC2_IQR_STATE_LOW ); mikrobus_logWrite( "-----------------------", _LOG_LINE ); Delay_ms( 1000 ); }
Additional Functions :
void display_packet ( )
– Display packet log data.void display_nfc_data ( )
– Display packet log data.void nfc2_test_antenna ( )
– Testing Antenna function.void nfc2_reset_and_init_core ( )
– Reset and init core function.
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
- I2C
- UART
- Conversions
Additional notes and informations
Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
mikroSDK
This Click board™ is supported with mikroSDK – MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click board™ demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.