2024-09-27 07:31 AM
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.
But when we place the ST25DV discovery tag next to the antenna we should expect a response with UID.
But all we get is response 0x88. This is a SOF error. What could be the cause of this error?
Solved! Go to Solution.
2024-09-30 02:13 PM - edited 2024-09-30 02:20 PM
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
2024-09-30 02:09 AM
Hi,
The Inventory command ("commandDETECT") is incorrect. It should be 0x04 0x03 0x26 0x01 0x00:
I would also suggest to change the protocolSelect command in the following way:
Rgds
BT
2024-09-30 01:47 PM
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,
2024-09-30 02:13 PM - edited 2024-09-30 02:20 PM
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