I am trying to test passthrough mode using NTAG-I2C+ dev kit for Arduino (OM23221ARD) to a CLRC663 reader running the SW297859 SDK, but have been unable to get any data written from the CLRC663 to the NTAG's SRAM buffer in passthrough. I've run the NfcrdlibEx9_NTagI2C example in SW297859 and this confirms that pass through is enabled on the NTAG. I've tried updating this block (see attached) to perform an ISO14443 exchange with the NTAG but the SRAM_I2C_READY of the NS_REG never gets set and if I dump the SRAM I don't see anything written. On the CLRC663 side I get a 0x201 error which looks like a timeout on waiting for a response (which makes sense since I don't currently have the NTAG sending anything back until the SRAM_I2C_READY gets set).
Attached is the code change that I made. Can someone please point me the correct direction for performing an ISO14443 exchange with the NTAG? Or is it even possible to perform passthrough exchanges with the CLRC663 running SW297859 SDK since it doesn't support P2P?
Solved! Go to Solution.
Hi Fabian,
Thanks for your help on this. We got bi-directional communication working with the fast-write commands using the CLRC663 and an Arduino connected to the NTAG.
Attached are the code snippets that might save someone else some time in the future.
Jeremy
Hello, my name is Fabian, I've been assigned to support your case.
Thank you for your interest in our products
I'm not sure if you have already checked AN11579 is explains the respective configurations and some Block communications schemes for data transfer depending on the requirements of your project. At this point, it is difficult to detect what is wrong with your setup. Please help us by trying to follow the mentioned schemes and let us know if you are still having issues.
Please keep in mind that is very important to configure FD_ON and FD_OFF and get it's status while in session to correctly access the IC through the interfaces.
Please let me know if this information is helpful.
Hello sir,
Yes the CLRC663 does support Ntag I2C passthrough. The issue is that the example from the NFC Reader Library is only, reading specific pages of the NTAG I2C. Once the passthrough is enabled in the NTAGI2C, the CLRC663 needs to read directly to sector 0, page address 0xF0. As mentioned in section 11.3.1 the use of Fast Read commands are recommended.
Please keep in mind that both interfaces cannot be accessed at the same time and the status registers need to be implemented in your application using NS_REG.
Also, keep in mind that in order to access SRAM is required to power on the device via VCC
Unfortunately, we don't have a specific implementation for this in the Library examples.
If you could please share your application output and/or implementation. We may be able to provide further help.
Hello sir,
Unfortunately, we don't have the specific implementation using phpalI14443p4_Exchange() since the implementation in the Ex9_NTagI2C example is using the MIFARE Ultralight API for performing T2T interfacing, we recommend please adopt this practice as well.
As recommended in the Datasheet, please use the FastRead command. The MfUl does have this function as: phalMful_FastRead()
I'm sure you already have checked SW3647 and SW3648.
But in SW3647, NTAG_I2C_Explorer_Demo is shown in CopyInterruptToSRAM() how we recommend copying the data into the SRAM for the CLRC663 to be able to read the passed values.
In SW3648, there is a file called Ntag_I2C_Demo which shows the implementation for reading into the SRAM. It is required to check if the SRAM is ready before starting to read the actual memory since it could be blocked from the NFC side.
I hope this information may be useful sir.
I don't thing there is any issue with my configuration of the NTAG since I can see it working using the NXP Android reference app when I write to the NTAG then read back over I2C. I believe there is something I am missing on the CLRC663 side of things. I have tried phalMful_FastWrite() without success.
Could you provide reference code of using phalMful_FastWrite() that I could use as a starting point?
Hello sir,
I believe this snippet from the Example may be helpful. Even if the implementation isn't for Pass-through.
Unfortunately, as I mentioned we don't have an implementation at this moment as an example to share. My apologies for this.
If you could please try using the Mful_fastRead() and the sector select. Which in this case would be sector 0.
If you are having issues with the implementation please do not hesitate to share it with us to provide further support.
Hello sir,
Thank you for sharing this code snippet.
In order to implement the RF -> I2C writing, it is required to first serve the correct direction, and the FD pin in NC_REG. Please share this register configuration to double-check if this is correct. Please keep in mind that this configuration has to be done through I2C.
The implementation of the start and end addresses looks good. I believe that the issue is with the register configurations, sir. Could you please check NC_REG values while in session?
It is recommended to please implement a CRC when writing to the SRAM directly.