Hausgemachtes Arduino USB Host Shield

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:

Geben Sie hier die Bildbeschreibung ein

Hallo, ich stehe auch vor dem gleichen Problem. Können Sie dieses Problem lösen? Ich habe d+ d- Leitungen direkt mit max3421 verbunden aber keine Änderung. Ich sehe, dass die D + Leitung keine Spannung hat und die D- Leitung ungefähr 3 V hat.
@ Gaurav Ich konnte es nicht lösen. Das Projekt änderte trotzdem die Richtung, da ein Android-Telefon kein Zubehör mit Strom versorgen kann. Ich konnte die USB-Kommunikation mit einem rohen AVR-Chip und der V-USB-Bibliothek zum Laufen bringen, also könnte dies auch ein geeigneter Weg für Sie sein!

Antworten (1)

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.

Sie könnten Recht haben, aber ich habe das FTDI Breakout Board (von SparkFun) auf einem Steckbrett nachgebaut und das funktioniert problemlos mit USB ... Der FT232RL könnte toleranter gegenüber Signalirritationen sein?