Device Enumerates as High-speed but Renumerates as Full-speed in  FX2/FX2LP

Question: My device enumerates as a high-speed device but when it renumerates it comes up as a full-speed device. How can I fix this?

 

Answer:

The polarity of your WAKEUP# pin must match that of the WUPOL bit of the WAKEUPCS register. The WUPOL bit default value is 0.

If the WAKEUP# pin in your design is pulled low and the and the WUPOL is default, the pin is active low. Therefore, you are holding the pin active. You can either change your board to pull the WAKEUP# pin high or change the firmware to make the pin active high.  If the WAKEUP# pin on your design is pulled high, you should not need to change the WUPOL bit from its default.

To change the firmware, add the line "WAKEUPCS |= bmWUPOL;" statement in the TD_Init() routine in your periph.c file. This will allow suspend and it will allow high-speed renumeration.