This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TRF7970A, missing No response IRQ during inventory (15693)

Hi,

I have an issue that I have observed when I try to do a 16-slotted 15693 inventory. It normally works so this issue only happen for a percentage of the attempts.

The normal operation is that I get either RX done where I read the tag or RX No Response. For either of those I send a EOF if it is not the last slot. The issue is that sometimes I do not get an event at all and the sequence totally freezes (at least until my timeout kicks in). Why is this no response suddenly missing. And I have only seen it after a successfully have read a tag, then I for some reason do not get a No Response IRQ after the sent EOF.

Sequence:

CHIP_STATUS_CTRL    = 0x20

ISO_CTRL                     = 0x02

MOD_SYS_CLK_CTRL = 0x01

COLLISION_POS_IRQ_MASK = 0x3F

clear IRQ (internally and reading the IRQ reg)

then I send an inventory request (same as TI reference)

IRQ handling:

RX Done:

Read FIFO_STATUS and then a read from REG_FIFO_IO to get the buffer

rfid_handle_next_slot();

RX No Response:

rfid_handle_next_slot();

And the rfid_handle_next_slot(); is defined as:

CMD_RESET

CMD_BLOCK_RECEIVER    // why are block and enable needed? They are part of the reference code but it seems to work without.

CMD_ENABLE_RECEIVER  // why?

CMD_END_OF_FRAME

When the timeout hits I also checks a few registers:

32,2, 0, 0, 193, 187, 0, 20, 31, 1, 64, 7 (reg 0 -> reg 0x0b, IRQ reg was 0 and IRQ mask still have all interrupts enabled.

As said before, it happens in 16-slot mode, and only sometimes. I noticed that the reference code setup a 20ms timer to handle timeout. Is this necessary, i.e. that I cannot trust that there will be a correct IRQ?

BR