2020-07-13 11:37 PM
Hi,
I was able to read ISO/IEC 14443-3 Type A tag using tag_hunting function from sample code. Recently I found tag detection may help to bypass polling stage and interrupt the Host MCU if there is tag nearby.
// Calibration command
[07 0E 03 A2 00 F8 01 18 00 00 60 60 00 xx 3F 01]
I followed the sample code to run the tag detection calibration process and got result when swt_cnt: 0x20, 0x3F, 0x50 .
DacDataH: 0x60, 0x74, 0x78
I also do the calibration with tag nearby, the result is almost same as open-air calibration:
DacDataH with tag: 0x60, 0x70, 0x78
// wake-up by tag detation or IRQ_IN command
[07 0E 0A 21 00 79 01 18 00 20 60 60 64 74 3F 00]
However, when I sent IDLE command to use tag detection & IRQ_IN pin and emit burst indefinitely, it did not wake up when tag was close.
Antenna is fine tuned to read type A tag. Before send IDLE command, ISO14443A_Init() is called to set up protocol. If wake-up by timeout, there was interrupt in IRQ_OUT and able to read Type A tag by tag hunting function.
What else should I check to enable wake-up by tag detection?
Which parameters should I fine tune to make tag detection work?
Solved! Go to Solution.
2020-07-20 08:57 AM
Hello Chelsea,
tag detection is based on the measurement of the voltage drop on RX pins, due to the coupling with tag in vicinity.
Reader antenna tuning in free air has an impact on it. Did you check the input impedance of the antenna matching circuit as documented in AN4327, section 4 step 3 a?
best regards,
Henry Crane
NFC/RFID products support team
2020-07-15 07:03 AM
Hi,
can you provide more information regarding your environment:
For any new project, I would recommend to use X-CUBE-NFC3 firmware that provides the ST25R RF Abstraction Layer API. It supports calibration and tag detection.
Rgds
BT
P.-S.: In ST library, the calibration command is 07 0E 03 A1 00 [...] not 07 0E 03 A2 00 [...]. See AN3433.
2020-07-15 08:21 PM
Hi,
In datasheet, ARC_B and ACC_A register are configurable for Reader Mode and Card Emulation Mode. According to ST95HF block diagram, Tag Detector is a seperate part beside Reader and Card Emulator. Is there any guideline to set ARC_B and ACC_A register for Tag Detector?
Ps. As in datasheet page 37, the Enter Control for tag detector calibration is 0xA200. Anyway, I also tried 0xA100 and both seems work correctly.
2020-07-16 01:25 AM
Hi,
there is a typo in the Datasheet, the correct value is 0xA100. The description of the various bits is available in the ST25R95 datasheet (table 27), bit 1 of CtrlH is RFU and therefore 0xA2 does not make sense. The typo is also in the CR95HF datasheet and in the ST25R95 datasheet.
My question regarding Card Emulation was more related to why you use the ST95HF instead of CR95HF or ST25R95.
My question about the SW setup was to understand whether you use our new RFAL library (included in X-CUBE-NFC3) or our previous library (included in STSW-ST95HF001). My understanding is that you have your own ST95HF driver on top of SPI communication.
Regarding the calibration procedure, the datasheet specifies that "The reference value (DacDataRef) is established during a tag detection calibration process using the CR95HF application setting with no tag in its environment."
The recommended value for Swing count is 0x3F.
If you follow the tag detection calibration process described in the annex B of the Datasheet, the returned value is the center DacDataRef value. The Idle command to be used for the tag detection should have DacDataL = DacDataRef -8 and DacDataH = DacDataRef +8
If your DacDataRef = 0x74 in open air with SwingsCnt=0x3F, then the idle command should be: [07 0E 0A 21 00 79 01 18 00 20 60 60 6C 7C 3F 00
if you use the PCD_TagDetectCalibration from the ST95HF001 library, then the return value is DacDataH. I would recommend to check whether the return value is the DACDataH or the DacDataRef
TagDetector does not use any modulation, therefore there is not need to send a protocol select command before entering the IDLE mode. Same for ARC_B and ACC_A: not needed for tag detector.
Rgds
BT
2020-07-16 06:03 AM
Hi,
My calibration process follows the sample code and datasheet . It always returns 0x64 as DacDataRef:
// calibration command sent
>>> 07 0E 03 A1 00 F8 01 18 00 00 60 60 00 xx 3F 01
The result for each step is:
Step| xx | <Data>
----------------
..S0 | 00 | 02
..S1 | FC | 01
..S2 | 7C | 01
..S3 | 3C | 02
..S4 | 5C | 02
..S5 | 6C | 01
..S6 | 64 | 02
..S7 | 68 | 01
Therefore, the DacDataRef is 0x64.
Base on above test, I guess that the antenna current change is too small to be detected by internal DAC, because I am using different antenna and PCB circuit.
The recommended value for oscillator setup tme (0x60), DAC setup time(0x60) and Swing count (0x3F) is based on eval-st95hf hardware design. According to your explanation and datasheet, the only "input" for Tag Detector is antenna load characteristics.
Regards,
Chelsea
2020-07-20 08:57 AM
Hello Chelsea,
tag detection is based on the measurement of the voltage drop on RX pins, due to the coupling with tag in vicinity.
Reader antenna tuning in free air has an impact on it. Did you check the input impedance of the antenna matching circuit as documented in AN4327, section 4 step 3 a?
best regards,
Henry Crane
NFC/RFID products support team