Forum: Mikrocontroller und Digitale Elektronik USB am Nuvoton NUC120, wer kennt sich aus?


von W.S. (Gast)


Lesenswert?

Hallo zusammen,

heut ist mir mal danach, was zu fragen. Ich hatte mir vor einiger Zeit 
mal einige Cortexe M0 von Nuvoton gegönnt, genauer den NUC120. Der ganze 
normale Kram (Clock, Ports, Seriell, Timer) geht eigentlich ohne 
Probleme.

Aber:
Der USB-Anschluß treibt mich derzeit auf die Palme. Schon den 
Device-Descriptor krieg ich einfach nicht zum Host geschickt. Aus Sicht 
des uC sieht alles bestens aus, so als ob das Paket richtig zum PC 
gesendet worden wäre, aber beim PC kommen nur Nullen an.

Also, kennt sich jemand mit diesen Chips näher aus?

W.S.

von Jim M. (turboj)


Lesenswert?

Es gibt auf Nuvoton.com gleich mehrere USB Beispiele:
http://www.nuvoton.com/hq/enu/ProductAndSales/ProductLines/MicrocontrollerApplicationIC/ARMMicrocontroller/ARMCortexTMM0/Pages/ApplicationNotes.aspx

Ich empfehle dringend mit diesen Beispielen anzufangen. USB ist ziemlich 
komplex auf jedem µC.

von W.S. (Gast)


Lesenswert?

Danke für den Tip, aber das kenne ich schon. Guck dir mal in /drivers 
die USBdrv.c an, grausam. Hab vergeblich versucht, aus diesem Gestrüpp 
von void Pointern herauszufinden, wie die zugehörige Hardware denn 
tatsächlich funktioniert und was man tun muß, um wenigstens die 
Enumeration hinzukriegen, aber bei dieser!! Quelle ist das nur was für 
Masochisten.

Irgendwelche Software-Usbsniffer nützen auch nix. Entweder ein Gerät 
funktioniert bereits, dann sind sie überflüssig - oder es funktioniert 
nicht, dann kriegen sie vom eigentlichen Datenverkehr auch bloß nix ab.

Bin inzwischen soweit, daß ich mir ein paar Log-Routinen in den uC 
gesetzt hab. Resultat:

- Host sendet Reset   (find ich OK)
- Host sendet Setup-Paket und fordert Device Descriptor an (ist auch OK)
- Device Descriptor wird zum Host gesendet
- Host antwortet mit ACK  (find ich auch OK)
- Host schickt leeres Paket, wird mit ACK angenommen (= Status stage, 
scheint OK zu sein)
- Host sendet Reset (wozu? versteh ich nicht)
- Host sendet Setup-Paket und liefert einem eine Adresse (Set Addr.)
- Adresse wird eingestellt
---> dann passiert für 500 ms garnix

Würde ich die Adresse nicht einstellen, dann wartet der Host ca. 5 
Sekunden, bevor er das Spiel wiederholt. Irgendwas undokumentiertes 
passiert also damit in der Hardware.

Dann wiederholt sich das ganze Spiel noch 2x und dann schmeißt der Host 
das Handtuch und meint, das Device funktioniert nicht richtig.

Glaub ich ja gern, bloß wo ist der Fehler?

Guck ich im PC mit Usbview, dann sieht es so aus, als ob anstelle des 
Device Descriptors nur Nullen angekommen wären. Kann aber auch sein, daß 
das bloß ein Platzhalter ist.


W.S.

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.