Other Parts Discussed in Thread: TRF7960, TRF7962A
I am using TRF7961 chip with a single RFID tag. I am using the chip in ISO15693 RFID standard. The mcu used to communicate with TRF7961 is PIC18. The communication is done using SPI interface. The SPI frequency is 2Mhz. I am using the SLOC247 as the reference for my interrupt handler. The issue is faced whenever a command is sent whose response is more than 9 bytes for example the "get system information command(2B)" which is supposed to return 15 bytes. The first interrupt i get is for transmission and the IRQ status register value read is 0x80 which is fine . I get the second interrupt for reception and the IRQ status register value is 0x60 which means the reception has started and i read the FIFO status register whose value is 0x28 which means i have 9 bytes available in the fifo and then i read those bytes. Now as the irq handler in the SLOC firmware is continuously polling the IRQ line in a do while loop i am also doing the same thing and what i see is that the IRQ line is staying high and i read the IRQ status register now and it shows a value of 0x46 or sometimes 0x42 but the value should be 0x40 which will enable me to read the remaining 6 bytes of the 15 in command response. So i have have two questions
1) Why am i getting 0x46 or 0x42 even though i am using a single RFID tag rather i should get 0x40 which will be the correct value and allow me to read the remaining bytes.
2) whenever the data to be received is greater than 9 bytes is the irq line continuously supposed to stay high after getting the first response interrupt until the whole data is received or we will get separate interrupts for separate chunks of 9 bytes. In my case after the first 9 bytes the IRQ line is staying high until i read the 0x46 from the IRQ status register.
What could be causing this issue is it the hardware or the firmware.