STM32F10x USB VCP unter Coocox

Gast #3501488
Lesenswert?

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
(Firma: EleLa - www.elela.de) #3502038
Lesenswert?

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.
(Firma: EleLa - www.elela.de) #3502042
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren