[SOLVED] PN7120: ICODE SLIX2 Read Single Block doesn't respond

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[SOLVED] PN7120: ICODE SLIX2 Read Single Block doesn't respond

1,880 Views
steverap
Contributor I

I'm trying to read/write ICODE SLIX2 ICs (SL2S2602) using a PN7120, which is connected to a PIC32MX microcontroller without an RTOS. Due to the timing constraints of the I2C bus (can only read/write within a very small window), I need to write my own code to communicate with the PN7120. I get to the point where RF_INTF_ACTIVATED_NTF is returned (including UID). I then send a "single block read" command, which gets a CORE_CONN_CREDITS_NTF response, but never gets a response to the single block read. At first I thought maybe the CRC in the single block read command was incorrect, but I verified my code generates the exact same CRC as the example at the end of the ISO/IEC FCD 15693-3 document.

Here's the complete transaction log I exported from an I2C protocol analyzer (TotalPhase Beagle).

CORE_RESET_CMD: 20 00 01 01        
CORE_RESET_RSP: 40 00 03 00 10 01* 


CORE_INIT_CMD: 20 01 00
CORE_INIT_RSP: 40 01 17 00 03 0E 03 00 06 00 01 02 03 81 82 02 C8 00 FF 02 00 04 05 08 02 02*


RF_DISCOVER_MAP_CMD: 21 00 16 07 04 02 02 05 03 03 01 01 01 02 01 01 03 01 01 04 01 02 80 01 80
RF_DISCOVER_MAP_RSP: 41 00 01 00*


RF_DISCOVER_CMD: 21 03 15 0A 00 01 02 01 01 01 06 01 05 01 80 01 81 01 82 01 83 01 85 01
RF_DISCOVER_RSP: 41 03 01 00*
RF_INTF_ACTIVATED_NTF: 61 05 15 01 01 06 06 FF 01 0A 00 00 8C 70 D6 00 08 01 04 E0 06 80 80 00*


read single block: 00 00 0D 20 20 8C 70 D6 00 08 01 04 E0 00 16 2D
CORE_CONN_CREDITS_NTF: 60 06 03 01 00 01*
 

It never gives a response to the read single block as all following reads on the I2C bus get NAK'ed. Am I missing something? I can't find any complete examples anywhere showing the I2C traffic while attempting to "read single block" on an ICODE SLIX2.

0 Kudos
2 Replies

1,161 Views
marcvandegaar
Contributor I

Hi Steve,

I am struggling with the same issue.

When sending a read single block( '00 00 03 02 20 05') or mutiple block read in no addressed (and also in addressed mode) without sending any CRC, I keep receiving the '60 06 03 01 00 01' as response. 

Would somebody eventually have a log of the i2c exchanges.

It would surely help.

Thanks 

Marc

0 Kudos

1,161 Views
steverap
Contributor I

I finally got this to work. I could not find one document or detailed example that explained the process necessary to read a block of memory from an ICODE SLIX2 using a PN7120. I had to read through five different documents to try to figure this out.

  • NFC Controller Interface (NCI) Technical Specification
  • PN7120 datasheet
  • PN7120 user manual
  • ICODE SLIX2 datasheet
  • ISO 15693 spec

I could communicate with the PN7120 just fine, but was unable to read any memory on the ICODE SLIX2. The "Read Single Block" command never got a response.

I had asked NXP tech support to provide me a I2C bus scan of I2C traffic to the PN7120 while executing a "Read Single Block". They said they were unable to do that. So we purchased a OM5577 and an UDOO Neo board, loaded Android, and ran the NXP Android app to read an ICODE SLIX2 while monitoring the I2C bus with a TotalPhase Beagle I2C analyzer. Turns out I was doing everything correct, except for one thing:

The data packets sent over the I2C bus do NOT include CRC!

The documentation is somewhat misleading. The NCI Tech spec has little information on data packets. It does talk about CRC on data packets, but since I wasn't familiar with their terminology, it wasn't clear to me that the CRC is only used at the RF level. Since the ICODE SLIX2 uses ISO 15693, I looked at that document to see how to issue a "Read Single Block". For each command, that document shows CRC at the end of each command and response. So I (wrongly) assumed it was needed, and added CRC to all my commands. And those data packet commands never got a response, even an error response.

And I doubt the tech support people have ever wrote code to communicate with this chip. Otherwise, when I asked them for a CRC example (I thought maybe my CRC generation wasn't correct), they should have replied, "You don't need CRC as it is only used at the RF level."

I'm hoping this post will keep others from making the same mistake I did....

0 Kudos