I am communicating and controlling a pair of UCD9240 devices using my own embedded scheme. I know that will raise alarm bells and I’m happy to accept that I may have made a mistake but so far everything has been 100% successful. I can read the DEVICE_ID, select each PAGE and read rail voltages, currents and various other parameters as expected and in each case I implement the PEC byte within the transaction.
Recently I made some adjustments to the VOUT_OV_FAULT_LIMIT value associated with page 2 on one of my devices. I could write different values and verify them by reading them back. However, this change is only taking place in the ‘operating memory’ so the next step was to see that I could use the STORE_DEAFULT_ALL (11hex) to update the Flash memory with the new value.
First, I attempted to use the RESTORE_DEAFULT_ALL (11hex) ‘partner command’ to restore the VOUT_OV_FAULT_LIMIT back to the default value. Unfortunately, however much I read the documentation and checked my implementation I could not get it to restore the value to that which it gets following a power cycle. I confirmed the ACK was valid following the PMBus transaction and tried with and without a PEC byte.
Feeling a combination of brave, foolhardy and desperate I tried the STORE_DEAFULT_ALL command anyway. I modified my VOUT_OV_FAULT_LIMIT value and then cycled the power supply. To my relief everything was still Ok, and better still, when I read the VOUT_OV_FAULT_LIMIT it returned the new value that I had set.
So I have confirmed that I can successfully issue a STORE_DEAFULT_ALL command but I can’t see why RESTORE_DEAFULT_ALL is not restoring the value of VOUT_OV_FAULT_LIMIT in the same way as a power cycle. Both commands have exactly the same transaction format except for the byte code (11hex verses 12hex) so even on a bad day I really can’t see what could be wrong with my implementation.
Which all leaves me thinking that the RESTORE_DEAFULT_ALL command doesn’t really do what is claimed in the documentation or at least it has some restrictions over what parameters it does actually restore.
Looking forward to any advice, pointers and additional information. I can achieve what I need to for now but I don’t like loose ends!