cancel
Showing results for 
Search instead for 
Did you mean: 

Trying to read out ST25DV tag with CR95HF

leddel32
Associate

Hi,

For our project we are trying to read out the first 100 bytes of a ST25DV tag. This tag is inside our products which are tested in production line. The test results of these test are written inside the tag by I2C. We are building an end of line test to make sure every piece is tested and collect test results.

We are using MB1054B demonstration board as our reader. We program directly in the STM32F103 MCU which is on board and we altered the board so we can talk UART to the CR95HF board.

For our first try we use a ST25DV_Discovery_ANT_C5 board to make sure we have working hardware and proper reading distance. 

We can properly reset the the CR95HF by toggling the IRQ pin.

After that we send the 0x55 command to see if the CR95HF is responding.

uint8_t commandECHO[] = {0x55};

After that we send the IDN command to check if everything is functional as expected.

uint8_t commandIDN[] = {0x01, 0x00};

Then we set the command protocol to ISO/IEC 15693 because our tag (ST25DV) is ISO/IEC 15693.

uint8_t commandPROTOCOL[] = {0x02, 0x02, 0x01, 0x01};

Then we start polling the device to check if there is any tag or not:

uint8_t commandDETECT[] = {0x04, 0x04, 0x01, 0x26, 0x01, 00};

When there is no tag placed near the CR95HF we get the 0x87 response as expected.

leddel32_1-1727447216630.png

But when we place the ST25DV discovery tag next to the antenna we should expect a response with UID.

leddel32_2-1727447274383.png

But all we get is response 0x88. This is a SOF error. What could be the cause of this error?

 

 

 

 

 

 

3 REPLIES 3
Brian TIDAL
ST Employee

Hi,

The Inventory command ("commandDETECT") is incorrect. It should be  0x04 0x03 0x26 0x01 0x00:

 

BrianTIDAL_0-1727687088927.png

I would also suggest to change the protocolSelect command in the following way:

  • wait for SoF rather that wait for a fixed delay
  • use 10% modulation rather than 100%

BrianTIDAL_1-1727687321979.png

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hi Brian,

Thank you for your answer. We now receive the UID as expected. 

Right now we are looking for the commands to actually read a block of data from the tag.

We actually can't seem te find the right command / procedure for this in the datasheet.

Best regards,

 

Hi,

the command set supported by the tag is described in the tag datasheet. Typically a Read Single Block (20h) command can be used to read a block. A Read Multiple Blocks (23h) command can also be used to read several consecutive blocks.

Those commands can be sent to the tag through a CR95HF sendReceive (04h) command:

0x04(sendReceived) 0x03(length) 0x02(request_flags) 0x20 (read single block command) 0x00 (block #00)

Make sure to implement some retry mechanism is case of transmission error.

I would suggest to prototype the various commands you will send thanks to the STSW-95HF001 PC GUI connected to the (unmodified) MB1054 board.

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.