In my application I am using M24SR02 where the same part of the chip is being read through NFC and I2C interface at the same time. NFC reader is working in infinite loop and does two things:
1) Reads 0x10 bytes from 0x0097 offset
2) Issues SendInterrupt command to toggle GPO pin on M24SR02
MCU that is driving I2C interface does the following in infinite loop:
1) waits for GPO toggle
2) issues KillRFsession command over I2C
3) issues NDEF Tag Application Select, NDEF Select commands
4) Issues ReadBinary command to read 0x02 bytes from 0x0000 offset to get NDEF message length. The returned length is 0xE5
5) Finally issues ReadBinary command to read 0x10 bytes from 0x0097 offset.
Most of the time ReadBinary works fine returning correct data. Sometimes it returns 0x6A 0x86 status meaning "Incorrect P1 or P2 values" even if ReadBinary command is always the same (checked with oscilloscope). The same thing happens when I use ExtendedReadBinary command (this one should ignore NDEF message length).
I've also noticed that problem disappears when I don't use NFC interface and make MCU continuously repeat the loop without waiting for GPO to toggle.
- Under what circumstances M24SR02 can return 0x6A 0x86 status for ReadBinary or ExtendedReadBinary commands ?
- Can M24SR02 internal firmware start to misbehave if KillRFsession command is issued while NFC transaction (i.e. Read Binary) is in progress? M24SR02 datasheet rev10 states "Caution: A successful completion of the RF command is not certain.", but last post in How to manage simultaneous I²C and RF data transfers ? contradicts it.