Forum: Mikrocontroller und Digitale Elektronik USB: Dual VCOM-Port mit STM32F407


von Rangi J. (rangi)


Angehängte Dateien:

Lesenswert?

Hallo Forum,
ich komme mit meinem USB-Projekt nicht weiter und bräuchte mal Hilfe 
beim Thema USB.
Ich möchte 2 virtuelle COM-Ports mit einem STM32F4xx verwenden. Dazu 
habe ich Anleitungen und Quellen aus:
https://community.st.com/t5/stm32-mcus/how-to-implement-a-dual-cdc-acm-usb-device-using-the-st-classic/ta-p/708039
und Github kombiniert.
Das ganze läuft jetzt, das 2 Ports in Windows erkannt werden, das ich 
beide öffnen kann und dass ich ein Echo zurückbekomme.
Jedoch ist mir jetzt aufgefallen, dass die Interrupt-Last hoch ist, 
sobald ich den ersten Port öffne. Beim zweiten Port ist das nicht so und 
funktioniert sehr gut.
Im pcap hab ich gesehen, dass ständig Nachrichten "URB Function: 
URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL (0x001e)" gesendet werden.
Irgendetwas scheint noch zu fehlen oder nicht zu stimmen.
Im Anhang habe ich mal die beiden pcap-files:
4.pcap - Funktion ok, senden und empfangen von "abcd" im Paket 1745 ff
5.pcap - nicht okay, senden und empfangen von "efgh" im Paket 1123 ff
Im Quellcode habe ich bis dahin folgendes angepasst:
Usb_device.c "USBD_CDC_RegisterInterface(&hUsbDeviceFS, 
&USBD_Interface_fops_FS0);"
hier habe ich 2 cdc interfaces angelegt ...FS0 und ...FS1, wobei ich die 
Receive- und TransmitCplt-Funktionen ergänzt habe. Sonst gab es einen 
Hardfault, weil auf 0 gesprungen werden sollte.
Die "USBD_malloc"-Funktion (static) habe ich durch getrennte Speicher 
ersetzt in der die "USBD_CDC_HandleTypeDef" abgelegt werden.

Vielen Dank für Hinweise

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.