USB disconnect - reconnect  not working in v1.2.1

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
LiMa_282146
Level 4
Level 4
First like given

Hi,

   

I have updated the Cypress SDK to version 1.2.1 and can compile my project, download it to an FX3 device and see it working. However if I disconnect the devices USB lead and then reconnect it, the device enumerates in Windows as an 'Unknown Device' and I can no longer communicate with it. This does not happen with the firmware compiled under SDK version 1.1. Any ideas how I can sort this problem out.

   

Thanks,

   

Sodafarl

0 Likes
15 Replies
Anonymous
Not applicable

Hi Sodafarl,

   

Which SDK example are you trying at your end.

   

I tried with the SlaveFifoSync example and I don't see any issue with connection and disconnection.

   

Please share us more information on the problem that you are seeing.

   

Thanks,

   

sai krishna.

0 Likes
LiMa_282146
Level 4
Level 4
First like given

Hi Sai Krishna,

   

This is with my own project, which I worked on using SDK  v 1.1.

   

Sodafarl

0 Likes
LiMa_282146
Level 4
Level 4
First like given

Hi,

   

I've downloaded the Slave Fifo firmware to my hardware and this has the same problem that when I disconnect and reconnect the USB lead, the FX3 comes up as unknown device. This doesn't happen with SDK v1.1. My hardware is self powered. When I download the firmware the first time and disconnect/reconnect the USB lead I expect my device to reconnect and run the previously downloaded firmware.

   

Sodafarl

0 Likes
Anonymous
Not applicable

Hi Sodafari -

I suggest checking the command line used to compile each of your source files.

Yesterday I upgraded my Windows install to 1.2.1 and compiled a UVC project that works fine in Linux.  The Windows-compiled firmware would come up, but would crash when I tried to start video streaming. I finally traced the problem to the way just one of my source modules was compiled - with "-mcpu=cortex-m3 -mthumb" instead of " -mcpu=arm926ej-s -mthumb-interwork".

The module in question was within an Eclipse linked folder; I deleted the link and recreated it and that seemed to fix the problem.

Hope this helps,
Steve

0 Likes
LiMa_282146
Level 4
Level 4
First like given

Hi Steve,

   

Thanks for your reply. I looked through my code compilation to see if it is compiling any modules using the "-mcpu=cortex-m3 -mthumb" but I could not find this. I downloaded V1.2.1 instead of using update manager so I don't know if this is the reason I don't see the error you have.

   

I downloaded my compiled firmware to the Cypress FX3 development board which I set up to be self powered. When I disconnected and reconnected  the USB lead  the device enumerated ok. The only  dfference I could think of between the FX3 development board and my own hardware is I removed the 32KHz standby clock. I was able to reconnect this clock in my hardware and now the disconnect - reconnect is working ok. I have set up the FX3 not to use the standly clock with the following code but I still need the clock connected for the disconnect-reconnect to work

   

   

CyU3PSysClockConfig_t

       

   

clkCfg = {CyTrue,2, 2, 2,CyFalse,CY_U3P_SYS_CLK};

   

I have new hardware coming in that will not have the option of connecting up the 32KHz clock so my question to Cypress is what do I do now as it looks like the external 32KHz clock needs connected all the time. This is not an issue with SDK v1.1v.

   

Sodafarl

0 Likes
Anonymous
Not applicable

Hi,

   

I have checked with the internal teams and they confirmed that connection and disconnection mechanism does not depend on 32KHz clock.

   

What is the crystal that you are using? Is it 26MHz.?

   

Thanks,

   

sai krishna.

0 Likes
Anonymous
Not applicable

Hi,

   

I have checked with the internal teams and they confirmed that connection and disconnection mechanism does not depend on 32KHz clock.

   

What is the crystal that you are using? Is it 26MHz.?

   

Thanks,

   

sai krishna.

0 Likes
LiMa_282146
Level 4
Level 4
First like given

 Hi,

   

It's 19.2MHz

0 Likes
Anonymous
Not applicable

Has this been resolved?  We see the same exact issue with 1.2.1.

   

.

   

We were able to confirm it by building the stock bulk loop auto sample.

   

.

   

It also seems to be related to issues enumerating a USB 3.0 device on a USB 2.0 host.  We encounter the same issues on multiple PCs as well as an embedded system and a MacBook Pro/Retina (USB 3.0) through Win7/64 through Parallels.

   

.

   

When we revert to our old 1.1 firmware, things work just fine.

0 Likes
Anonymous
Not applicable

An interesting update.  The device with the bulkloopauto example survives multiple USB 2.0 port disconnect/reconnect cycles.  However, it only survives ONE USB 3.0 port disconnect/reconnect cycle.

   

.

   

On the USB 3.0 port, after one disconnect/reconnect, it will not enumerate any more.

0 Likes
Anonymous
Not applicable

I wonder if something broke with 1.2.1 when using an external crystal.

   

.

   

The bulk auto example works fine on the Cypress EVK with 1.2.1.  However, it does not work with our hardware on 1.2.1.  Our hardware worked perfectly on SDK 1.1.  So it doesn't seem to be a hardware issue.

   

.

   

The primary difference between our hardware and the EVK is that the EVK uses the -ES part as well as a 32kHz oscillator.  We do not have the 32kHz oscillator on our device -- only a fixed 19.2 MHz.  This difference in oscillators has bitten Cypress once before -- it was an undocumented bug in the -ES parts that prevented our hardware from working initially.  Cypress suggested we switch to the production parts since they were not reliant on the 32kHz.

0 Likes
Anonymous
Not applicable

Hi Jake,

   

I would like to check with you whether you created a tech support case and if somebody is looking into this issue.

   

Otherwise, I would request one of our engineer to look into this.

   

Thanks,

   

sai krishna.

0 Likes
Anonymous
Not applicable

We did submit a MyCase support ticket last week.  Since then, we've "fast-forwarded" the changes we've made to our SDK 1.2.1 branch onto our SDK 1.1 branch and this seems to have fixed the issue.

   

.

   

So for now, we're reverting to the FX3 SDK 1.1 until (hopefully) a new copy of the FX3 SDK fixes these problems.

0 Likes
Anonymous
Not applicable

Hi Sodafarl/Jake,

   

I have checked with the software team regarding the issue that you are seeing.

   

They told that they got USB enumeration failure reports from other customers as well. They identified the problem and they will be adding the fix to this issue in next release, which is going to happen in 2 to 3 weeks from now.

   

We are really sorry for the inconvenience caused to you.

   

Thanks,

   

sai krishna.

0 Likes
Anonymous
Not applicable

 Same problem here, the source code works fine with SDK V1.0, V1.0.1 and V1.1, With V1.2.1, it gets chances to fail when connecting (enumerating)...the device shows as an "unknown device" OR some times there's nothing on the device manager. however, the issue (in my place) only show up on USB2.0 connection (USB2.0 port or USB2.0 cable on USB3.0 port).

   

   BTW, no 32KHz clock in hardware design.

0 Likes