Other Parts Discussed in Thread: TUSB8040,
Using the user guide for the EEPROM programmer: https://www.ti.com/lit/ug/sllu311/sllu311.pdf?ts=1675341419679&ref_url=https%253A%252F%252Fwww.google.com%252F, one gets the sense that, to set a custom serial number, one needs to:
* Set bit 6 in 05h to 1, to enable a custom serial number.
* Set a size for the serial number in 22h, in my case this was set to 06h, meaning six bytes.
* Enter a number in to the serial number registers, 30h - 4Fh. The definition regarding this point in the user guide is a bit unclear:
"The Serial Number registers (30h-4Fh) will define the number returned in the Serial Number string
descriptor at string index 1 when customSernum is set in register 05h"
This might make one think that merely a number should be stored in these fields. However, if one enters a mere number, such as 0 (00h in the 6, as mentioned in point 2, relevant registers between 30h - 4Fh, more on the specific registers later on) and then power-cycles to escape the programming mode, the TUSB4041 can not be identified. From this point the EEPROM cannot be used anymore. The TUSB4041 can still be used if one turns off SW1_3 and SW1_4, bypassing the corrupted EEPROM or if the EEPROM is replaced.
I have also tried to enter utf-16le and utf-8 values for the serial number such as "340030003000" and "343030" for the string "400". This has resulted in the USB Device Viewer displaying:
iSerialNumber: 0x01
English (United States) ""
Which stays the same for other utf-16le- and utf-8 related combinations as well.
This brings me to one of my main questions regarding this; given that all of the register orders given in the guide are referring to values set with a MSB for a higher register number and LSB for a lower register number, e. g:
"TUSB8044Sample EEPROM file in txt format.
...
01 51 01010001 'VID LSB
02 04 00000100 'VID MSB"
One expects the same order for the serial number registers, namely that the values should be entered in a descending order in respect to the register numbers.
For example, in my test mentioned above, the entry for the value "340030003000" with 6 bytes given as a size in register 22h, equated to the following values for the respective relevant serial number registers:
Reg(Hex) Val(Hex)
30 00
...
4A 00
4B 30
4C 00
4D 30
4E 00
4F 34
Still the USB Device viewer displayed what I mentioned above. Clarification regarding what approach should be taken here would be highly appreciated.
Given that trial and error in this situation is a bit daring, due to EEPROMs breaking when entering faulty values between 30h and 4Fh, a more detailed description on how one should proceed to set a serial number correctly would be great.
Thank you in advance!
Best regards,
AC