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.

TUSB9261: TUSB9261

Part Number: TUSB9261

Good morning,

I'm working on a new design.  My block diagram is very similar to the block diagram in the data sheet -below. However, I'm using two TUSB9261 devices.  The host is a Windows 10 PC.

The HDD is a 1TB Samsung SSD 850 EVO.

The end-to-end schematic is below detailing the USB->TUSB8041->TUSB9261->SDD Connector.  There is no polarity swap on differential lines.

The 8041 and both 9261's enumerate properly. 

I purchased the TUSB9261DEMO Eval Kit.  At the very end of this note is how this kit is enumerating.  I can plug the SDD into this slot and it works.

I would like to program my two 9261's to the same as the demo 9261 device.

ISSUE:

When I attempt to program my device(s) it fails.  See below.  I've tried it several times and it always fails.

Please help with any suggestions.

Thank you,

-Tony

BLOCK DIAGRAM:

SCHEMATIC:

USB ENUMERATION:

FLASH PROGRAM HEX FILE:

PROGRAMMER FAIL:

HOW THE DEMO-EVAL KIT ENUMERATES:

  • Hi,

    If your design does not have a polarity swap on the SATA side then the same FW will not work for you. There is SATA polarity swap on the Demo board. You should try the TUSB926x_FW_v1.xx_SATA_NO_POLARITY_SWAP FW. That should be available in your FW package.  

  • Hi Malik,

    Thank you for the reply.  I am indeed using the non-inverting hex file.  Refer to the image under "FLASH PROGRAM HEX FILE".  I've highlighted the file I'm using in yellow.  The issue is I cannot successfully program either of the TUSB9261 devices.  It fails every time; see image above under "PROGRAMER FAIL".  I've built three boards and have the same result for all three.  At this point, I'm not suspecting faulty parts.

    Please have a look at the schematic and see if you see any glaring design issues.  I can provide layout info as well if that will help.  The boards were hand routed with careful attention to diff routing signals.  I suspect the part is programed using only the full speed DM/DP signal lines anyway.

    Much appreciated,

    -Tony  

  • Hi Malik,

    Q: Do you know if the SSD must be inserted prior to programming the 9261?  My assumption has been no and I've left both ports unpopulated when trying to program the devices.

  • Hi,

    No TUSB9261 does not need ton connected to the SSD to be programmed. Can you share the PDF of the shcematic for review? Please try holding on device in reset while programming the other. 

  • Hi Malik,

    After doing a little research I've reached the conclusion that a SPI based EEPROM device is required for each 9261.  PLEASE CONFIRM.  The 9261 has no functionality without it.  That explains why the programmer failed on my design.  I was under the false impression that the device had a small amount of on-board flash and if more functionality was needed, a designer could OPTIONALLY add a EEPROM as needed. 

    To confirm, I erased the EEPROM on the DEMO board.  Then, I re-programmed using the TUSB926x_FW_v1.06_SATA_POLARITY_SWAP_BOTH.hex file.  The programming was successful in that the programmer indicated success.  However, now the DEMO board has lost the ability to recognize the SSD when plugged in.  It worked prior.

    It appears at this point the hex file included in the DEMO kit is different than the hex file supplied as part of the TUSB926x firmware download package.  Is there a way for you to provide me with the actual hex file shipped with the DEMO kit?

    I included a schematic snippet in my original post.  Do you need a PDF attachment?

    Regards,

    -Tony 

  • Hi Tony,

    This is correct you need a SPI EEPROM of hold FW so TUSB9261 can load FW at startup. The hex file is actually TUSB926x_FW_v1.06 file that is included in the package. This includes the polarity swap for the demo board. TUSB926x_FW_v1.06_SATA_POLARITY_SWAP_BOTH is the incorrect file. 

    PDF could help so I could zoom in further. 

  • Hi Malik,

    I used the hex file you suggested and re-programed. It now behaves as before -the SSD is enumerated properly and is functional.

    I will add the EEPROM in another board spin.  The board as designed is useless.  It would have been helpful if the data sheet was more explicit in this regard.  

    I tried the POLARITY_SWAP_RX hex file and it did not work.  The schematic shows the transmit diff pair SATA_TXM and SATA_TXP as the only two lines swapped.  I'm assuming then the demo hex firmware should be denoted POLARITY_SWAP_TX. 

    Not sure why the DEMO board has serial caps on the SATA_RX diff pair?  I'll have to think on that.

    If you click on the schematic image and then click on the zoom button upper left it will expand.

    Thank you,

    -Tony

  • Good Morning Malik,

    I've added a EEPROM to the design; Microchip AT25512-TH-B, 512Kbit (64K X 8), 20Mhz

    I will not require polarity swapping on either the TX or RX diff signals.  Before I commit to fab, I just want to confirm the below listed hex files are identical other than the SATA polarity swap.  Please confirm. 

  • Hi Tony,

    The only difference between the hex files are the different polarity swap configurations. See below for some requirements in regard to the SPI flash and some recommendations.

    TUSB9261 does support SPI Mode 0, not SPI Mode 1.
    SPI Flash requirements:
    ~ The bootloader uses a fixed frequency of 18.75 MHz.
    ~ The flash must use a word size of 8 bits and an address length of 24 bits.
    ~ The program instruction must allow 256 bytes to be written in one operation.
    ~ The entire chip is erased by the bootloader prior to programming.
    ~ A minimum flash size of 512 kbits (64 k x 8) is recommended.

    We identified these flashes that meet these requirements and are still available.
    ~www.winbond.com/.../w25x20cl_revf 20150806.pdf
    ~www.onsemi.com/.../LE25U20AMB-D.PDF
    ~www.adestotech.com/.../DS-AT25XE021A-061.pdf
    ~Micron M25P10A

    Initial boot functionality is mentioned in section 7.3.1.1 General Functionality of the datasheet.