Hello,
We are developing an RFID Reader/Writer for HITAG S 256, utilizing the HTRC110. The schematic for the Reader/Writer can be found in the attached files. We have successfully read the HITAG S 256 in TTF mode. However, we are encountering difficulties in reading the HITAG S 256 UID. We have been following the sequence below but have not achieved success:
1- Init HTRC 110 config pages
// SET_CONFIG_PAGE page=3 data=0x0 (DISLP1=0, DISSMARTCOMP=0, FSEL=00[4MHz osc])
// SET_CONFIG_PAGE page=0 data=0xB (GAIN=10[500], FILTERH=1[160Hz], FILTERL=1[6Hz])
// SET_CONFIG_PAGE page=1 data=0x0 (PD_MODE=0[active], PD=0[active], HYSTERESIS=0[off], TXDIS=0[coil driver on])
2- Run General Settling Sequence
// SET_CONFIG_PAGE page=2 data=0xB (THRESET=1, ACQAMP=0, FREEZE=11)
// DELAY(5ms)
// SET_CONFIG_PAGE page=2 data=0x8 (THRESET=1, ACQAMP=0, FREEZE=00)
// DELAY(2ms)
// SET_CONFIG_PAGE page=2 data=0xB (THRESET=0, ACQAMP=0, FREEZE=00)
3- Check Antenna status
// READ_CONFIG_PAGE page=2 and check ANTFAIL
4- SET THE SAMPLING TIME
word t_ant = (word) htrcReadPhase(); // Read phase using command 0 0 0 0 1 0 0 0
t_ant <<= 1; // Multiply by 2
t_ant += 0x3F; // Add the Offset Compensation value
t_ant &= 0x3f;
htrcSetSamplingTime((byte)t_ant); // Set sampling time using command 1 0 D5 D4 D3 D2 D1 D0 (D5…D0 = t_ant )
// Check if sampling time is applied
response = htrcGetSamplingTime(); // GET_SAMPLING_TIME
if (response != t_ant)
{
// Error - the sampling time value was not accepted for some reason
Serial.println("SAMPLING_TIME_FAILED");
return false;
}
5- Run Fast Settling Sequence with UID REQUEST COMMAND
// SET_CONFIG_PAGE page=2 data=0x9 (THRESET=1, ACQAMP=0, FREEZE=01)
// Enter Write mode by sending WRITE_TAG_N command
// WRITE_TAG_N Command with N=7 (Tg=7T0) => Command =0x17
// Send UID REQUEST Std (00110)
// To send UID request We send rising edge of DIN, wait 160µs for 0 or wait 224µs for 1
// After 00110 is send, we send an EOF (rising edge of DIN then wait for 304µs)
// End Write mode (SLK Rising Edge)
// Delay(200µS)
// SET_CONFIG_PAGE page=2 data=0xB (THRESET=1, ACQAMP=0, FREEZE=11)
// Delay(250µS)
// SET_CONFIG_PAGE page=2 data=0x0 (THRESET=0, ACQAMP=0, FREEZE=00[normal operation])
// Enter read mode by sending 111 Command
// Listen to DOUT
After executing this sequence and monitoring DOUT for a minimum of 100ms while the tag is within the field, we do not receive any response. We anticipate receiving the 32-bit UID encoded in Anti-collision coding at a speed of 2kbit/s.
Hello sir,
I'm very sorry for the delay in answering back.
Could you please clarify if you are building your application based on the library (RC110LB6) we provide? Unfortunately, there isn't any sample for HITAG S but, is possible that there is an issue in the implementation.
Are you at least getting some activity from the HITAG in normal mode?
Hello Sir,
We are developing the application without using the library, but our code is based on the HTRC 110 Datasheet, Application Note, and the Hitag S 256 Datasheet, along with an analysis of the RC110LB6 library. We are using an Atmega328 microcontroller. The workflow is detailed in my request. My first question is whether there are any issues with this workflow.
When we use a Hitag S in TTF mode, we are receiving its content without any problems. Therefore, we do not expect the issue to be hardware-related.
If it is necessary, we can share the full code source.
Thank you.
Hello sir,
Have you tested using the library for testing purposes? I mean, to at least being sure that the library you are using is correctly configuring the tag since, the UID request command should be received by the tag without issues but, it would be interesting how the commands are being sent by the transponder.