Implementing the new Application Note AN12657

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

Implementing the new Application Note AN12657

1,807 Views
kroeger
Contributor II

Hello, (probably Kan) 

I open a new question, because you might not see further additions to the recent dialog.
Kan, you proposed me 2 options to replace library code against short codes given, one in script format, one in pseudocode given in AN12657.
What I did: I implemented both variants. What I got: No card detection, no receive interrupt, even no transmit interrupt.
Background: I only use a specific, ISO15693 tag with an NXP chip inside. It is a small, great Murata tag. I work with the blueboard, unmodified, original antenna. The project in MCUXpresso is based on the (working) ISO15693 example.

The functions for setRegister / getRegister use the working library (bal layer) base code for the SPI interface. Since I get the correct chip version, this seems working to me.
Whenever the FIFO shall be written more then one byte, I split the writes to a series of single writes to the FIFO register address, like this is done in the script example.

I do not know, if the CLRC663 (my chip is version 0x1A) automatically does the correct bitrate towards the tag or if I have to adjust that, depending on some reaction to the tag ? There are two supported variants in the CLRC663 datasheet.
I tested the chip initialization code by embedding the new C code as a new file in the existing project, which is still working in the detection loop, if I replace the library initialization of the CLRC663 with that from script or pseudocode. The library detection loop is then still working with the initialization, done by my code.
If I use the detection from script or pseudocode, I don't get any interrupt flags in IRQ1/IRQ0 registers except for those of the timers. Even the transmission done Interrupt is not set. It seems, I miss something essential.
What about the external IRQ line - if the pseudocode enables the (wired!) IRQ line, some unwanted callback code from within the library might kill my interrupt bits, before I detect them ?

See this pseudocode fragment from AN12657 with my comments: 

13: writeRegister(0x00, 0x07);  // do a transmission, with content of fifo
14: for(counter = 0; counter < 16; counter++);  // comments state, there are 16 time slots - WHAT IS MEANT - timer reloads ? Why repeating just 16 times ? I tried to give much more loops, without change
{  // loop start
15: if(CardResponded()) // this function seems far too short described, it states to read IRQ1 - BUT THERE IS NO IRQ other then timer related

    (I have no idea, how this function shall or could be synchronized to timer events, related to mentioned time slots)
{
16: readRegister(0x05, UID);  // my fifo is always empty when read. Is it is meant, that a single read shall be done, or length of known fifo content ?
}
17: writeRegister(0x33, 0x0C);
18: writeRegister(0x2E, 0x00);   // resetting the fifo during transfer seems a bad idea to me ?
19: writeRegister(0x02, 0xB0);
20: writeRegister(0x00, 0x07);
} // loop end
21:writeRegister(0x28, 0x86); // switch off RF

Thanks for your help, I learned a lot already, but the project was interrupted again and again. So my late response.

Best Regards,
Joachim

0 Kudos
Reply
6 Replies

1,720 Views
rost0031b
Contributor II

Is there any update on this question? l would also like to know this information. I am attempting to do almost exactly the same thing: use CLRC663 to read an NXP NTAG2 15693 tag and it's not being detected. The functions CardResponded() needs to be clarified. The detailed description mentions that it reads IRQ0 register according to AN12657, Rev 1.0 Jan 2020. This must be a typo (IRQ0) since none of those flags indicate anything about a card. IRQ1 seems to have some flags that look promising but I'm not getting any of those to set either. 

0 Kudos
Reply

1,693 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi @rost0031b ,

 

The IRQ0 register has RxIRQ status bit, which indicates the receiver detects the end of a data stream.

 

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply

1,760 Views
kroeger
Contributor II

In the library code is the external interrupt enabled for the CPU (LPC1769).
I commented out, those 2 codelines, which enable external interrupts - the library stops working. So the library depends on the CLRC663 Interrupt line. But my code is still not working, without external interrupt enable for the CPU.

0 Kudos
Reply

1,760 Views
Kan_Li
NXP TechSupport
NXP TechSupport

Hi Joachim,

I am checking with the author for this issue, and will let you know when I have any more information.

Thanks for your patience!

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply

1,587 Views
ET
Contributor I

Hello, 

I was wondering if you have the ansmxer to the questions below. I currently have the same issues working with the AN12657. 

Tanks

Tags (2)
0 Kudos
Reply

1,107 Views
kroeger
Contributor II

Hello @ET , Hello @Kan_Li 

I am still working on this. I am not in a working state on my project. I would be glad to find a mate for exchange. I am using the SLRC610 now, which is a stripped down version of the CLRC663. But it supports ISO15693, which is, what I need.

When I pulled out the register settings for ISO15693 starting at EEPROM address 0x194, it was different from the datasheet. For example the driver setting is 0x8F instead of 0x89 - which makes sense, because the outputs are in a symmetric push-pull configuration then.

I found the datasheet is misleading with register 0x28 at all.
You can't set it to 1 or 0 as it is written. What you get, is a single shot, a swing on both outputs, which is with phase angle of 180 degrees. Which makes sense, but this is quite different behaviour.

I found a set of different setups for registers, depending on the RFID response frequency. I don't know it's frequency, what can I do?

Greetings,
Joachim

0 Kudos
Reply