max3421e circuits
Thanks, just to answer some of your ideas, when a device is attached it is correctly identified as low or high speed, and when a low speed one is detected the bit LOWSPEED is set in the mode register. The D+/D- wires are the right way round (I get error codes in the HRSLT figure when I decided to see what switching would actually do). The crystal is 12MHz, although I have no way of testing the frequency, but I have swapped it just in case. I would expect the MAX3421 to not even receive STALL if the crystal was incorrect. The MAX3431 is also powered by a 3.3V regulator, and Im sure the voltage isn't dropping as the micro would die also.
While trying a few things, I noticed that USB memory sticks (devices without long leads on them) would return SUCCESS codes, although this was also at a time when I was adding and removing code to set the RCVTOG1/RCVTOG0 data toggles before different transfers, although going back to the original code (as copied from the MAXIM examples), USB memory sticks do produce very few errors, compared to even memory sticks on a short extension lead. I have only been testing with high speed devices though.
At the moment I have a PCB A socket where I plug devices into, which is then connected to the test circuit with 4 short flying wires, although I did twist the data ones. The 33Ω series resistors are soldered to the end of these, which briefly go into a breadboard before the connecting to the MAX3421. From what I have found it would appear that maybe there are some issues here, which maybe causing problems. Could capacitance in the breadboard reduce the length of leads without error somehow, and perhaps unshielded (although twisted cable)? It also maybe a good idea if I looked into the DATA0/1 toggles, although I cant see how that would cause an issue if I followed MAXIM's example. I am aware that the toggles work in different ways for SETUP transfers.
Thanks again, Matt