Ich versuche, das Circuits@Home USB Host Shield (basierend auf dem MAX3421E-Chip) von Grund auf neu zu bauen; Da ich in der Lage sein muss, den Arduino im OTG-Modus mit Strom zu versorgen, funktioniert ein vorgefertigtes Board für meine Anwendung nicht. Zu Beginn versuche ich einfach, das Mini Host Shield neu zu erstellen, aber ich stecke fest, wenn es darum geht, die USB-Datenübertragung zum Laufen zu bringen. Die Skizze „board_qc“ besteht jeden Test, wenn ich sie auf meinem selbstgebauten Schild (verbunden mit einem Arduino Pro Mini 3,3 V 8 MHz) ausführe, schlägt dann aber mit „USB State Machine Reached Error State“ fehl, wenn ich einen Pluggable BLE-Dongle einstecke. Ich habe einen Host-Schild in voller Größe für meinen Arduino MEGA 2560 gekauft, um Steuerdaten für das Debugging zu sammeln, und sowohl er als auch der Dongle funktionieren perfekt mit der board_qc-Skizze. ICH' Ich habe mir die USB-D+/--Signale von beiden Boards mit einem Oszilloskop angesehen (siehe beigefügten Bildlink) und sie sind bis auf das hintere Ende der Wellenformen so gut wie identisch. Was könnte dieses Problem verursachen, oder liegt mein Problem an einer anderen Stelle in der Schaltung?
Meine Gedanken waren:
1) zu viel Kapazität (mein 20-pF-Quarzoszillator + 2x39-pF-Kondensatoren gegenüber dem angegebenen 9-pF-Oszillator und 2x18-pF-Kondensatoren)
2) Ich habe meine USB-Buchse A falsch abgeschirmt/geerdet
3) Da ich keine Zeit hatte, einen 3,3-V-> 5-V-Aufwärtswandler herzustellen, habe ich den USB-Anschluss mit 5 V von meinem Arduino MEGA 2560 mit Strom versorgt und den MEGA an meinen Stromkreis geerdet. Vielleicht stört die Quererdung zwischen Arduinos die USB-Signale oder die Abschirmung?
An diesem Punkt bin ich fast völlig verloren, daher freue ich mich über jeden Beitrag! Danke schön!
BILDER:
Das wahrscheinlichste Problem ist, dass die D+/D-Drähte zu viel Induktivität aufweisen.
USB ist wählerisch. Wenn Sie ein USB-Signal durch ein Steckbrett, ein Paar lose Anschlussdrähte und ein weiteres Steckbrett laufen lassen, wird das Signal wahrscheinlich so weit verschlechtert, dass es nicht mehr funktioniert.
Sie können diesen Teil möglicherweise retten, indem Sie die Widerstände direkt zwischen den USB-Breakout und den MAX3421E-Breakout löten - das Steckbrett vollständig umgehen. Es wird hässlich, aber es könnte funktionieren.
Es besteht jedoch die Möglichkeit, dass Sie die MAX3421E-Platine wahrscheinlich mit einem USB-Anschluss auf der Platine neu drehen müssen. Wenn Sie dies tun, fügen Sie auch eine Grundfläche für den Kristall und die zugehörigen Kondensatoren auf der Platine hinzu; Die Streukapazität auf einem Steckbrett stört häufig Oszillatoren.
Gaurav
Blake Lucas