Custom UC3A3256 Board

Go To Last Post
9 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I've got a custom UC3A3256 PCB that I just put together, and I'm having some trouble getting it to enumerate when I plug it into a computer. I'm getting the following (Ubuntu 10.04):

[  126.350457] usb 2-5.4.1: new full speed USB device using ehci_hcd and address 5
[  126.430367] usb 2-5.4.1: device descriptor read/64, error -32
[  126.620586] usb 2-5.4.1: device descriptor read/64, error -32
[  126.811303] usb 2-5.4.1: new full speed USB device using ehci_hcd and address 6
[  126.890716] usb 2-5.4.1: device descriptor read/64, error -32
[  127.081807] usb 2-5.4.1: device descriptor read/64, error -32
[  127.270403] usb 2-5.4.1: new full speed USB device using ehci_hcd and address 7
[  127.691886] usb 2-5.4.1: device not accepting address 7, error -32
[  127.770399] usb 2-5.4.1: new full speed USB device using ehci_hcd and address 8
[  128.191273] usb 2-5.4.1: device not accepting address 8, error -32
[  128.191981] hub 2-5.4:1.0: unable to enumerate USB device on port 1

I'm concerned that I have a problem with my USB traces, due to the way this board is setup, I wasn't able to get the impedance to match up to the USB spec, but I figured for a test board that might be ok. Has anyone else seen similar problems from poorly designed USB boards?

I'm hoping to be able to rescue this, if not I'm working on a redesign already using some different parts, but I'd rather like to be able to try this design out if possible.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I did a misstake once with the USB traces. I auto-routed them and as I do sometimes with all the non critical traces after I have hand placed the power and critical ones. They got way off away from each other and not close to the same length.

This board was placed onto a motherboard. I did a length matching on this motherboard, and it all worked without any problems at all.

I would not be scared by the impedance match if the traces are not too long, and the lengths are equal.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I got something weird like that when I had D+ and D- swapped. I was using a custom cable though, so it was easy to fix.

Jeff Nichols

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

iwoloschin wrote:

I'm concerned that I have a problem with my USB traces, due to the way this board is setup, I wasn't able to get the impedance to match up to the USB spec, but I figured for a test board that might be ok.
What makes you think that the impedance match is the issue? Did you actually measure it with a network analyzer or something? So long as you have the correct terminating resistors (39 ohms typical, IIRC), it should be okay. Make sure the traces are routed very close together for their entire length, that they're not too wide (like 12 mil is plenty), not longer than a couple inches, and no significant stubs.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I didn't make this clear above unless you're familiar with the MCU, but the UC3A3 is a USB High Speed device. I'd be less concerned about impedance matching on a Full Speed device, lower frequencies and all, but I'm concerned with USB High Speed that even a smaller mismatch will still potentially throw everything off.

For those curious, here's the design guide for High Speed from Atmel:

http://atmel.com/dyn/resources/p...

Unfortunately, I do not have a network analyzer or oscilloscope, so I can't confirm my suspicions, but I do have a Beagle 480 (USB 2.0 hardware sniffer) which is showing some data, but it's having trouble showing anything other than raw data, which indicates something is wrong (it usually deciphers whatever protocol you're using over USB, it's a pretty awesome tool!). It's also showing an error, "Invalid PID Sequence," but I haven't had a chance to go and try to manually decode everything yet so I'm not sure where or why it's throwing that error.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

The board I was reffering to was also a high speed device.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Sounds like it could be a hardware error, but without even an oscilloscope it's hard to tell. But so long as you followed Atmel's design procedures, it should be find. Unless their is outside interference. Can you post you schematic and layout?

Also it might be worth a try to change the USB shield connection (try connecting/disconnecting it with capacitors, ferrite beads, resistors, etc). Sometimes that can solve ground loop issues.

Can you try configuring it as a full speed device instead and see if it at least works then?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I did try unloading the high speed drivers from my linux computer, but it's Ubuntu, and they "intelligently" built-in the high speed driver. I haven't had time to make my own kernel, but I might try loading up Knoppix since that'll be modular.

One problem I think I have is I wasn't able to completely follow the spec, so the impedance on my high speed lines isn't right on this board, mostly because I was trying to avoid a 4 layer PCB. I was hoping that would just mean lower throughput, but from the errors I'm getting I think the impedance might be so far off that it's just not working at all. I don't remember numbers off the top of my head, but if anyone's interested I can do the math again. So much for trying to cut corners?

This was just a test run anyways, the final design is using a BGA part which requires a 4 layer board anyways, so I'm thinking of just starting to design that right now. I've got a JTAG port on my current design, so I might be able to get in through JTAG and see if the MCU is working, which would be more evidence pointing to the USB traces being no good.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

pixel2001n wrote:
I got something weird like that when I had D+ and D- swapped. I was using a custom cable though, so it was easy to fix.

I also experienced the same kind of error on connection of an inverted usb bus. Try swapping D+ and D-