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
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
Welchen Eintrag meinst du bei den Deskriptoren? Was meinst du mit Blockung?
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
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.
Das macht ja Mut :) Weiß trotzdem jemand wo man die Receive Buffergröße einstellen kann? Oder der der Interrupthandler heißt zum debuggen?
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.
Nochwas: USB kannst du NICHT debuggen, denn da wirst du spätestens nach 3 ms rausgeschmissen. Also vergiß den Debugger. W.S.
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
Hans schrieb: > Weiß denn wer wo ich die Buffet Größe einstellen kann? egal, solange was Leckeres drauf steht und man zugreifen kann. Liest du denn eigentlich, wenn man dir was Wichtiges sagt? W.S.
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.