Hey, ich beschäftige mich derzeit mit der USB-Programmierung auf Basis eines STM32Fxx Controllers. Der µC soll als reines Device dienen und vorzugsweise mit dem isochronen Transfer Daten zum PC (Windows) schicken und von diesem Empfangen. Auf PC-Seite soll ein VCP eingerichtet werden. Da ich das Rad nicht neu erfinden möchte, habe ich nach einer relativ kurzen Recherche herausgefunden, dass ST zwei Bibiliotheken für ihre Prozessoren anbietet. Da ich mich mit einem 2xxer Proz. beschäftige "muss" ich demnach die USB OTB Host and Device Library 2.1.0 nutzen. Das Manual 1021 beschreibt diese auch einigermaßen. Ich habe mir das VCP Device Beispiel auf Doku- und Code-Seite angeschaut. Mir sind jedoch noch einige Punkte unklar und ich hoffe einfach mal das Ihr mir bei diesen Fragen weiter helfen könnt: Hier das User Manual: http://www.element14.com/community/docs/DOC-44847/ - Laut den Abb. 1, 3 und 7 besteht keine zwangsmäßige Verknüpfung der OTG-Treiber- und der USB-Device-Bibiliothek. Im Code finde ich jedoch an vielen Stellen Zugriffe von Seitens des Devices auf die OTG-Treiber. Ist die Verwendung der OTG-Treiber-Bibiliothek demnach "Pflicht"? Aus den Grafiken lese ich das eben nicht raus - Ich habe den "Datentransfer" noch nicht so ganz verstanden. Ich weiß, dass beim USB das Device erstmal kein "Initiatorrecht" hat. Soll heißen, es darf nur Daten nach Aufforderung des Hosts versenden oder entgegen nehmen. Ich hätte dennoch Read- und Write-Routinen erwartet um z. B. das entsprechende FIFO eines Endpunktes mit Daten zu befüllen oder von einem beschriebenen FIFO eines Endpunktes Daten zu entnehmen. Wie ist der Datentransfer Bibliothek zur Applikation und vice versa implementiert? Evtl. sogar über ISRs oder Callback Funktionen? - Habt ihr evtl. ein eingängieres Beispiel für den Datentransfer von einem µC zum VPC Port eines PCs? Ich danke Euch schon mal im vorraus! :-) Gruss Khean
Khean schrieb: > ich beschäftige mich derzeit mit der USB-Programmierung auf Basis eines > STM32Fxx Controllers.... > Habt ihr evtl. ein eingängieres Beispiel Ja. Ich hatte mir dieses Jahr diese thematik mal vorgenommen und erstmal bei Nuvoton NUC120 angefangen, dann NXP LPC2478, dann STM32F103ZET6, dann LPC1343, dann LPC1751 (das war leicht, denn der hat den gleichen USB-Core wie der LPC2478) Fazit: Fast alle Cores sind grundverschieden und haben elendige Haken, über die man erstmal stolpern und auf die Nase fallen muß. Aber danach geht's eigentlich ganz gut. Ich habe übrigens die Headerdatei vom Nuvoton für alle anderen beibehalten, damit ist der VCP auf allen µC aus Sicht des benutzenden Programms völlig gleich. Nun und für die PC-Seite ist das auch gut, da braucht's keine mehrfachen Installationen. W.S.
Ein Blick auf den libopencm3 USB Core und seiner Anwendung in der Blackmagic Debug Probe kann auch hilfreich sein...
Hey, danke Euch erst einmal für die schnellen Antworten. Ich habe nur vergessen zu erwähnen, dass ich mit einem gängigeren Beispiel eines bzgl. der von mir verwendeten Bibiliothek meine :-). Gruss
Gibt es ein ähnliches bare metal VCP Tutorial für USB OTG?
:
Bearbeitet durch User
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.