cancel
Showing results for 
Search instead for 
Did you mean: 

Change value on MB_WDG disable I2C.

jbie
Associate II

Hello,

I have a problem with the ST25DV04KC-IE.

In the datasheet the register MB_WDG (000Eh) must have a factory value of 0x03 but my chips have 0x1a. Bits 3-7 are RFU in the datasheet. Do you know why there is a difference?

The real problem is that I tried to change this value to 0x00 through I2C to disable the WD. When I write 0x00 in this register, the I2C become "broken" and answer NACK to each read/write command. I have this problem on 2 boards so my two boards are bricked.

I try to change this value through NFC and the ST25 app without any success. I can change the register 0Dh but I've an error with the register 0Eh. (Error 01 10 (ISO15693_BLOCK_NOT_AVAILAB...)).

How can I reset my board to the factory value?

Thank you.

Edit: With the ST25DV_discovery_ANT_C1 (ST25DV04K-J), I can set MB_WDG to 0x00 and I can change the MB_WDG register through NFC.

1 ACCEPTED SOLUTION

Accepted Solutions
JL. Lebon
ST Employee

Hello,

The problem is that you have the wrong datasheet for your device.

The datasheet you have is the one for the ST25DVxxK.

Your tag is a ST25DVxxKC (the 'C' version). The correct datasheet is available here: https://www.st.com/resource/en/datasheet/st25dv04kc.pdf

One difference between K and KC versions is the register at address 0x000E.

In ST25DVxxKC, this register is MB_WDG: it sets the watchdog for the Fast Transfer mode Mailbox.

In ST25DVxxKC, this register is I2C_CFG: it sets the I2C slave address of the device.

So, by writing in this register, you changed the I2C slave address of the device, which explain why you can't access it anymore. This register is not accessible by RF in the ST25DVxxKC, so you can't recover it's value from RF interface.

The good news is that we know you wrote 0x00 in this register. So we know the new I2C salve address of the device. With 0x00, your salve address is now: 0x0C for the system memory.

So, you can try to write back the original value of this register from I2C using slave address 0x0C:

Start/0x0C/Ack/0x00/Ack/0x0E/Ack/0x1A/Ack/Stop

Once done, you will have the original slave addresses again 0xA6/0xAE (the effect is immediate).

For programing the watchdog in ST25DVxxKC, it is now in the register FTM at address 0x000D.

Hope you can fix your problem with this.

Best regards.

View solution in original post

3 REPLIES 3
JL. Lebon
ST Employee

Hello,

The problem is that you have the wrong datasheet for your device.

The datasheet you have is the one for the ST25DVxxK.

Your tag is a ST25DVxxKC (the 'C' version). The correct datasheet is available here: https://www.st.com/resource/en/datasheet/st25dv04kc.pdf

One difference between K and KC versions is the register at address 0x000E.

In ST25DVxxKC, this register is MB_WDG: it sets the watchdog for the Fast Transfer mode Mailbox.

In ST25DVxxKC, this register is I2C_CFG: it sets the I2C slave address of the device.

So, by writing in this register, you changed the I2C slave address of the device, which explain why you can't access it anymore. This register is not accessible by RF in the ST25DVxxKC, so you can't recover it's value from RF interface.

The good news is that we know you wrote 0x00 in this register. So we know the new I2C salve address of the device. With 0x00, your salve address is now: 0x0C for the system memory.

So, you can try to write back the original value of this register from I2C using slave address 0x0C:

Start/0x0C/Ack/0x00/Ack/0x0E/Ack/0x1A/Ack/Stop

Once done, you will have the original slave addresses again 0xA6/0xAE (the effect is immediate).

For programing the watchdog in ST25DVxxKC, it is now in the register FTM at address 0x000D.

Hope you can fix your problem with this.

Best regards.

jbie
Associate II
JL. Lebon
ST Employee

You are welcome.