Hallo, ich arbeite gerade an einem Programm welches Daten per USB Übertragen soll. Aber vielleicht erstmal kurz zur Hardware: µC: AT32UC3 auf eigener Platine USB Seriellwandler MCP2200 auf Demoboard. Verbunden über circa 1m USB Kabel. Ich benutze das Atmelstudio zusammen mit dem ASF und dem CDC Treiber für den USB-Seriel Wandler. Ich kann Bytes per "uhi_cdc_putc" senden und diese kommen auch an. Wenn ich aber Bytes vom PC (UART->MCP2200->)an den µC sende, dann kommt nicht jedes Byte an! Wenn ich mehrere Bytes gleichzeitig sende kommen alle an außer das erste. Wenn ich Bytes einzeln sende kommt exakt jedes zweite an. z.B ich Sende "1" "2" "3" "4" und es kommt an 2 3 4 Beispiel 2: ich Sende "1", kommt an. Ich sende "1", kommt nicht an,... Das ganze verhält sich immer gleich. An den Stellen wo mir Bytes verloren gehen bekomme ich ein "UHD_TRANS_DT_MISMATCH" was laut Header Datei "Data toggle PID did not match the expected value" bedeutet. Ich benutze von Atmel die Option "multiple Host" mit MSC und CDC. Einen USB Stick kann ich ohne Probleme lesen und schreiben, nur beim CDC habe ich das Problem. Jetzt weis ich leider nicht mehr weiter. Hat es eine Hardwareursache? Dagegen spricht, dass es sich immer gleich verhält, beim USB Stick nicht passiert und auch das Senden des CDC fehlerfrei abläuft. Hat es eine Softwareursache? So tief kenne ich mich mit USB leider nicht aus. Ich komme sonst eigentlich mit dem ASF gut aus und ich gehe davon aus, dass die USB funktionen von Atmel funktionieren sollten. Könnt ihr mir einen Tipp geben in welche Richtung ich suchen könnte? vielen Dank.
Problem gelöst: In der usbc_host.c hat Atmel in der Funktion "uhd_ep_abort_pipe" anscheinend einige Dinge geändert. in meiner Version gabs den Abschnitt zum Data Toggle noch nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.