Skip to main content
Visitor II
November 18, 2024
Solved

read the inventory of ISO15693 tag with ST25R3916

  • November 18, 2024
  • 1 reply
  • 1093 views
Hello,
I am in the process of obtaining the inventory information of ISO15693 tag using ST25R3916.
But the data received seems not normal, so I want to get help..
 
My register settings are as follows

Dircet_Command(SET_Default);

Register_Write(IO_configuration1, 0x04); // IO Configuration1 register Write 0x04

Register_Write(IO_configuration2, 0x84); // IO Configuration2 register Write 0x84

Register_Write(Bit_rate_definition, 0x00); // Bit Rate Defintion register Write 0x00

Register_Write(Stream_mode_definition, 0x18); // Stream Mode definition register Write 0x18

 

Register_Write(Mode_defintion,0x74); // Mode Defintion register Write 0x74

Register_Write(Operation_control,0xC8); // Operation control register Write 0xC8

 

FIFO_load(FIFO_TX,CMD_BUF); //FIFO Buf Wirte CMD_BUF

 

(Write to the register as long as the buffer length)

Register_Write(Number_of_transmitted_bytes1,len);

Register_Write(Number_of_transmitted_bytes2,len);

 

Dircet_Command(Transmit_without_CRC); //Send data stored in FIFO Buff

 

The actual commands sent are as follows.
 
( 0x21, 0x26, 0x01, 0x00, 0xF6, 0x0A, 0x04 ) //Commands to be Transmitted

static uint8_t TXReadUID[22]=

{0x21,0x20,0x08,0x20,0x02,0x08,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x20,0x08,0x80,0x80,0x20,0x20,0x02,0x02,0x04};  

uint8_t message_length = 22;

This command is the CMD of ISO15693, which converts the Inventory request command to the 4_1 format.

 
After sending the command, wait for a response from the while statement.
 

while(1){

if(Register_Read(Main_interrupt) & 0x10){

FIFO_Read = 0x9F;

HAL_SPI_TransmitReceive(&hspi2,FIFO_Read,rx_buffer,fifo_len,1000);

}

}

 

Receive Data = [ 11 A2 88 28 22 45 84 84 10 41 08 11 42 48 08 21 11 84 88 28 85 A2 48 44 10 ]

 

 

As a result of referring to the provided library, it was confirmed that ISO15693 communication decodes the received data
I tried to decode the data using the function rfalIso15693VICCDcode() in the library's rfal_iso15693_2.c file, but it did not work properly
 

 

I'd like to know if there's anything wrong with the register settings
    This topic has been closed for replies.
    Best answer by Ulysses HERNIOSUS

    Hi,

     

    With the first byte of received data being 11h I would expect an ERR_FRAMING due to

     if ((inBuf[0] & 0x1fU) != 0x17U)
     {
     ISO_15693_DEBUG("0x%x\n", iso15693PhyBitBuffer[0]);
     return RFAL_ERR_FRAMING;
    

    and not a collision error!

    Otherwise please check and compare the various registers - especially MRT, but also NRT and the values of the registers ST25R3916_REG_AUX, ST25R3916_REG_RX_CONF1..4 and ST25R3916_REG_CORR_CONF1..2

    BR, Ulysses

    1 reply

    Technical Moderator
    November 18, 2024

    Hi,

     


    @Klab_dev wrote:
    but it did not work properly
     

    What is the return code of rfalIso15693VICCDecode?

    I would recommend to use the RFAL library that implements the various NFC activities and provides some ready to use demos.

    Rgds

    BT

    Klab_devAuthor
    Visitor II
    November 18, 2024
    The return code for the rfalIso15693VICCDcode is RFAL_ERR_RF_COLLISION (0x29)
    It seems to me that it's a bit-collision error
     
    I think this problem is caused by data deterioration in the process of receiving it
    So I want to check if the register value I set is wrong
     
    We can't use the RFAL library because of circumstances
    Technical Moderator
    November 18, 2024

    Hi,

     

    With the first byte of received data being 11h I would expect an ERR_FRAMING due to

     if ((inBuf[0] & 0x1fU) != 0x17U)
     {
     ISO_15693_DEBUG("0x%x\n", iso15693PhyBitBuffer[0]);
     return RFAL_ERR_FRAMING;
    

    and not a collision error!

    Otherwise please check and compare the various registers - especially MRT, but also NRT and the values of the registers ST25R3916_REG_AUX, ST25R3916_REG_RX_CONF1..4 and ST25R3916_REG_CORR_CONF1..2

    BR, Ulysses