AN3255
Application note
Building an RFID short-range reader using the STM8S-DISCOVERY
Application overview
High frequency 13,56 MHz RFID solutions offer ideal close-proximity identification for product authentication, parcel tracking, document management, library and ticketing applications.
This application note describes how to build an RFID (radio frequency identification) shortrange reader using STMicroelectronics STM8S-DISCOVERY and ISO14443 type-B CR14 contactless coupler. The STM8S-DISCOVERY and the CR14 communicate through an I2C bus.
The resulting RFID reader can exchange data with ISO 14443-2 type-B proximity PICCs (proximity integrated coupling cards) also called tags. Communications are possible only when the tags are present in the electromagnetic field generated by the reader built-in antenna.
Once the STM8S-DISCOVERY is powered up through a USB cable connected to the host PC, an electromagnetic field is generated by the RFID reader. A beep is emitted and the LED LD1 briefly lights up when an ISO 14443-2 type-B proximity tag is detected by the reader and its unique identifier (UID) successfully read.
The STM8S-DISCOVERY can be used to evaluate the main features of all STM8S MCUs, even if it is built on an STM8S105C6T6.
Reference documents
■STM8S-DISCOVERY evaluation board user manual (UM0817).
■Developing and debugging your STM8S-DISCOVERY application code (UM0834).
■User manual “CR14 and CRX14 reference design PCB Gerber files” (UM0672) and RFID Gerber files.
■CR14 datasheet: “Low cost ISO14443 type-B contactless coupler chip with anti-collision and CRC management”
■SRI2K datasheet: “13,56 MHz short-range contactless memory chip with 2048 bit EEPROM and anti-collision functions”
■Application note “Antenna (and associated components) matching-circuit calculation of the CRX14 coupler” (AN1806)
■Application note “How to design a 13.56 MHz customized antenna” (AN2866)
These documents can be downloaded from http://www.st.com.
October 2010 |
Doc ID 17784 Rev 1 |
1/24 |
www.st.com
Contents |
AN3255 |
|
|
Contents
1 |
Application description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
5 |
|
|
1.1 |
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
5 |
|
1.2 |
Short-range contactless communication principles . . . . . . . . . . . . . . . . . . |
6 |
1.2.1 CR14 contactless coupler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.2 I2C polling using Ack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.3 Reader-tag protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.4 Commands and tag states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Hardware requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.4 Application schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 |
STM8S-DISCOVERY configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
14 |
|
|
2.1 |
Power supply configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
14 |
|
2.2 |
Option byte configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
14 |
3 |
Software description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |
15 |
3.1 STM8S peripherals used by the application . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 Configuring the STM8S standard firmware library . . . . . . . . . . . . . . . . . . 15 3.3 Application principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Appendix A I2C memory addressing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Appendix B I2C Read and Write functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
B.1 I2C Page Write flowchart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 B.2 I2C post polling buffer read flowchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2/24 |
Doc ID 17784 Rev 1 |
AN3255 |
List of tables |
|
|
List of tables
Table 1. CR14 control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Table 2. List of PCB passive components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Table 3. List of PCB packaged components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Table 4. List of tag packaged components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Table 5. List of other passive components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Table 6. TAG commands used within this application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Table 7. Device Select code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Table 8. Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Doc ID 17784 Rev 1 |
3/24 |
List of figures |
AN3255 |
|
|
List of figures
Figure 1. Short range RFID reader solution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Figure 2. Ack Polling flowchart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Figure 3. TAG state transition diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Figure 4. Contactless RFID reader schematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Figure 5. Main application loop flowchart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Figure 6. I2C Page Write flowchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Figure 7. I2C post polling buffer read flowchart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4/24 |
Doc ID 17784 Rev 1 |
AN3255 |
Application description |
|
|
This application is built around a short range RFID reader PCB developed by STMicroelectronics. The PCB Gerber files and the user manual "CR14 and CRX14 reference design PCB Gerber files" (UM0672) are available from http://www.st.com.
This board is designed to be connected to a digital host, in this case an STM8SDISCOVERY, which manages data transmission and reception through an I2C interface (see Figure 1).
The tags supported by this application must be based on ST contactless memories compliant with ISO 14443 part2 type-B standard for the radio-frequency power and signal interface.
This application has been tested using a tag based on ST SRI2K short range contactless EEPROM. Refer to application note AN2866 explaining how to design a 13.56 MHz tag antenna.
Figure 1. Short range RFID reader solution
USB
STLINK
Resistors
5V3 |
8STMS105C6T6 |
GPIO's |
1 |
LD1 TS |
|||
WIMS |
|
|
|
3V |
|
|
|
Buzzer
RP1 |
RP2 |
I2C bus
SO16 |
J1 |
HE10 |
footprint |
STMicroelectronics
CR14
STM8S-DISCOVERY |
RFID reader PCB |
Doc ID 17784 Rev 1 |
5/24 |
Application description |
AN3255 |
|
|
1.2Short-range contactless communication principles
The CR14 is the main component of the RFID reader PCB. It interfaces with the following components:
●The contactless tags
The data frames exchanged with the tags are compliant with ISO14443 type-B radio frequency protocol. Data are stored in the CR14 input/output Frame registers (see
Table 1: CR14 control registers).
●The STM8S105C6T6 through the I2C bus.
The CR14 is organized as 4 functional blocks:
●The I²C bus controller
It handles the serial connection with the STM8S105C6 application host, and controls the read/write accesses to all CR14 registers. It is compliant with the 400 KHz I2C bus specification.
●The RAM buffer
The RAM buffer is bidirectional. It stores all the request frame bytes to be transmitted to the tag, plus all the received bytes sent back by the tag on the answer frame.
●The transmitter
It powers the tag by generating a 13,56 MHz signal on an external antenna. The resulting field is 10% modulated using ASK (amplitude shift keying) modulation to transmit data.
●The receiver
It demodulates the signal generated on the antenna by the load variation of the tag. The resulting signal is decoded by an 847 KHz BPSK (binary phase shift keying) subcarrier decoder.
The CR14 generates an electromagnetic field which is rectified to power the tag. The reader transmits information to the tag by modulating the carrier wave. To transmit information back to the reader, the tag backscatters the carrier wave by modifying its own impedance thereby perturbing the field.
The CR14 chip contains six volatile registers of which three allow to configure the CR14 and to transmit/receive frames to/from the tag (see Table 1):
●Parameter register
●Input/Output Frame register
●Slot Marker register
For details regarding registers description and CR14 I2C protocol, refer to the CR14 datasheet.
Table 1. |
CR14 control registers |
|
|
|
||
Address |
|
Description |
|
Access |
Purpose |
|
|
|
|
|
|
|
|
00h |
|
Parameter register |
|
1 byte |
W |
Set parameter register |
|
|
|
|
|||
|
|
R |
Read parameter register |
|||
|
|
|
|
|
||
|
|
|
|
|
|
|
6/24 |
Doc ID 17784 Rev 1 |
AN3255 |
|
|
|
|
|
Application description |
|
|
|
|
|
|
|
|
|
|
Table 1. |
CR14 control registers (continued) |
|
|
|||
|
|
|
|
|
|
|
|
|
Address |
|
Description |
|
Access |
Purpose |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Store and send request |
|
|
|
Input/Output Frame |
|
|
W |
frame to the tag. Wait for |
|
01h |
|
|
36 bytes |
|
tag answer frame |
|
|
|
register |
|
|
|
||
|
|
|
|
|
R |
Transfer tag answered |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
frame data to host |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
02h |
|
ST reserved |
|
N/A |
W |
ST reserved, must not be |
|
|
|
|
||||
|
|
|
R |
used |
|||
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Launch the automated anti- |
|
03h |
|
Slot Marker register |
|
1 byte |
W |
collision process from |
|
|
|
|
Slot_0 to Slot_15 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R |
Return FFh |
|
|
|
|
|
|
|
|
|
04h |
|
ST reserved |
|
N/A |
R and W |
ST reserved, must not be |
|
|
|
used |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
05h |
|
ST reserved |
|
N/A |
R and W |
ST reserved, must not be |
|
|
|
used |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2.2I2C polling using Ack
During radio frequency data exchange, the CR14 disconnects itself from the I2C bus. The time needed to complete the exchange is not fixed as it depends on the tag command format. To know when the exchange is complete before starting reading the data in the Input/Output Frame register, the bus master uses an Ack polling sequence that performs the following actions:
1.Initial condition: a radio frequency data exchange is in progress.
2.Step 1: the master issues a START condition followed by the first byte of the new instruction (Device Select Code plus R/W bit = 1) (see Appendix A: I2C memory addressing).
3.Step 2: if the CR14 is busy, no Ack is returned and the master goes back to Step 1. If the CR14 has completed the radio frequency data exchange, it responds by sending back an ACK, thus indicating that it is ready to receive the second part of the next instruction (the first byte of this instruction has been sent during Step 1).
Figure 2 shows the detailed I²C Ack polling flowchart.
Doc ID 17784 Rev 1 |
7/24 |
Application description |
AN3255 |
|
|
Figure 2. Ack Polling flowchart
|
2ADIOD&REQUENCY |
|
DATA EXCHANGE |
|
IN PROGRESS |
|
3END |
|
34!244CONDITION |
|
3END #2 |
|
$EVICE 3ELECT |
|
#ODE WITH 2 7 |
./ |
!#+ |
#2 )£# |
RETURNED |
DISCONNECTED |
|
|
9%3 |
|
2EAD DATA BYTES |
|
FROM #2 |
AI
1.2.3Reader-tag protocol
Standard tag commands such as Read and Write are generated by the CR14 using its Input/Output Frame register. To send a command to the tag, the STM8S105C6 host first generates internally the complete frame containing the command code followed by the command parameters (if required). Only the 2 CRC bytes must not be generated as the CR14 automatically adds them during the RF transmission.
Once the frame is ready, the host writes it into the Input/Output Frame register using an I2C Write command.
If the tag answers, the characters received are demodulated, decoded and stored into the input/output frame buffer. During the entire RF transmission, the CR14 disconnects itself from the I2C bus. On reception of the tag EOF, the CR14 checks the CRC and reconnects to the I2C bus. The host can then get the tag answer frame by issuing an Input/Output Frame Register Read command on the I2C bus.
Refer to the CR14 datasheet for details on Read and Write commands.
The tag can be switched into different states (see Figure 3). The tag only answers specific commands depending on its current state. These states are specified by the ISO 15693 standard. For details concerning these states, refers to one of ST short range contactless EEPROM datasheet (for example SRI2K) available from http://www.st.com.
8/24 |
Doc ID 17784 Rev 1 |