HomeBlogMagic

STM32F1 mit USBD_STATUS_STALL_PID am OUT Endpoint

Bei der Inbetriebnahme eines Displays mit meinem STM32F103 (BluePill) habe ich immer wieder Fehler in der USB Kommunikation erhalten.

Das Display ist an ein SPI Port angeschlossen.
Das Bild wird von einer Host Applikation generiert und an den STM32 per USB übertragen.

Während der Übertragung kam es immer wieder zu Verbindungsabbrüchen beim kontinuierlichem Datenstrom.
Auf Host Seite war der Fehler mit Wireshark zu sehen, der OUT Endpoint vom STM32 hat mit einem Stall (USBD_STATUS_STALL_PID) auf ein Paket geantwortet.
Auf der STM32 Seite konnte man den Fehler auch erkennen, dieser lief in einen PMA Overrun und hat deshalb den Stall erzeugt.

Die Stelle die den Overrun erzeugt, habe ich in Github reported: https://github.com/STMicroelectronics/stm32f1xx_hal_driver/issues/9

Nachdem ich diese Zeile aus dem STM32F1 Framework entfernt habe, hatte ich keine Ausfälle mehr in der USB Kommunikation.

Ich hoffe ich konnte dem einen oder anderen die Fehlersuche etwas erleichtern :)