STM32F4 USB VCP RX Buffer

Gast #4529593
Lesenswert?

Hallo,

ich habe auf dem STM32F4Discovery Board die USB Schnittstelle als VCP 
zum laufen gebracht (Mit Hilfe von STM32CubeMX). Ich kann Senden und 
Empfangen. Jetzt habe ich einen loopback erstellt (IN = OUT). Wenn ich 
über das Terminal 8 Zeichen sende, bekomme ich die 8 Zeichen zurück. 
Sende ich aber 9 Zeichen springt der Controller in den 
HardFault_Handler_C laut Debugger. Kommt das durch den Überlauf des 
RxBuffers? Wie kann ich diesen erhöhen bzw. verhindern das der 
Controller in den HardFault_Handler_C springt.

Schon mal danke für eure Hilfe.

Gruß Hans
Gast #4529680
Lesenswert?

Hallo Hans,

habe auf meinem System nur USB-HID laufen.
Die 8 Bytes sind für die Enumeration schon mal notwendig.
Was hast Du in den USB-Desriptoren eingestellt?
Wie erfolgt die Blockung bei USB-IN ( MC -> PC )?
Was sagt z.B. USB-View über die Blockgrößen?

Gruß Peter
Gast #4529757
Lesenswert?

Die Endpunkte habe ich laut usbview

Endpoint Descriptor:
bEndpointAddress:     0x82  IN
Transfer Type:   Interrupt
wMaxPacketSize:     0x0008 (8)
bInterval:            0xFF

Endpoint Descriptor:
bEndpointAddress:     0x01  OUT
Transfer Type:        Bulk
wMaxPacketSize:     0x0040 (64)
bInterval:            0x00

Endpoint Descriptor:
bEndpointAddress:     0x81  IN
Transfer Type:        Bulk
wMaxPacketSize:     0x0040 (64)
bInterval:            0x00
Gast #4529769
Lesenswert?

Hans schrieb:
> Schon mal danke für eure Hilfe.

Auch wenn man einen Bug in einem Code natürlich nicht ausschließen kann, 
so sei bitte gewarnt:

Die neue STM32 HAL ist fürchterlichst verbuggt, im speziellen 
hinsichtlich des USB.

Unsere FW Entwicklungsabteilung hat schon 3+ kritische Bugs an ST 
geschickt, die auch bestätigt wurden. Wann die neue Version kommt, weiß 
keiner.
Gast #4530067
Lesenswert?

Hans schrieb:
> Das macht ja Mut :)

Wenn du zum Erfolg kommen willst, dann wirst du nicht umhinkommen, die 
ganze USB-Sache selbst verstehen zu lernen. Irgendwelche generellen aber 
finsteren USB-Treiber sich generieren zu lassen ohne sie zu verstehen, 
endet eigentlich fast immer im Fiasko.

Ich häng dir mal ne alte Quelle aus meiner Feder dran. Ist zwar für den 
STM32F103, aber m.W. verwendet ST den gleichen USB-Peripheriecore für 
alle seine STM32, die Anpassung sollte also keine echte Hürde sein.

W.S.
Angehängte Dateien:
Gast #4532548
Lesenswert?

moin moin,

bei mir zu hause gibt es kein Internet .-((

USB via STM32F103 und STM32F4xx sind 2 verschiedene Treiber-Modelle!
Auf dem 103 habe ich auch USB-HID laufen.


Die Deskriptoren scheinen richtig zu sein.

>> Was meinst du mit Blockung?

Die Aufteilung des Datenstromes auf die Blockgröße der USB-Übertragung.


Da ich STM32 in Pascal progge, werden meine Quellen hier nichts nützen.

..wie w.s. meint: man muss eine Vorstellung von dem haben, was bei USB 
so abgeht. Es wird aber auch nur mit kalt Wasser gekocht.

Gruß
Peter

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