cancel
Showing results for 
Search instead for 
Did you mean: 

About NFC Time (using ST25DV16K EEPROM)

GOODTHINK
Associate

Hello, I have a question for NFC R/W mode (read/write EEPROM with ST25DV16K)

tag : ST25DV16K - Nfc tag 4 click

reader : STM32 + X-Nucleo_Nfc08a1

1. When writing data to the ST25DV16K board via RF, how long does it take to read the data via I2C?

2. It takes 5ms to write 1Block data with RF as shown in DataSheet. Is the writing time 5ms? Or does it mean that I should read it after 5ms of writing?

 

Thank you!!!

 

 

5 REPLIES 5
JL. Lebon
ST Employee

Hello, 

5ms is the time taken to program one block of the EEPROM memory. When you write a memory block from RF, the programing is done between the RF request (command sent by the NFC reader) and the RF response (answer sent by the ST25DV16K). The ST25DV16K sends the response after the end of EEPROM writing, which is 5ms after receiving the write request.

The MCU can read the data from I2C as soon as the ST25V16K has sent the RF response. During the RF request/writing/response process, the ST25DV16K can't be accessed from I2C.

The ST25DV16K also provides an interrupt to inform the MCU that a write in EEPROM has been executed (RF_WRITE interrupt). This can help synchronizing I2C read after an RF write.

Best regards.

GOODTHINK
Associate

Thanks for letting me know!

I have another question.

Not executed(RF_WRITE).

Is there a way to know when an RF write interrupt has completed?

 

My situation is to write data(256Bytes) to EEPROM with (08A1)RF from reader and verify it by (ST25DV16K) I2C to verify the data(256Bytes) written to EEPROM.

 

To be more precise,
I use the rfalNfcvPollerExtendedWriteMultipleBlocks function to transmit 256 bytes or more in 16-byte chunks.
Then, in the ST25DV16K tag part, I want to read 16 bytes per interrupt.
Currently, I am transmitting all data in RF, and on the tag side, I am using the Delay function to read data after a certain amount of time after an interrupt occurs.

GOODTHINK
Associate

Looking at the ST25DV16K DataSheet again, it seems impossible to read data from the tag every time an interrupt occurs. Is that correct?

Hello, 

If the RF_WRITE interrupt is enabled, the ST25DV16K will generate a pulse on the GPO pin right after the end of frame of the RF response of a write command.

So, after the Write Multiple Block command of 16Bytes, a pulse will be emitted on the GPO line.

The GPO line must be connected to an interrupt input of your MCU.

Then, when the interrupt is received, the MCU can read from I2C the value written in EEPROM. At that time, the RF has completed its write and the ST25DV16K is available for an I2C command.

So, there should be no problem to read the EEPROM after each RF write, triggering the read on the interrupt received at the end of the write..

It should looks like: RF Write 16Bytes -> Interrupt -> I2C Read 16 Bytes -> RF write 16Bytes -> Interrupt -> i2C read 16 bytes ... etc.

Best regards.