Skip to main content
Explorer II
February 5, 2025
Solved

ST25DV04kc enable mailbox via i2c

  • February 5, 2025
  • 1 reply
  • 613 views

Hi All, 

I'm working on implementing the fast transfer mailbox into a project and I've hitt a wall. The work-flow that I want is for my host chip to wake-up and initialize system registers and write some static data I know will never change to area1, then enable the authorization of the mailbox by writing MB_MODE to 0x01 and wait for an RF FIELD ON event (via GPO pulse), after receiving the pulse the host should free the mailbox by writing 0x01 to the MB_CTRL dynamic register and then write some new data to the mailbox.

The host successfully writes to the system register and first disables the MB_MODE (system register) so that It can write some static NDEF data to area1 and then re-enables the mailbox at the end of initialization (writing MB_MODE to 0x01). I can confirm by reading with a mobile device and using the ST Tap app that the MB_MODE register is set to 0x01, which as far as I can tell means that I should be able to write from either i2c or an RF command to the MB_CTRL dynamic register a value of 0x01 to free the mailbox and write data to the mailbox register without an DATA_NACK. However when I write to the MB_CTRL register from i2c the command is ACK'd but i don't see the value change when I read the device with the mobile device. If i try writing the register with an RF command from the mobile device i see the value change and it appears that the mailbox is free but I can't get the same thing to happen via I2c command. Am I missing something ?

 

Any and all help appreciated,

Patrick

    This topic has been closed for replies.
    Best answer by JL. Lebon

    Hello, 

    The only conditions to being able to write MB_CTRL=0x01 are: MB_MODE=1 and VCC present.

    As soon as VCC disappears or MB_MODE is set to 0, MB_CTRL is reset.
    May be you can check that VCC is always present?

    Best regards.

    1 reply

    pshannonAuthor
    Explorer II
    February 5, 2025

    worth noting that I realized shortly after writing this that I was working from the ST25DVXXK data sheet and not the ST25DVKC  datasheet which is the part that I actually have. I have corrected that aspect of the code but I'm still failing to enabled the mailbox via the dynamic register

    JL. LebonAnswer
    ST Employee
    March 12, 2025

    Hello, 

    The only conditions to being able to write MB_CTRL=0x01 are: MB_MODE=1 and VCC present.

    As soon as VCC disappears or MB_MODE is set to 0, MB_CTRL is reset.
    May be you can check that VCC is always present?

    Best regards.