The click functions as an integrated transceiver for contactless applications. The board contains a dedicated internal frame controller and analog front end (AFE) for RF communications. It supports ISO/IEC 14443 type A and B, ISO/IEC 15693 and ISO/IEC 18092 protocols (tags) as well as the detection, reading and writing of NFC forum type 1, 2, 3 and 4 tags.
The CR95HF has 2 operating modes: Wait for Event (WFE) and Active.
In Active mode, the CR95HF communicates actively with a tag or an external host. WFE mode includes four low consumption states: Power-up, Hibernate, Sleep and Tag Detector. The transceiver can switch from one mode to another.
The Hibernate state has the lowest power consumption out of the four states (1 µA typ. 5 µA max.).
Two SMD jumpers are provided on the board. In case you want to use UART interface, it is necessary to solder SMD jumpers in B position. Otherwise, if you want to use SPI interface, jumpers should be left in its default position (A). In that case interrupt pins (IN and OUT) are usable.
Type | RFID,NFC |
Applications | Board can be used with 13.56 MHz RFid tags or identification cards. Ideal for tracking and security systems that needs RFID support |
On-board modules | CR95HF 13.56 MHz contactless transceiver and trace antenna |
Key Features | Dedicated internal frame controller and analog front end (AFE) for RF comm. available on-board. It can detect, read and write NFC forum type 1, 2, 3 and 4 tags |
Key Benefits | Supports ISO/IEC 14443 type A and B, ISO/IEC 15693 and ISO/IEC 18092 protocols (tags) |
Interface | SPI,GPIO,UART |
Input Voltage | 3.3V |
Compatibility | mikroBUS |
Click board size | L (57.15 x 25.4 mm) |
This table shows how the pinout on RFid click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Code examples that demonstrate the usage of RFID click with MikroElektronika hardware, written for mikroC for ARM, AVR, dsPIC, FT90x, PIC and PIC32 are available on Libstock.
The following code snippet uses a TFT to communicate with the user when the click is ready for reading and afterwards tells the user what the Tag ID is.
1 void main() { 2 Init(); // Initialize MCU and peripherals 3 DrawFrame(); 4 while (!EchoResponse()) { // Until CR95HF is detected 5 IRQ_IN = 1; // put IRQ_IN pin at low level 6 delay_ms(1); 7 IRQ_IN = 0; // put IRQ_IN pin at low level 8 delay_ms(1); 9 } 10 TFT_Write_Text("CR95HF Device Connected.", 55, 60); 11 12 ReadCR95HF_ID(); 13 Calibration(); 14 IndexMod_Gain(); 15 AutoFDet(); 16 Select_ISO_IEC_18092_Protocol(); 17 18 while (1) { 19 if (!TAG_Flag) 20 GetNFCTag(); // Get NFC ID 21 22 if (!NFC_Flag) 23 GetTagID(); // Get Tag ID 24 25 if (ID[0] == 0) { // If there is no tag present 26 flag++; // Increment counter flag 27 } 28 else { // If tag is present 29 flag = 0; // Reset counter flag 30 if (strcmp(ID_old, ID)) { // Compare previous and current tag ID 31 TFT_Set_Font(TFT_defaultFont, CL_WHITE, FO_HORIZONTAL); // Set font color to white 32 TFT_Write_Text(ID_old, x_pos_old, 180); // Delete previous tag ID 33 TFT_Set_Font(TFT_defaultFont, CL_RED, FO_HORIZONTAL); // Set font color to red 34 TFT_Write_Text("Tag ID :", 130, 160); 35 TFT_Write_Text(ID, x_pos, 180); // Display current tag ID 36 TFT_Set_Font(TFT_defaultFont, CL_WHITE, FO_HORIZONTAL); // Set font color to white 37 TFT_Write_Text("Put the RFid Tag over the RFid Click Antenna", 25, 140); 38 strcpy(ID_old, ID); // Set current ID as previous ID 39 Delay_ms(2000); 40 x_pos_old = x_pos; 41 } 42 } 43 if (flag > 5) { // If counter flag has reached value > 5 44 TFT_Set_Font(TFT_defaultFont, CL_BLACK, FO_HORIZONTAL); // Set font color to black 45 TFT_Write_Text("Put the RFid Tag over the RFid Click Antenna", 25, 140); 46 TFT_Set_Font(TFT_defaultFont, CL_WHITE, FO_HORIZONTAL); // Set font color to white 47 TFT_Write_Text("Tag ID :", 130, 160); 48 TFT_Write_Text(ID_old, x_pos_old, 180); // Delete previous tag ID 49 ID_old[0] = 0; // Terminate the old ID string 50 flag = 0; // Reset counter flag 51 } 52 ID[0] = 0; // Terminate the ID string 53 54 // Clear read and write buffers 55 for (j = 0; j < 18; j++) { 56 rdata[j] = 0; 57 sdata[j] = 0; 58 } 59 } 60 }