cancel
Showing results for 
Search instead for 
Did you mean: 

ST25R100 Read Operation

SametKorur
Associate II

Hi, 
I am running ST25R100 on a different processor and coding it at the register level. With the codes I shared below, I was able to run the chip in wakeup mode as I wanted and ensure that an interrupt occurs when the card is approached. However, I could not succeed in the second stage, which is reading the card. How can I do it, which registers should I write to, please help

1 ACCEPTED SOLUTION

Accepted Solutions
Brian TIDAL
ST Employee

Hi,

If I am not mistaken, the ST25R_SELFTEST_TIMER is based on the general-purpose timer of the ST25R reader device. Therefore, this requires the oscillator to be on. My previous post about moving st25r200OscOn after ST25R_SELFTEST_TIMER was a bad idea. 

Regarding your question about "Is there a function I need to run when an interrupt is triggered?": st25r200Isr() must be executed when the ST25R100 signals the interrupt line.

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

View solution in original post

16 REPLIES 16
Brian TIDAL
ST Employee

Hi,

Could you clarify what you mean by "reading the card"? Are you referring to retrieving the tag's unique identifier (UID) or reading the memory content of the tag? Additionally, which type of tag are you referring to: T2T, T3T, T4AT, T4BT, or T5T?

I recommend using the RF Abstraction Layer (RFAL) available in the ST25 Embedded Library and porting it to your nRF environment. It is portable and scalable C code.

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hello, I have a card that I bought online and I don't know the type of it. I just want to read the UID, can you give me the codes for reading it in the simplest way?

It seems very difficult to integrate the Rfal library to a different processor.

If you could help me read the card only, I would be very happy, thank you

SametKorur_0-1751618049045.png

 

Brian TIDAL
ST Employee

Hi,

You can retrieve NFC tag information using applications such as ST25NFCTap or TagInfo on Android™ phones. This tag seems to comply with the ISO/IEC 14443-3 standard.

In this case, the ST25R100 must be configured in NFC-A/ISO14443 mode. The RF field must be enabled, and the various ISO14443-3 commands (such as REQA or WUPA, followed by ANTICOLLISION and SELECT) must be sent to the tag to retrieve the UID components. These functionalities are available in the RFAL.

The RFAL is designed to be portable across various microcontrollers. All platform-specific dependencies are isolated in macros. If an RTOS such as Zephyr is used, porting examples are available online. For instance, refer to the GitHub repository Zephyr driver for the ST25R NFC reader IC for the ST25R3916, which can serve as a basis for the ST25R100.

Regards

BT

 

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
SametKorur
Associate II

Hi,

I've finished adding the rfal library. What I want to do is read an NFC-type tag. I don't understand what I need to do for this. I called the rfalnfcinitialize() function. What else do I need to call?

Hi, 

tag type: nfc-a 

Brian TIDAL
ST Employee

Hi,

NFC-A tags can be either T2T (linear memory structure with pages) or T4T (file system-like structure supporting multiple files). T2T supports a simple READ command to read pages, whereas T4T supports ISO7816 Command-APDU, such as Select ApplicationSelect File, and Read Binary.  Do you have more precise information about the tag used in your application? Do you plan to use the NFC Data Exchange Format (NDEF)?

The ST25 Embedded Library provides a polling demo (see demo_polling.c file). It demonstrates how to identify tags in the operating volume and perform basic operations such as reading a T2T page or sending a T4T APDU.

An NDEF demo is also available (see ndef_demo.c) if your application uses this data exchange format.

Rgds

BT

 

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
SametKorur
Associate II

Hello,
I only want to read the uuid of the tag. How can I do it in the simplest way possible in wake up mode?

Brian TIDAL
ST Employee

Hi,

Wake-up mode detects the physical presence of a tag. In this mode, the device monitors changes in antenna properties at regular intervals and triggers an IRQ if a change is detected. To read the UID, the reader must operate in ready mode and send specific commands to the tag. The polling demo supports tag detection in wake-up mode, transitions to ready mode, and reads the tag UID. So, the easy way is to port the code from the demo_polling.c file.

Rgds

BT

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
SametKorur
Associate II

Hello,
the first step of the RFAL library is that in rfalInitialize() and st25r200Initialize() which is inside rfalNfcInitialize(), osc_ok is not set in st25r200OscOn() function and it throws an error. What can I do?

SametKorur_0-1752217794501.png