I have been trying to get the VADJ to 1.8V using i2c and your example is very close what I was doing. My board always went to cut-off. What I did differently was:
1. I did not adjust the VOUT_OV_FAULT_LIMIT
2. I had to set the VOUT_MODE (0x20) manually because using Vivado version 14.4, the repeated start option is removed from the I2C peripheral (look in xiicps.h). This means it is impossible to read any of the UCD90120A register values because I believe the PMBUS/I2C requires repeated start since you first give the write command followed by the repeated start and then the read command. At least I could not get it working. Note! For writing I was using the XIicPs_MasterSendPolled command, which the UCD90120a ACKs. (You can probe it from the J4 PMBUS connector pin10 on the ZC706 board, which is the SDA line. The pin is the top-left one if the board is facing you so that the texts are upright. After each sent byte this line is getting pulled low by the ucd90120a) So basically I knew that what I was writing were actually going in there and getting received.
3. Setting the voltages were different because the VOUT_MODE was different (I probably did it wrong since I was simply trying to put the exponent to 2^-1 so that my under voltage would be at 1.5 ( 3 * 2^-1)
So my setting for under voltage was:
i2c write: 0x65 0x44 0x03 0x00
and VOUT_MODE:
i2c write: 0x65 0x20 0x1F (0x1F should correspond to -1 since VOUT_MODE is 8 bits, top 3 bits are reserved and the bottom 5 determine the exponent as two's complement value)
These did not work!
I adjusted the code that I would write the vout_mode so that it would be -13 as in your example.
(0x65 0x20 0x13) (coincidentally -13 decimal corresponds 0x13 in two's complement with 5 bits 0x00010011)
So I included setting first the UV, then the tck_gpio_19 and last OV voltage in a way that my exponent from VOUT_MODE would be -13 and followed exactly your example but still the board goes into cut-off. When I probe the VADJ value from SW12 it reads about 0.4 volts. Bummer.
But I believe that your example is probably the most closest to the truth getting the VADJ programmed to 1.8V. I've read probably all of the threads considering this topic and the ucd90xxx and pmbus reference manuals through multiple times and this really should work.
I don't know if you are actually required to use some additional xml scripts that were mentioned here:
http://www.xilinx.com/support/answers/53599.html
But yeah, I thank you very much for your effort and posting the instructions, I will probably try to see if I have some small mistake that causes this program not to work properly ( I did not probe the J4 connector for ACKs after using your code) But the c-code runs thru nicely and then cuts the power off.
HorizontalGroup
or twoStage
instances. But since your world doesn't move, theHorizontalGroup
is a better solution because it's simpler. :) – Paul Manta Jul 19 '14 at 9:00