MIMXRT1064-EVK USB Enumeration Error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MIMXRT1064-EVK USB Enumeration Error

1,061 Views
peter_r14
Contributor I

Hello, 

I am having an issue using the USB middleware stack on an MIMXRT1064-EVK board. We are attempting to create a vcom USB device on the board to send/receive data from a host computer. However, when connecting a USB cable between the board and the computer, we get a "USB Device not recognized" message. We've located the cause of this to be the unsuccessful bus reset at the beginning of the USB enumeration process. Our driver receives a single interrupt to reset the bus, then nothing happens and the enumeration process times out. No descriptors are requested/sent.

We have modeled our code to be identical to the cdc_vcom SDK example, which enumerates and connects successfully with the host computer when run in the MCUXpresso IDE. What could be causing this error in our code and not the SDK example? We have copied everything from the source files to the clock and pin configurations, yet still encounter the connection error. Could there be any subtle configuration parameters or macros that we are forgetting to include that are needed for successful operation?

Any advice on this issue is appreciated.

0 Kudos
3 Replies

1,040 Views
FelipeGarcia
NXP Employee
NXP Employee

Hi Peter,

If the code is the same as in USB example then it should enumerate correctly. If you suspect something could have been configured differently from the SDK demo I recommend you to check register content at different times, check the debugging flow to see if it is the same and also be careful you are configuring clocks properly.

Best regards,

Felipe

0 Kudos

1,025 Views
peter_r14
Contributor I

I found a few differences after checking the register content at different times for both the USB example and my code. I summarized these in the table below. I included the differing register and the value it contained for both our code and the USB example code at two different times. The first time is after the device is initialized but before any enumeration occurs with the host. The second time is after enumeration, which is successful for the example but fails for our code.  

RegisterOur Code BeforeExample BeforeOur Code AfterExample After
RESERVED_5 (0x134)0x002000000x003000000x000000000x00300000
USBSTS0x800100000xC50100000xC40100000xC5010000
FRINDEX0xEB2000000xAD1800000xC21E00000xAB180000
PORTSC1  0x050200180x850A0018

 

Does anything stand out from the differences in these registers? Also, I can't seem to find any documentation on what the bits in these registers represent, so could someone let me know where I could find it?

0 Kudos

1,001 Views
FelipeGarcia
NXP Employee
NXP Employee

Hi Peter,

You can find what these registers represent in the reference manual in chapter 42.7 USB Core Memory Map/Register Definition.

Best regards,

Felipe

0 Kudos