1
\$\begingroup\$

I am designing an Atmega32U4 based board. The chip has a USB peripheral and I have made provision for that. But, the board is not detected in the device manager. I am attaching an image of the USB track and connector. It is a micro USB connector. Now, I have designed the tracks using the differential impedance considerations in Altium. But, it is clearly noted that one track is slightly more thicker than the other. USB tracks

The circuit of the USB section is as shown below -

USB section

The USB connections i.e - the voltage and the USBVCC at the MCU end are shown as well. MCU side

But, I am unable to detect the chip and work on it. The chip,per-se, is fine and it works fine. Just that the USB section is not working. I know that the USB needs controlled impedance. But, I have seen many boards which do not even have a ground reference on the next layer for the USB tracks. Yet, they function. Any inputs please.

\$\endgroup\$
  • \$\begingroup\$ Where are the 1,5k resistors for device detection? \$\endgroup\$ – Simon Richter Nov 7 '14 at 10:37
  • \$\begingroup\$ what do u mean by 1.5K resistors. \$\endgroup\$ – Board-Man Nov 7 '14 at 10:56
  • \$\begingroup\$ @SimonRichter surely that's only for OTG (On the Go) devices? \$\endgroup\$ – KyranF Nov 7 '14 at 10:59
  • 1
    \$\begingroup\$ Many micros have the detection resistors internal and under firmware control. This one does too. From the datasheet, "The LSM bit in UDCON register allows to select an internal pull up on D- (Low Speed mode) or D+ (Full Speed mode) data lines." \$\endgroup\$ – Adam Lawrence Nov 7 '14 at 13:08
  • 1
    \$\begingroup\$ What configuration have you done for the USB peripheral in your firmware ? \$\endgroup\$ – brhans Nov 7 '14 at 13:40
2
\$\begingroup\$

There are three places where USB issues can go very wrong

1) the hardware connection

2) the program you're running and

3) the USB descriptor and the usb stack.

When you don't hear the "gadunk" associated w/ plugging in a USB device, its demoralizing, and your work is just beginning.

You don't mention your background in USB design. My recommendation to get your project going is to start with a USB development package on the platform you're dealing with, make one of the examples work, and then move on from there, one step at a time, until your project is running. The next project will be easier, and the next easier still.

If there's a more efficient way to wade into USB devices on microcontrollers, I haven't found it.

\$\endgroup\$
  • 2
    \$\begingroup\$ "gadunk" is a great description of the sound \$\endgroup\$ – Gorloth Nov 7 '14 at 23:03
0
\$\begingroup\$

I cannot provide a conclusive answer because you have provided no data other than 'it doesn't work'. However, given your layout and given that this part can only go as fast as full speed (12 Mbps) I don't think impedance is the culprit.

There are two ways that I can suggest to debug this sort of issue:

  • Set some external signals (unused I/O lines, etc) in your Atmel code to indicate the state of the USB peripheral and monitor them
  • Use a USB protocol analyzer to sniff the device enumeration traffic (if it exists) to see what's happening between the host and device. (Since you mention Device Manager, I assume your host is a Windows box - you won't see any enumeration traffic without a protocol analyzer.)

I also recommend visiting the USB consortium website, downloading the USB 2.0 specifications and reading up on at least some of the topics if you're not already familiar.

\$\endgroup\$
  • \$\begingroup\$ Thank u all. I will implement the points you have suggested and update you. Again, my sincere thanks. \$\endgroup\$ – Board-Man Nov 7 '14 at 14:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.