Hallo! Ich habe das Problem bei einem STM32F427 mit CDC Interface das Ende einer laufenden Übertragung zu erkennen. Der USB-Stack ist mit CubeMX zusammengeklickt und hat Version 1.4 (die derzeit aktuellste). Für die Übertragung verwende ich "CDC_Transmit_FS", welches einen Pointer und ein Längenfeld nimmt. Vom der CDC-Implementierung wird der Buffer mit USBD_CDC_SetTxBuffer direkt gesetzt, dann USBD_CDC_TransmitPacket aufgerufen. Dieses prüft mit "(hcdc->TxState == 0)" ab ob bereits eine Übertragung läuft und setzt sonst TxState auf 1 und beginnt die Übertragung. Problem: der in der CDC-Klasse implementierte Callback "USBD_CDC_DataIn" welcher TxState wieder resetten soll wird nie aufgerufen. Er wird in der Callback-Struktur "USBD_ClassTypeDef USBD_CDC" referenziert und sollte dann vom USB-Core in "USBD_LL_DataInStage" aufgerufen werden: OTG_FS_IRQHandler -> HAL_PCD_IRQHandler -> HAL_PCD_DataInStageCallback (weak-Funktion durch CDC-Klasse überschrieben) -> USBD_LL_DataInStage -> DataIn (USBD_CDC_DataIn) Scheinbarer Fehler ist, dass "HAL_PCD_DataInStageCallback" nur aufgerufen wird, wenn das XFRC-Interrupt (Transfer Complete) gesetzt ist - dies wird aber nirgends aktiviert. Versuche es manuell "irgendwo" zu aktivieren waren nicht erfolgreich. Hatte jemand schon mal das Problem? Viele Grüße Robert
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.