Forum: Mikrocontroller und Digitale Elektronik 12 MBit USB auf Breadboard


von Christian (dragony)


Lesenswert?

Hallo zusammen,

ich verwende das USB Modul des ATxmega um mit dem PC zu kommunizieren. 
Leider habe ich bei ca. 20% aller 10 Byte Pakete das Problem, dass die 
Übertragung mit einem EPIPE abbricht (libusb). Bei 64 Byte Paketen geht 
schon gar keines mehr durch. Ich vermute derzeit, dass es an meiner 
Verkabelung liegt. Ich habe noch keine Erfahrungen mit hohen Frequenzen, 
habe aber oft gelesen, dass das mit den Versuchsaufbauten desto 
problematischer wird, je höher die Frequenzen werden. Es handelt sich um 
Full Speed, also 12 MBit/s. Kann das dort schon ein Problem sein?

Die Elektronen nehmen folgenden Weg:

Aus dem PC gehts in den gewöhnlichen USB Hub, von da aus in ein 
gewöhnliches USB Kabel mit Stecker, von da in eine entsprechende Buchse, 
die auf ein Breakout-Board gelötet ist, welches auf dem Breadboard 
steckt. Von da aus geht es auf das Breadboard, dann in ein knapp 15cm 
langes Kabel, dann wieder aufs Breadboard, dann auf ein anderes xmega 
Breakout-Board, welches auf dem Breadboard steckt, dann in den xmega.

Hört sich nach viel an, aber ab dem USB Stecker sind es wie gesagt "nur" 
15cm Kabel + 3 cm Breadboard. Der gleiche Weg natürlich wieder zurück. 
GND und 5V sind NC, da ich das Breadboard über ein externes 3.3V 
Netzteil mit Strombegrenzung betreibe.

von Jim M. (turboj)


Lesenswert?

Schaltplan, bitte.

Der Text liesst sich als ob die 33R Serienwiderstände fehlen würden. Die 
dann entstehenden Reflexionen würden in der Tat für schlechte Signale 
sorgen.

: Bearbeitet durch User
von Christian (dragony)


Lesenswert?

Der xmega braucht diese nicht: http://www.atmel.com/Images/doc8388.pdf

Wenn ich mit dem OSC nachmesse, sind es ja schon keine sauberen 
Rechtecke. Leider habe ich aber auch gelesen, dass die Oscs selber, wenn 
man nicht viel Ahnung hat, alles mögliche anzeigen können. Dass man 
Ground Springs braucht, um richtig zu messen. Gottseidank brauchte ich 
das für meine kleinen LED-Treiber nie... nur jetzt ists halt doch was 
grösseres....

Vielleicht wär am besten ein Tipp, wie ich "sicher messen" kann. Würde 
es reichen, einfach an D+ und D- das Osc anzuschliessen und dann kann 
ich davon ausgehen, dass ein unschönes Signal auch wirklich anliegt und 
dass ich es nicht nur im Osc sehe? Es ist ein Rigol MSO1074.

von schwermetall (Gast)


Lesenswert?

Hast du vielleicht ein Bild deines Aufbaus zur Hand? Dann könnte man das 
etwas besser bewerten.
Je nach Breadboard kann bereits die Kapazität zwischen den einzelnen 
Steckkontaktreihen Probleme mit der Signalqualität verursachen. Da müßte 
man aber mal auf deinem Bild nachschauen, wie das nun aufgebaut ist.
Ich kenne mich mit USB nicht so gut aus und weiß nicht, ob USB wirklich 
komplett differentielle Übertragung hat. Daher bin ich etwas skeptisch, 
wenn du schreibst, dass du den USB-GND nicht mit dem MCU-GND verbunden 
hast. Vielleicht kannst du das mal ausprobieren?

Am USB messen ... schwierig. Wenn du zu zweit bist, dann kannst du mal 
probieren, die Klemmhaken von den Tastköpfen abzuziehen und stattdessen 
die kleine "Spule/Feder" aus Federstahl, die beilag, so aufzustecken, 
dass das freie Drahtende nach vorne wegzeigt. Dann brauchst du eine 
zweite Person, die das idealerweise am USB-Breakout-Board mit GND und 
einer der Signalleitungen verbindet, während du dir auf dem Oszilloskop 
das Signal anschaust. Allein kann man das nicht sinnvoll machen, da die 
Positionierung sehr fummelig ist. 10:1-Teiler nicht vergessen, sonst ist 
die Kapazität des Tastkopfs zu hoch und versaut dir dein Signal.

von Frank K. (fchk)


Lesenswert?

Die Verbindungen auf dem Breadboard haben eine zu hohe Kapazität.

Und: USB arbeitet mit definierten Wellenwiderständen zwischen D+ und D- 
und zwischen D+/D- und GND. Jede einzelne Steckverbindung ist eine 
Sprungstelle, die zu Reflexionen und damit zu Störungen führt, und 
irgendwann ist eben Feierabend.

Im USB-Standard steht genau, was Du machen darfst. Halte Dich genau 
daran, und es wird funktionieren. Bau den USB-Stecker direkt auf das 
XMega-Board, so wie es Datenblatt und USB-Standard fordern.

fchk

von Christian (dragony)


Lesenswert?

YAY FUNZT freu

Der Kalibrierungswert in der Signaturrow des xmega für DFLLRC32M_CALB 
war einfach falsch. Ich habe selbst einfach mal daran rumgespielt und 
wert-3 funktioniert tadellos. Da bei den empfangenen Daten erst nach 
einigen Bytes Fehler auftraten und das verdächtig nach verschobener 
Abtastung aussah, habe ich da mal gesucht und gefunden :) Atmel ist ja 
auch leider bekannt dafür, dass deren "Kalibrierung" kaum das Wort 
verdient....

Ich werde mich dennoch mal mit Kapazitäten in Kabeln auseinander setzen. 
Scheint ja bald trending Topic zu werden...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.