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.

TPS65987D: Flash programming not working

Part Number: TPS65987D

Hi,

I have programmed the flash and the TPS chip does not successfully boot into application mode.  It is not obvious what is going on and the existing tools / docs are unclear especially when it comes to steps for commissioning a new board/chip. 

Do I have to generate a binary or can I flash from current project?

If I generate a bin file do I need both a full flash and the low region?  Or does the full cover both? How are the region offsets determined?

Where do I obtain the latest patch code?

My flash was empty I was attempting to use the GUI and an Aardvark interface but that has not worked.  I've also attempted to use the external Aardvark flash tool.  Lastly, the HI Firmware update command seems to also be useful but I can't even run it as it usually says Boot Failure and region start addresses of 0x3 if it works at all.

I have ADCIN1 at 1.1V out of 3.3V.  The MISO is pulled low.  This config has worked on my slightly modified EVM but now I have a new custom board and new empty flash chip. 

Thanks,

Chris

  • Hi Chris, 

    Do I have to generate a binary or can I flash from current project?

    • You can do either approach. When you save the binary though, make sure to click Full flash image as this is what is needed for an external flash

    If I generate a bin file do I need both a full flash and the low region?  Or does the full cover both? How are the region offsets determined?

    • When saving the binary, you only need to save the full flash image. The region offsets are determined by the GUI

    Where do I obtain the latest patch code?

    • The latest patch code is tied to the GUI. So as long as you have the latest application configuration tool, you will have the latest patch 

    My flash was empty I was attempting to use the GUI and an Aardvark interface but that has not worked.  I've also attempted to use the external Aardvark flash tool.  Lastly, the HI Firmware update command seems to also be useful but I can't even run it as it usually says Boot Failure and region start addresses of 0x3 if it works at all

    • Is the board powered whenever you connect the Aardvark? 

    I have ADCIN1 at 1.1V out of 3.3V.  The MISO is pulled low.  This config has worked on my slightly modified EVM but now I have a new custom board and new empty flash chip

    • So you are able to flash the patch bundle onto the EVM and unable to flash your new custom board? What is the difference in your setup between these two setups? i.e. are the two boards powered, is the SPI connections the same? Also, MISO should not be pulled low. It should be pulled high. This is how it is setup on the EVM

  • My board is powered when I connect the Aardvark.  I've tried powering through either VIN_3V3 or with VBUS.  Neither works and allows a successful boot-up.

    I modified the MISO resistors so their is a pull-down because in dead battery mode I need it to act as a sink and supply power to get the system up before any subsequent config can happen over I2C.  This all worked on the EVM. 

    By flash the patch bundle you are referring to the 'HI Firmware Update' command?  I'm not sure if that worked on the old one but I'm a little unclear which all steps are needed on a new chip.  It sounds like you are saying I only need to program the flash with the full image using 'Flash from binary file'. 

    On the EVM I use the flash from current project and it goes to the SPI flash and correctly boots with my modified resistors.  On my new board I have a different Flash chip since the one you guys had used is not recommended for new designs.  I'm using IS25LP080 from ISSI. 

    I'm working on getting a different flash chip installed but with the package size we choose its a challenge on this board.  In the mean time I'm looking for other things to try to narrow down the root cause.  Seems I could try the HI Firmware Update command in GUI.  This seems to use the stuff detailed in SLVAE21A.  Should "Read Boot Status" show something other than unknown?  It seems this only does the low region and not the whole flash?  Why?  When I run the "Overwrite Backup Region (Unknown)" it seems to do nothing.  

    Another good option may be to forego the flash entirely and just load code to TPS chip from my onboard micro over I2C.  Is there a doc that details this process? Or a GUI command to do so?  Seems writing to a few hundred config registers isn't that hard considering I'm already doing some of that and it works.  I take it between the patches and other stuff there is more to do, but still only a few kB of data.

  • 2 weeks for a reply is pitiful.  I'll make sure to choose another vendor next time I need to start a design. 

  • Hi Chris,

    Apologize for the late reply. Have been out for thanksgiving break

    I modified the MISO resistors so their is a pull-down because in dead battery mode I need it to act as a sink and supply power to get the system up before any subsequent config can happen over I2C.

    • I believe that this is the problem why it is never loading the flash. pulling the MISO line low disables the flash config ability. Recommend pulling this pin HI so that the PD controller always loads from the external flash
    • The PD controller will always start as a sink in a dead battery condition so you do not need to have any external pin strapping to control this 

    By flash the patch bundle you are referring to the 'HI Firmware Update' command?  I'm not sure if that worked on the old one but I'm a little unclear which all steps are needed on a new chip.  It sounds like you are saying I only need to program the flash with the full image using 'Flash from binary file'. 

    • That is correct. If you have the Aardvark connected to your system, you should be able to execute the Flash from binary file command in the GUI. However, if that is having issues, you can also use a separate programmer tool alongside the Aardvark such as the Flash center tool (https://www.totalphase.com/products/flash-center/

    On my new board I have a different Flash chip since the one you guys had used is not recommended for new designs.  I'm using IS25LP080 from ISSI.

    • I am not aware of this flash device. Are there any major differences between this flash and the MX25L8006 used on the EVM? 

    I'm working on getting a different flash chip installed but with the package size we choose its a challenge on this board.  In the mean time I'm looking for other things to try to narrow down the root cause.  Seems I could try the HI Firmware Update command in GUI.  This seems to use the stuff detailed in SLVAE21A.

    • If you are loading from an external flash, you do not seed to issue any of these commands or follow the sequence outlined in the SLVAE21A app note. The PD controller will handle booting from the flash on its own. The purpose of the SLVAE21A app note is to update the contents of the flash AFTER a valid flash image has already been programmed onto the flash. This is for customers that want to update their system firmware even after there products have already shipped to the field.