Hi,
I have the TRF7970A EVM, and I manage it directly using our own MCU.The communication between both devices is over SPI. I use source code from TI for TRF7970A as a reference.
1.In the first phase I have transmitted the REQA command and successfully gets ATQA response from the TAG.
SS line low
buf[0] = 0x8f; /* Reset FIFO command */
buf[1] = 0x90; /* send with CRC */
buf[2] = 0x3d; /* write continuous from register 1D */
buf[3] = 0x00; /* Data for register 1D */
buf[4] = 0x0f; /* Data for register 1E */
buf[5] = 0x26; /* ISO14443A REQA command byte*/
SS line high
2.In the next phase i execute a anticollision loop with the anticollission command and again i succesfully got response from the tag and collect 5 bytes of UID of the ISO14443A Tag from the FIFO of the TRF7970a
SS line low
buf[0] = 0x8f; /* Reset FIFO */
buf[1] = 0x91; /* Transmit with no CRC for ANTICOLLISION command */
buf[2] = 0x3d; /* Write continuous to register 0x1D */
buf[3] = 0x00; /* Data for register 0x1D */
buf[4] = NVB & 0xf0; /* Data for register 1E */
if ((NVB & 0x07) != 0x00) /* Number of complete bytes – Data for reg. 0x1E */
buf[4] |= ((NVB & 0x07) << 1) + 1; /* Number of broken bits with Broken byte flag set in reg. 0x1E */
buf[5] = select; /* Can be 0x93, 0x95 or 0x97 */
buf[6] = NVB; /* Number of valid bits = 0x20*/
buf[7] to buf[7+searchlength] = UID search criterion
SS line high
3.But when i goes further and transmit the SELECT command with the Collected UID(at cascade level 1),the TRF7970A chip behave abnormally.
SS line low
buf[0] = 0x8f; /* Reset FIFO */
buf[1] = 0x90; /* Transmit with CRC for SELECT command */
buf[2] = 0x3d; /* Write continuous to register 0x1D */
buf[3] = 0x00; /* Data for register 0x1D */
buf[4] = NVB & 0xf0; /* Data for register 1E */
if ((NVB & 0x07) != 0x00) /* Number of complete bytes – Data for reg. 0x1E */
buf[4] |= ((NVB & 0x07) << 1) + 1; /* Number of broken bits with Broken byte flag set in reg. 0x1E */
buf[5] = select; /* Can be 0x93, 0x95 or 0x97 */
buf[6] = NVB; /* Number of valid bits = 0x70 */
buf[7] to buf[7+searchlength] = UID search criterion
SS line high
When I was trying to transmit select command with UID, I get interrupt on the IRQ line of TRF7970a before the complete transmission. Because When I read IRQ status register of TRF7970a I get a value 0xa0 which means TX is active . Then I wait for the completion of the transmission. Again it sends a interrupt on the IRQ line but this time the value of IRQ status register is 0xc0 which means Response of the tag( RX flag of IRQ status register of TRF7970A ) got mixed with the TX completion flag. So I am not able to collect the UID correctly.
Please help me to resolve this issue.





