Hallo, ich suche eine Implementierung um an einem STM32F10x den USB als VCP zu betreiben. Ich habe hier den Artikel http://www.mikrocontroller.net/articles/STM32_USB-FS-Device_Lib gelesen. Der Link zum Download der V4 ist defekt. Auf der ST Seite finde ich auch nichts nur ne Menge Foreneinträge. Vielleicht kann mir hier jemand auf die Sprünge helfen? Vielleicht hat jemand den VCP auch mal in der Coocox umgebung umgesetzt ? Danke! Gruß ernst
Hier gibt es Code von ST: http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1743/PF258157?s_searchtype=keyword# Hier der VCP Treiber für Windows: http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF257938?s_searchtype=keyword
Ja, erst kürzlich. In einem Bootloader für einen STM32F4. Es hat gut geklappt. Mit Eclipse nicht CooCox.
:
Bearbeitet durch User
Danke für die Info! Den Link im Artikel werde ich mal anpassen. Ich habe mir gerade das hier bestellt: http://re.reworld.eu/de/produkte/s64dil-405/index.htm Irgendwelche Fallstricke bei der Lib? Gruß
ernst schrieb: > Irgendwelche Fallstricke bei der Lib? Fallstrike eigentlich nicht. Der Code und die Demos von ST bieten nicht nur VCP sondern auch HID, Audio und Massstorege und noch mehr. Da muss man die richtigen Dateien nehmen. Ansonsten habe ich das define so geändert: #define CDC_OUT_EP 0x03 /* EP1 for data OUT */ sollte aber keine Rolle spielen. In der Datei "usbd_cdc_vcp.c" kommen dann die Daten an und man kann da auch welche senden. Im VCP_Ctrl() habe ich das geändert: case GET_LINE_CODING: Buf[0] = (uint8_t) (115200); Buf[1] = (uint8_t) (115200 >> 8); Buf[2] = (uint8_t) (115200 >> 16); Buf[3] = (uint8_t) (115200 >> 24); Buf[4] = 0; Buf[5] = 0; Buf[6] = 8; break; denn ich nutze die Daten nur intern und ich habe alles mit "LineCoding" entfernt. Es ist völlig egal welche Baudrate, Parität usw. man im Terminalprogramm ein gibt, der VCP arbeitet immer mit der maximalen USB Geschwindigkeit. Ich habe den Code stark verändern müssen, da ich den USB-VCP im Bootloader nutze und ich unbedingt nicht mehr als 32KB haben wollte (Bei Optimierung -O0). Bei Start wird der Bootloader mit USB immer initialisiert und mit einer definierten Sprungtabelle nutzt diese initialisierte USB Verbindung auch die eigentliche Applikation. Und der Bootloader sowie die Applikation ist in einem Projekt mittels speziellem Linker-Script speichermäßig geteilt. Daher kompiliere ich das mit GCC und makefile direkt mit Eclipse. Jedoch die Funktionalität im Code von ST ist unverändert - nur anders strukturiert.
Bei USB sollte man PA9 mit VBUS verbinden, damit erkennt der STM32F4 dass der interne Pull-Up von 1,5K aktiviert werden muss. Ansonsten selbst noch einen 1,5K Widerstand an +3,3V oder +5V zu D+ legen. (Das mit PA9 noch mal in der Doku nachlesen, habe es nicht zu 100% im Kopf).
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.