Using my own embedded design I am generally able to communicate on the PMBus with the UCD9240 and UCD9248 controllers and have successfully used many of the commands including VOUT_COMMAND to adjust the output voltage of a rail.
I recently had the requirement to be able to set a rail to 1.8v, 2.5v and 3.3v based on information determined from a peripheral card plugged to the main board. It was easy to do this using the VOUT_COMMAND but only by programming the default values of VOUT_MAX, VOUT_OV_FAULT_LIMIT, VOUT_UV_FAULT_LIMIT, VOUT_OV_WARN_LIMIT, VOUT_UV_WARN_LIMIT, VOUT_MARGIN_HIGH, VOUT_MARGIN_LOW, POWER_GOOD_ON and POWER_GOOD_OFF to cover the entire range.
Allowing for 15% below the 1.8v and 15% above 3.3v this meant that values ranged between 1.563v and 3.795v. It worked but clearly this compromises the safety that features like VOUT_MAX exist for. So the plan was to adjust all the parameters to values related closely to each nominal voltage. So now I turn the rail off (SEQ3 input is being used as an on/off control), I write the set of 10 new values and then turn the rail back on again. Unfortunately it now appears that the value of VOUT_COMMAND register is not changing from its initial 2.5v default.
So to my questions….
Do I need to write the set of values in a particular order? Even though the output is turned off, is there something still preventing values being written? For example I know that it would normally stop me writing a value to VOUT_COMMAND that is higher that VOUT_MAX but what happens if I set VOUT_MAX to a value less than the current value of VOUT_COMMAND? Could that be locking VOUT_COMMAND so it cannot be written even if when the new value being written is lower? Am I missing a step before making such a lot of changes? May be I need to write something to OPERATION first?
Because the UCD92xx controls 3 other rails that must remain active on the board I cannot turn the whole thing off to make changes. I learnt previously that having any outputs active prevented RESTORE_DEFAULT_ALL from working so I’m just wondering if it is also impossible to change so many parameters on a single rail even if that rail it is off. Of course, I’m always willing to believe I’m doing something silly in my own code but I’d like to rule anything else out!
Thanks in advance for any advice or additional knowledge.
Regards,
Ken