This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TPS549D22: Write register fail

Part Number: TPS549D22

Dear Team

The customer have some questions about writing register, could you help to recommend?

The xml file as attached.

1. How to convert xml file into .bin file or .HEX file
2. Is there have prevent write inside the empty IC? Because there are some values, we can’t burn it in IC.

Many thanks

Denny

<?xml version="1.0" encoding="utf-8"?>
<ProjectData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>1</Version>
  <Timestamp>2021-06-16T15:13:55.8739236+08:00</Timestamp>
  <Creator>Texas Instruments Fusion Digital Power Designer v7.4.1.0 [2020-09-29]</Creator>
  <Devices>
    <Device>
      <PartID>TPS549D22</PartID>
      <Address>16</Address>
      <Is_Offline>false</Is_Offline>
      <SAA_Number>1</SAA_Number>
      <Saved_In_Offline_Mode xsi:nil="true" />
      <Saved_While_NVM_Write_Pending xsi:nil="true" />
      <Write_Protected>false</Write_Protected>
      <Package>0</Package>
      <Num_Outputs>1</Num_Outputs>
      <Parameters>
        <Parameter>
          <ID>VOUT_MODE</ID>
          <Code>32</Code>
          <IDAndCode>VOUT_MODE [0x20]</IDAndCode>
          <ValueText>EXP =-9</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x17" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>CAPABILITY</ID>
          <Code>25</Code>
          <IDAndCode>CAPABILITY [0x19]</IDAndCode>
          <ValueText>Max Bus: 1000 Khz; PEC: Yes; SMBALERT#: Yes</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0xD0" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Manufacturer</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_00</ID>
          <Code>208</Code>
          <IDAndCode>MFR_00 [0xD0]</IDAndCode>
          <ValueText>0</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Raw</ParameterType>
          <ParameterCategory>User</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_01</ID>
          <Code>209</Code>
          <IDAndCode>MFR_01 (PGOOD_DLY) [0xD1]</IDAndCode>
          <ValueText>POD:1024µs [010b], PGD:1024µs [010b]</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x12" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_02</ID>
          <Code>210</Code>
          <IDAndCode>MFR_02 [0xD2]</IDAndCode>
          <ValueText>CM: True, HICLOFF: False, SST: 0x00, FORCESKIPSS: True, SEQ: False, TRK: False</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x11" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_03</ID>
          <Code>211</Code>
          <IDAndCode>MFR_03 [0xD3]</IDAndCode>
          <ValueText>FS:650kHz [011b], RCSP:R ÷ 2 [00b], DCAP3:True</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x83" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_04</ID>
          <Code>212</Code>
          <IDAndCode>MFR_04 [0xD4]</IDAndCode>
          <ValueText>DCAP3_Offset:0mV [00b], DCAP3_Offset_Sel:True</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x80" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_06</ID>
          <Code>214</Code>
          <IDAndCode>MFR_06 [0xD6]</IDAndCode>
          <ValueText>VDDUVLO:4.25V [101b]</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x05" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>TPS59X20_MFR_SPECIFIC_07</ID>
          <Code>215</Code>
          <IDAndCode>MFR_07 [0xD7]</IDAndCode>
          <ValueText>VTRKIN:1.25V [1111b], TRKOPTION:False, SPARE:False, VPBAD:True</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x8F" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>DEVICE_CODE</ID>
          <Code>252</Code>
          <IDAndCode>MFR_44 [0xFC]</IDAndCode>
          <ValueText>ID: 0x020 (TPS549D22), Revision: 0x1</ValueText>
          <ValueEncoded xsi:type="PMBusWord" Hex="0x0201" />
          <ParameterType>Raw</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>ON_OFF_CONFIG</ID>
          <Code>2</Code>
          <IDAndCode>ON_OFF_CONFIG [0x02]</IDAndCode>
          <ValueText>Mode: CONTROL Pin Only; Control: Active High, Turn off Immediately</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x17" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>OnOff</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>OPERATION</ID>
          <Code>1</Code>
          <IDAndCode>OPERATION [0x01]</IDAndCode>
          <ValueText>Unit: ImmediateOff; Margin: None</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Custom</ParameterType>
          <ParameterCategory>OnOff</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>STATUS_BYTE</ID>
          <Code>120</Code>
          <IDAndCode>STATUS_BYTE [0x78]</IDAndCode>
          <ValueText>&lt;EMPTY&gt;</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Bitmask</ParameterType>
          <ParameterCategory>Status</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>STATUS_CML</ID>
          <Code>126</Code>
          <IDAndCode>STATUS_CML [0x7E]</IDAndCode>
          <ValueText>&lt;EMPTY&gt;</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Bitmask</ParameterType>
          <ParameterCategory>Status</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>STATUS_IOUT</ID>
          <Code>123</Code>
          <IDAndCode>STATUS_IOUT [0x7B]</IDAndCode>
          <ValueText>&lt;EMPTY&gt;</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Bitmask</ParameterType>
          <ParameterCategory>Status</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>STATUS_VOUT</ID>
          <Code>122</Code>
          <IDAndCode>STATUS_VOUT [0x7A]</IDAndCode>
          <ValueText>&lt;EMPTY&gt;</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Bitmask</ParameterType>
          <ParameterCategory>Status</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>STATUS_WORD</ID>
          <Code>121</Code>
          <IDAndCode>STATUS_WORD [0x79]</IDAndCode>
          <ValueText>&lt;EMPTY&gt;</ValueText>
          <ValueEncoded xsi:type="PMBusWord" Hex="0x0000" />
          <ParameterType>Bitmask</ParameterType>
          <ParameterCategory>Status</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>VOUT_COMMAND</ID>
          <Code>33</Code>
          <IDAndCode>VOUT_COMMAND [0x21]</IDAndCode>
          <ValueText>0.875000 V</ValueText>
          <ValueEncoded xsi:type="PMBusWord" Hex="0x01C0" />
          <ValueNumeric>0.875</ValueNumeric>
          <ParameterType>Voltage</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>VOUT_MARGIN_HIGH</ID>
          <Code>37</Code>
          <IDAndCode>VOUT_MARGIN_HIGH [0x25]</IDAndCode>
          <ValueText>0.875000 V</ValueText>
          <ValueEncoded xsi:type="PMBusWord" Hex="0x01C0" />
          <ValueNumeric>0.875</ValueNumeric>
          <ParameterType>Voltage</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>VOUT_MARGIN_LOW</ID>
          <Code>38</Code>
          <IDAndCode>VOUT_MARGIN_LOW [0x26]</IDAndCode>
          <ValueText>0.875000 V</ValueText>
          <ValueEncoded xsi:type="PMBusWord" Hex="0x01C0" />
          <ValueNumeric>0.875</ValueNumeric>
          <ParameterType>Voltage</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
        <Parameter>
          <ID>WRITE_PROTECT</ID>
          <Code>16</Code>
          <IDAndCode>WRITE_PROTECT [0x10]</IDAndCode>
          <ValueText>0</ValueText>
          <ValueEncoded xsi:type="PMBusByte" Hex="0x00" />
          <ParameterType>Raw</ParameterType>
          <ParameterCategory>Configuration</ParameterCategory>
          <Page>255</Page>
          <Phase xsi:nil="true" />
          <CustomIndex xsi:nil="true" />
        </Parameter>
      </Parameters>
      <Other>
        <Custom_Commands>
          <READ_VTRACK_REG>
            <Enabled>false</Enabled>
            <Label>Vtrack</Label>
            <Gain>1</Gain>
            <Offset>0</Offset>
            <Reference>2</Reference>
          </READ_VTRACK_REG>
        </Custom_Commands>
        <UCD31XX_CLA_User_Data />
      </Other>
    </Device>
  </Devices>
  <Sequencing_Config_V1>
    <Show_Warning_For_Circular_Rail_Dependencies>true</Show_Warning_For_Circular_Rail_Dependencies>
    <Traces />
    <Int_Rail_Defs>
      <RailDefinition>
        <Part_ID>TPS549D22</Part_ID>
        <Address>21</Address>
        <Name>Rail #1</Name>
        <Page_Index>0</Page_Index>
        <Color />
        <Ext_Tracking_Mode>None</Ext_Tracking_Mode>
        <Control_Line>1</Control_Line>
        <Ext_Tracking_Custom_Source_Name />
        <Operation_Event_Times>
          <Start>0</Start>
          <Stop>0</Stop>
        </Operation_Event_Times>
        <Vout>0</Vout>
        <Note />
      </RailDefinition>
      <RailDefinition>
        <Part_ID>TPS549D22</Part_ID>
        <Address>16</Address>
        <Name>Rail #1</Name>
        <Page_Index>0</Page_Index>
        <Color />
        <Ext_Tracking_Mode>None</Ext_Tracking_Mode>
        <Control_Line>1</Control_Line>
        <Ext_Tracking_Custom_Source_Name />
        <Operation_Event_Times>
          <Start>0</Start>
          <Stop>0</Stop>
        </Operation_Event_Times>
        <Vout>0</Vout>
        <Note />
      </RailDefinition>
    </Int_Rail_Defs>
    <Ext_Rail_Defs />
    <Devices>
      <DeviceDefinition>
        <Part_ID>TPS549D22</Part_ID>
        <Address>21</Address>
        <Control_Pin_Event_Times>
          <Start>0</Start>
          <Stop>0</Stop>
        </Control_Pin_Event_Times>
        <Device_Power_Event_Times>
          <Start>0</Start>
          <Stop>0</Stop>
        </Device_Power_Event_Times>
        <Collapsed_In_Device_Selector>false</Collapsed_In_Device_Selector>
      </DeviceDefinition>
      <DeviceDefinition>
        <Part_ID>TPS549D22</Part_ID>
        <Address>16</Address>
        <Control_Pin_Event_Times>
          <Start>0</Start>
          <Stop>0</Stop>
        </Control_Pin_Event_Times>
        <Device_Power_Event_Times>
          <Start>0</Start>
          <Stop>0</Stop>
        </Device_Power_Event_Times>
        <Collapsed_In_Device_Selector>false</Collapsed_In_Device_Selector>
      </DeviceDefinition>
    </Devices>
    <Other_Names />
  </Sequencing_Config_V1>
  <Use_Old_UCD92XX_CLA_Gains>true</Use_Old_UCD92XX_CLA_Gains>
