After downloading self-boot code to my target EEPROM, my USBi isn't recognized anymore by my computer. What's wrong and how do I fix it?
The USBi can be used to program SigmaDSPs, some audio codecs, and EEPROMs that are used in self-boot systems. When an EEPROM is connected to the USBi in a SigmaStudio project, the target address is defaulted to 0xA0.
Currently, all SigmaDSPs self-boot from address 0xA0 only. However, in case future SigmaDSPs would have the capability to boot from different EEPROM addresses, a drop-down menu was added in SigmaStudio that permits other addresses to be selected.
However, when this feature was initially implemented, a potential problem was overlooked. The USBi has its own self-boot EEPROM at address 0xA2, which it uses to indicate its Vendor ID and Product ID to the PC, as well as boot its internal program. If you attempt to write to address 0xA2, you will overwrite the USBi's onboard EEPROM and the USBi will cease to function!!!
The option to select address 0xA2 will be removed in the next release of SigmaStudio.
There is no simple way to re-program the USBi's EEPROM after it has been corrupted. Please return it to ADI (you should be able to get an RMA through your salesperson or distributor).
You should also keep this in mind when you have other I2C masters on the control bus. You need to be careful not to overwrite the USBi's EEPROM at address 0xA2 from a device in your system such as the microcontroller. If your design has another I2C EEPROM set to address 0xA2, you should be very careful not to write to that device while your USBi is plugged in for programming, tuning, or debugging. Of course, it will be best to avoid using EEPROMs with address 0xA2 for any of your SigmaDSP-based designs.
As of now, the USBi design has not yet been updated to include an option for write protecting the EEPROM after initial programming at the factory. There is a simple hardware fix that will solve the issue, if you would like to make sure that the USBi's firmware is not corrupted.
On the EEPROM IC (U1), enable write protect by cutting Pin 7 from the PCB and soldering it to Pin 8. This connects the WP pin to VCC instead of GND, which enables write protect and will prevent the EEPROM from being overwritten.