This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Cypress ezusb siicon rev D issue : anyone ?

Hello,
Hope it is not off topic, I guess some guys are working with cypress an2131 chips on this forum ...

My firmware works fine with Rev E silicon of AN2131SC.
We have now ordered rev D (bcddevice=03) of ezusb chip because it was the only version we found in stock. Our firmware does not work anymore regarding USB (all non USB firmware is still ok).
According to the product errata rev D, we performed the following changes in our firmware :

void timer_0_isr (void) interrupt TMR0_VECT using 2
{
TR0 = 0; // stop timer 0

// V1.5 workaround for Rev D silicon chip : interupt timer bit must be cleared
TF0 = 0;
...}

also

void ISR_Sof(void) interrupt 0
{
EZUSB_IRQ_CLEAR();
USBIRQ = bmSOF; // Clear SOF IRQ
// V1.5 workaround for Rev D silicon chip : clear this bit two times
USBIRQ = bmSOF; // Clear SOF IRQ
}

These 2 above changes seem to not be enough for this chip revision D.
The symptom is as follow :

- When we only connect USB cable only (AN2131 is bus powered), the firmware fails, firmware seems to be not properly loaded from external eeprom (first eeprom byte is B2)
- When we first connect extenal DC power supply then we connect USB cable the firmware works fine.

According to the eratta list for Rev D, we can see chapter 6 :Firmware loaded from external serial EEPROM can be corrupted

Implication: This problem occurs when using B2 load with a bus-powered peripheral. Due to the
relatively low speed of the I2C interface, long firmware programs can still be loading
when USB enumeration starts. The firmware is then corrupted.
Workarounds:
1) Make the peripheral appear to be disconnected from the USB bus by default by
inverting the DISCON# pin outside of the chip and then having the 8051 reconnect
when it comes out of reset.

Can anybody let me know what do we have to change in our firmware to make this workaround working ?
We have tried to add USBCS |= bmDISCON; at the begining of the code with no success.
please detail firmware modification we have to perform to make this workaround working fine.

Thnaks
H

0