2025-02-02 05:53 PM
I'm trying to change from ST25DV16K board to ST25DV64KC and use it.
The board setup part seems to be fine, but there's a problem with the interrupt setup part.
When writing data to the EEPROM of the tag board with RF from NFC08A1, the code that worked on 16K doesn't work on 64KC. What's the problem?
This is my code.
Solved! Go to Solution.
2025-02-17 10:49 AM
Hello,
Yes, sorry for that!
Here is the right URL:
Best regards.
2025-02-14 08:12 AM
Hello,
Actually, there are a few differences between the ST25DVxxK and the ST25DVxxKC.
For instance, the GPO configuration byte is different between the K and the KC versions.
Please check the application note AN5633 Migrating from ST25DVxxK to ST25DVxxKC (https://www.st.com/resource/en/application_note/an5633-migrating-from-st25dvxxk-to-st25dvxxkc-stmicroelectronics.pdf) It explains the few differences that you need to be aware of in order to migrate.
Best regards.
2025-02-16 04:54 PM
Thank you!! But The url is 404 Error..!
2025-02-17 10:49 AM
Hello,
Yes, sorry for that!
Here is the right URL:
Best regards.
2025-02-17 07:44 PM
Thank you!!
2025-02-17 08:18 PM
I have another Question about writing EEPROM with i2c !
I'm trying to write 600 bytes to ST25DV64KC EEPROM.
So I'm writing it in 256 bytes each, but when I write and read it without delay, the data is not written in the middle.
However, when I write 256 bytes, add a delay of about 100ms, write and read it again, it is written properly.
I want to know the minimum delay to write 600 bytes to EEPROM without any problem.
Like
Write 256
delay 100ms
write 256
delay 100ms
write 88
delay 100ms
after
Read Data, No problem.
But
write 256
write 256
write 88
after
Read Data, it has problem about Data.
2025-02-18 12:14 AM
Hello,
After the STOP condition of an I2C write in EEPROM, there is a programming time of the EEPROM.
The programming time is called tw in the datasheet and is given for 5ms per row of EEPROM memory. A row is 16Bytes long. If you write 256 Bytes, you will program 16 (or 17 is the start address is not aligned with a row start address) rows, so 16*5ms=80ms.
During the programming time, the device is not accessible through I2C and any I2C command will be "NACK'ed".
This is all explained in the datasheet in chapter 6.4.2 I2C sequential write.
Then you have two 3 ways for managing this programming time:
- first solution is to add a delay in your code (here, more than 80ms). This is simple but this is blocking for your program, and you have to calculate the delay for each I2C write command.
- second solution is to do polling on the I2C bus to know when it is available again. For this, you have to regularly send an I2C device select without data. If it is ACK'ed, it means the programming operation is finished. See example in the datasheet on chapter 6.4.3 Minimizing system delays by polling on ACK.
- third solution is to use an interrupt. The interrupt I2C_WRITE, if enabled, will be trigged at the end of the programing time.
Best regards.
2025-02-19 05:39 PM
Thank you!!!
When using the ST25DV64KC board, I confirmed that if I write 600 bytes, I can write 256 bytes, delay 80ms, and then write again.
Then, how is the ms calculation formula when using the ST25DV16K board?
The data sheet says 5ms per byte, so in this case, does it become 600 * 5m?
2025-02-20 12:41 AM
Hello,
Actually, the datasheet says: "5ms for 1 up to 16 bytes".
As said in previous message it is explained in chapter "6.4.2 I2C sequential write" of the datasheet.
If you want a more complete explanation, please read the AN5779 application note: https://www.st.com/resource/en/application_note/an5779-optimizing-i2c-write-time-for-st25dvxxkc-dynamic-tags-stmicroelectronics.pdf
All you need to know is in this document.
Best regards.