</ProjectData>

  •  

    1) There is currently no PMBus standard .hex or .bin data-format, so you will need to find out from the programmer tool what formatting for the .hex or .bin file they need.  With that, we can likely explain how to convert from a CSV programmer file to the .hex or .bin file needed.

    2) Not all PMBus commands in the TPS549D22 support NVM storage.  What values are they trying to write that they are having issues with?

  • Hi Peter 

    1. I use Fusion Digital Power Designer to expert register setting file, It only can export three types format.

      

    2. What values are they trying to write that they are having issues with?

    1.address 0x21 write 0x01C0 read back 0x01CD
    2.Address 0x25 write 0x01C0 read back 0x01CD
    3.Address 0x26 write 0x01C0 read back 0x01CD
    4.address 0xD2 write 0x11 read back 0x17

    3. The device setting as below, The customer use programmer address 0x21 write 0x01C0, but read back 0x01CD.

    Whether the pinstrap setting of VSEL cause reg 0x21 can't be write by NVM?

    For writing register fail, could you help to recommend?

    Many thanks

    Denny

  •  

    The VSEL programming of VOUT_COMMAND (Command Code 21h) overwrites the NVM setting of VOUT_COMMAND during the power-on-reset process unless the 0.975V programming values are selected by VSEL (OPEN or 0Ω)  If they want to store a BOOT voltage to NVM, they will need to use one of these settings for the VSEL pin.

    Similarly, Bits [3:1] from MFR_SPECIFIC_D2 (Command Code D2h) - Soft-start time and Hiccup / Latch-Off fault response are also initially loaded from Pin Programming via the VSEL and MODE pin resistors.  The Pin Programmed settings will always be honored on power-up and can only be changed via programming during operation, resetting to their Pin Programmed values after each power cycle.

    To change MFR_SPECIFIC_D2 to 11h on power up, you'll need to update the FSEL, MODE and VSEL resistors to select 1ms soft-start time, Hiccup fault response, and Forced Continuous Conduction Mode light-load operation settings.

  • Dear peter 

    The  xml file is same.

    The customer had selected VSEL open, but address 0x21 write 0x01C0 read back 0x0166.

    1. Is any register setting problem?

    2. If don't use GUI, after use PMbus command to write configuration value to NVM. is need to write address 0x11h?

    What value need to write 0x11h.

    Many thanks

    Denny

  • Hi Denny,

    Peter is on his holiday and may respond to you with some delay. Please wait for one more day.

    Thanks,

    Lishuang

  •  

    1) I don't see anything wrong with writing 0x01C0 (0.875V) to 0x21, but it looks to be set to the 700mV option with a VSEL resistor of 10k or 12.1k. 

    Are you trying to set the value using the FUSION GUI or your own SMBus source device?

    Are you reading it with the FUSION GUI or your own SMBus source device?

    Are you storing the changes to NVM between reading and writing?

    Are you power cycling the TPS549D22 between reading and writing?

    Can you walk me through what you are doing step by step so I can try to recreate the problem here?

    2) Whether using the FUSION GUI or or an alternate PMBus source, you will need to send the "STORE_DEFAULT_ALL" command to the TPS549D22 before it will update the NVM values, otherwise changes will only be stored in active memory and will be lost and reset if VDD drops below its UVLO level.

    In the TI FUSION GUI, you will need to click the "STORE to NVM" button

    With another SMBus source device, you will need to use the "Send Byte" transaction to send command code 0x11 with no data byte to the device.  If you include a data byte, the TPS549D22 will interpret it as a PEC byte and compare the data byte with the expected PEC.  If the data byte sent does not match the expected PEC byte the TPS549D22 will reject the STORE command as invalid.

    if you need to calculate a PEC byte because your SMBus source device does not support sending a dataless SEND BYTE transaction, the TI FUSION GUI includes a PEC & SMBus to I2C Translation tool that will calculate the required PEC byte 

    In the tool, select the Write direction, and the device's address.  Then Send Byte to Command code 0x11 and it will calculate the PEC.  Below, you can see, with Address 11d (0x0B) the PEC is 0x5E, but since the Address Byte is part of the PEC calculation, you'll need to match it to your address.

  • Hi Peter

    The issue about writing register fail of 0x21.

    The issue is causing by the setting of VSEL pin, the customer float the VSEL pin(not pull high or pull low). So the Vout will start up to the pinstrap value.

    Many thanks

    Denny

  • Hi Denny,

    Thanks for your feedback. Glad to see the issue is solved.

    Let's close this thread.

    Thanks,

    Lishuang

  • Hi Peter 

    When the power is turned off again, 0xD2 will be fixed according to the definition on the pin.
    Only when the hardware configuration (resistance) settings are different, 0xD2 will also be different.

    For register of 0xD2. According your description.

    If they want to store value(0x17) on 0xD2 to NVM. 

    Whether 0xD2 have pinstrap to select hardware configure or software configure like 0x21?

    Many thanks

    Denny

  •  

    Table 26 (page 36 of the datasheet) describes the reset value for each of the bits in Command MFR_SPECIFIC_D2.  All of the bits except bit 1 will rest to their pin-programmed value and Bit 4 will reset to b'1.

    If they want 0x17 (0001 0111) for D2, they will need to pin strap 2ms soft-start, latch-off fault response, and forced continuous conduction mode through the Pin Strap options.