Forum: Mikrocontroller und Digitale Elektronik STM32F4 USB CLASS CDC (Virtueller Com Port)


von Matthias F. (frank91)


Angehängte Dateien:

Lesenswert?

Hallo alle zusammen :P

Ich arbeite mich zur Zeit in 32bit Controller ein.

Dabei möchte ich an meinem STM324x9I-Eval Board einen Virtuellen Com 
Port erstellen.
Ich habe mir hierzu über STM32Cube die Initialisierungen schreiben 
lassen.
Das angehängt Manuel habe ich auch bereits überflogen.

Mein Programm geht soweit, dass ich einen String senden kann und es mir 
diesen wieder zurückschickt. Außerdem kann ich über einen Befehl LEDs 
ein und ausschalten.

Allerdings habe ich noch einige Verständnisfragen:

-Über die Befehle "USBD_CDC_SetRxBuffer" und "USBD_CDC_SetTxBuffer" kann 
ich ja die jeweiligen Buffer auswählen. Von der Theorie müsste es doch 
reichen diese 2 Befehle noch vor der while Schleife einmalig aufzurufen. 
Allerdings erhalte ich dann gar keine Antwort von der Platine mehr. 
Warum ist das so?

-Gibt es irgendeine Art Empfangs-Interrupt? Oder muss ich selbst jedes 
mal schauen, ob neue Daten vorhanden sind? So wie mein Programm momentan 
programmiert ist gehen wenn ich 2 String Pakete während der HAL_Delay 
sende das erste Paket verloren.

-Ich habe nach jedem Sendebefehl eine kleine Wartezeit eingebaut. Ohne 
diese Wartezeit funktionierte das Senden nicht richtig. Kann ich 
irgendwie prüfen, wann der erste Senden Befehl fertig ist?

-Kann ich irgendwie nach verfolgen ob gerade ein USB Gerät eingesteckt 
ist?

von Matthias F. (frank91)


Lesenswert?

Inzwischen habe ich mir einige Fragen selbst beantworten können.

Über die Funktion "USBD_Interface_fops_FS.Init()" lassen sich User 
spezifische Unterprogramme initialisieren.

Diese wären "CDC_Transmit_FS"
und
"CDC_Receive_FS"

Transmit hat hier bereits eine Erkennung ob das USB beschäftigt ist.

Receive wird bereits selbstständig, wenn ein neues Paket kommt 
aufgerufen.


Somit läuft jetzt alles, außer die Erkennung ob am USB etwas 
angeschlossen ist.

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.