Hello. I have board with MCF52210. I've tried to make USB device and succeeded in it. USB device works fine. Now I try to make USB host and have problem with it.
If I detect attach of device I reset it and try to get device descriptor. There are 3 transactions:
Transaction 1: SETUP from host (just token)
Transaction 2: DATA0 from host (8-byte length request GET_DESCRIPTOR)
Transaction 3: ACK from device
I haven't transaction 3. I've used oscilloscope to decode electrical signals. I've got transactions 1 and 2 but not 3. Result for host is that I have interrupt with INT_STAT.DNE and TOK_PID = 0. It means bus timeout but INT_STAT.ERROR is clear and ERR_STAT = 0. It looks like there is no error but there is no ACK from device too.
USB device is device I've developed too. Actually it is the same device but with other software. I've tried USB flash drive but behavior is the same. My USB device decodes received GET_DESCRIPTOR request. It is 8-bytes length and has right fields. I don't know how it able not to reply with ACK. If I connect my USB device to PC it work fine.
I've tried to adopt software example. It's name is skeleton and it is provided by Rich T. I've copied functions to get device descriptor and changed names of some constants to suit in my environment. The behavior is the same: DNE + TOK_PID=0 + ERROR=0.
Let me make short conclusions:
1. My USB host sends GET_DESCRIPTOR request and doesn't receives ACK. It's proved by oscilloscope. It hasn't ACK from neither my USB device nor standard USB device (USB flash drive).
2. My USB device receives GET_DESCRIPTOR but replied ACK isn't received by host. Standard USB host (PC) works with my USB device.
3. Bus timeout isn't reported as error.