cancel
Showing results for 
Search instead for 
Did you mean: 

Data Rate of st25dv?

Vmere.1
Senior

Hello,

If the NFC operates at 13.56MHz and data rate is 100–420 kbps.

How fast a data of 10kB can be transferred with a 100kbps speed.?

Is it (10kB * 8/100k) + (10kB * 8/100k) * (overhead) ?

Regards,

Vmere

1 ACCEPTED SOLUTION

Accepted Solutions
JL. Lebon
ST Employee

Hello,

Thank for clarifying your need.

The theorical evaluation is not easy to do, but basically, here is how it works:

  • the reader will send messages of 256 bytes (Fast Transfer Mode buffer size). At 26kb/s, with command overhead and including response, this will take ~80ms.
  • Then, the MCU will receive an interrupt and read the message. This is fast through I2C: ~3ms at 1MHz.
  • Then the reader needs to poll the MB_CTRL_Dyn regsiter to know if the message has been read ~6ms + a few ms of margin to avoid collision with I2C read.
  • After a latency time due to reaction time of the phone (a few ~ms) we loop back on first step to send the new message

This loop needs to be repeated ~40 times to transfer 10kB.

It is difficult to evaluate exactly the bitrate and the total time as the latency of the phone between two RF commands is not known, but you can expect to transfer 10KB from the phone to the MCU in about 4s (bit rate ~2.4kB/s).

You can probably gain a bit by adjusting the polling timing and even more (~1s) by completely avoid RF polling of status registers (but you need to have control of timings on both RF and I2C).

If you have a ST25DV DISCOVERY board (https://www.st.com/en/evaluation-tools/st25dv-discovery.html or https://www.st.com/en/evaluation-tools/st25dv64kc-disco.html) and the NFCTap app on your iPhone (or ST25NFCTap on android) you can play with the Fast transfer demo which will allow you to transfer 10kB from the phone to the STM32. You can then evaluate the datarate. Source code of this demo is also available for your reference.

Best regards.

View solution in original post

3 REPLIES 3
JL. Lebon
ST Employee

Hello,

NFC operate at different datarates depending on the NFC technology.

There are 4 different NFC technologies: NFC-A, NFC-B, NFC-F and NFC-V. Each has its own datarate.

ST25DV is a NFC-V device. NFC-V is working at longer range than other NFC technologies but is slower. NFC-V datarate is 26kb/s. This is the datarate of data transmission between the reader and the tag, in both directions, but there is many other aspects to consider to get the real datarate.

What do you mean by "transferring" 10kB ?

  • Is it writing 10kB to the tag's memory ?
  • Is reading 10kB from the tag's memory ?
  • Is it transferring 10kB between a reader and a MCU connected to the I2C bus of the tag ?

Each situation is very different and can lead to very different answers.

Best regards.

Vmere.1
Senior

Hello apologies,

Thanks for clarifying.

So I use ST25DV and its data rate is 26kb/s as you said

I want to do a firmware upgrade via iPhone (created some app) and then transfer the binary image (approximately 10kb).

I want to theoretically evaluate how much time does it take to do a firmware from iPhone via a dynamic st25dv tag to stm32411re which is connected via i2c.

  • Is it writing 10kB to the tag's memory ? (not this)
  • Is reading 10kB from the tag's memory ? (not this)
  • Is it transferring 10kB between a reader and a MCU connected to the I2C bus of the tag ? (THIS ONE)

JL. Lebon
ST Employee

Hello,

Thank for clarifying your need.

The theorical evaluation is not easy to do, but basically, here is how it works:

  • the reader will send messages of 256 bytes (Fast Transfer Mode buffer size). At 26kb/s, with command overhead and including response, this will take ~80ms.
  • Then, the MCU will receive an interrupt and read the message. This is fast through I2C: ~3ms at 1MHz.
  • Then the reader needs to poll the MB_CTRL_Dyn regsiter to know if the message has been read ~6ms + a few ms of margin to avoid collision with I2C read.
  • After a latency time due to reaction time of the phone (a few ~ms) we loop back on first step to send the new message

This loop needs to be repeated ~40 times to transfer 10kB.

It is difficult to evaluate exactly the bitrate and the total time as the latency of the phone between two RF commands is not known, but you can expect to transfer 10KB from the phone to the MCU in about 4s (bit rate ~2.4kB/s).

You can probably gain a bit by adjusting the polling timing and even more (~1s) by completely avoid RF polling of status registers (but you need to have control of timings on both RF and I2C).

If you have a ST25DV DISCOVERY board (https://www.st.com/en/evaluation-tools/st25dv-discovery.html or https://www.st.com/en/evaluation-tools/st25dv64kc-disco.html) and the NFCTap app on your iPhone (or ST25NFCTap on android) you can play with the Fast transfer demo which will allow you to transfer 10kB from the phone to the STM32. You can then evaluate the datarate. Source code of this demo is also available for your reference.

Best regards.