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.

TPS546C23: TPS546C23RVFR

Part Number: TPS546C23

Tool/software:

Hi,

I am having some questions on how to program this device.

Currently I am powering up the device by giving avin 5v. That's it. Then I give 3.3 pullups to data and clock pins. I see device responds to slave address 21h.

Currently I am trying to read the nvm registers, but I am not able to do so.

I am able to read only 0x10, 0x47, 0x50, 0x35, 0x36, 0x39, 0x46, 0x4F, 0XD0, 0XE5, 0XF0.

I am not able to read 0x02, 0x41, 0x45, 0x63, 0xD7, 0x21, 0x29, 0X60, 0X61, 0X64, 0X65, 0XD4. It does not give me acknowledgement when I send these register command.

Is this the expected behaviour? Or am I missing some steps?

Please lemme know if this is expected behaviour or not. Thanks!

  • Hi,

    What software are you using to read registers?

    You can try using TI Fusion GUI by downloading from here: https://www.ti.com/tool/FUSION_DIGITAL_POWER_DESIGNER 

    Once downloaded and device is scanned, you can attach screenshot of the commands, that way we can see if commands NACKED. Should look like this: 

    Here is a guide on using GUI for TPS546C23: https://www.ti.com/lit/ug/sluubh5a/sluubh5a.pdf#page=33 

  • I am using BPM programmer. 

    For these commands '0x02, 0x41, 0x45, 0x63, 0xD7, 0x21, 0x29, 0X60, 0X61, 0X64, 0X65, 0XD4', I send the slave address and send the write bit. I get Acknowledgement. Then I send the register address, for example (0x02), and here, there is no ack from device.

    And for these registers '0x10, 0x47, 0x50, 0x35, 0x36, 0x39, 0x46, 0x4F, 0XD0, 0XE5, 0XF0', I do not see any problem, I am able to read the register data and they match with the default values mentioned in the data sheet

  • Secondary devices have less accessible commands that are typically accessible in primary device. Most VOUT, enable and TON/TOFF related commands will nack on secondary. 

    DS marks this with "slave device, this command cannot be accessed". 

    From a quick glance in the datasheet, the commands will nack in secondary are: 02, 20, 21, 24, 27, 29, 2B, 41, 45, 60, 61, 62, 63, 64, 65, D4, D5, D6, D7.

    Please mark as resolved if this answered your question.  

  • Can you please confirm this:

    1. When we use BPM programmers to access this device, we cannot read/write the following registers (02, 20, 21, 24, 27, 29, 2B, 41, 45, 60, 61, 62, 63, 64, 65, D4, D5, D6, D7.) ?

    2. Can we read/write these registers(02, 20, 21, 24, 27, 29, 2B, 41, 45, 60, 61, 62, 63, 64, 65, D4, D5, D6, D7) with the EVM board?

    3. Is there any other way to access (02, 20, 21, 24, 27, 29, 2B, 41, 45, 60, 61, 62, 63, 64, 65, D4, D5, D6, D7) using BPM programmer?

  • Those commands are not accessible regardless of the method or board you use if it's a secondary device. They will be accessible if device is primary. Reason why is primary dictates the values for most of those commands and essentially the values are copied to secondary so that is why you can't read/write to them in secondary.

  • Can you provide us with a sample data file to program this device. I assume they will be in the csv format. I want the data for the word commands to be in <MSB><LSB>

  • You can download Fusion GUI as previously mentioned here: https://www.ti.com/tool/FUSION_DIGITAL_POWER_DESIGNER 

    I'm attaching a .csv file below:

    TPSM846C23-TPS546C23 256.0 Address 27 PMBus Programmer Script.csv

    Not sure if this has the default values but you can double check them in the datasheet. The file is for single phase only. You will have to modify to comment or delete the commands mentioned earlier if you're trying to program secondary phase else device will nack them.

    You can also get this thru offline GUI by going:

    Launching Fusion GUI > offline mode > Create new Offline system from start > Select device from GUI support list > TPS40xxx/... > TPS546C23 >ok > finish. And then you can export it or modify it before exporting as well.

    or you can also export it from a live device if connected.

    There's different ways you can export files there, you can give it a try, 

  • Can you explain more on register 0x1B?

    What kinda transaction is BlockProcessCall? a write or read operation? Can you give some explanation on how these PMBUS transactions should go

  • This command control which faults/warnings will trigger the SMBALERT# line, often used to mask and unmask specific conditions. This used Process call system which sort of writes/reads from: 

    • STATUS_WORD

    • STATUS_VOUT

    • STATUS_IOUT

    • STATUS_INPUT

    • STATUS_TEMPERATURE

    • STATUS_CML

    • STATUS_MFR_SPECIFIC

    Let use this as example:

    This means SMBALERT_MASK(1Bh) doing a block process call to command STATUS_CML (7Eh) with byte size:

    Based on highlighted you can only write to STATUS_CML (7Eh) -> XXXX 00X0 with "X" been writable bits. I believe the "01xx" at beginning in 3rd column is probably referring to size of data which for most if not all status would be one byte -> 01xx. Typocallu you have to write data size before sending data so device knows when it has received all data from write.  

    As for the .csv file in general I believe first column is the action you want to do write/read/comment/blockprocesscall etc, second column is the command been written to, and third should be the hex value. 

    Hope this answers your questions!