STM32 USB-Device mit CubeMX Bug?

Gast #4150959
Hallo,

ich habe mit CubeMX von ST mir ein Codegerüst erzeugt das eine USB 
Device Schnittstelle als virtuellen COM-Port enthält. Im Code sind dann 
die Funktionen CDC_Receive_FS und CDC_Transmit_FS enthalten.
Wenn ich das Programm flashe und mein Board an den PC anstecke wird der 
Port richtig erkannt und auch der Treiber automatisch erkannt (Win7).
Mit der Transmit-Funktion kann ich Daten an den PC senden, das klappt 
wunderbar.

Bei einem empfangenen Byte wird ein Interrupt ausgelöst und dieser 
landet dann irgendwann in der Funktion CDC_Receive_FS. Hier kann ich das 
Byte dann auch auslesen und verarbeiten. Das funktioniert aber leider 
nur einmal. Nachdem das erste Byte empfangen wurde stehen im 
Endpoint-Register STAT_RX die Bits nicht auf 0x3, damit empfangene 
Pakete mit ACK bestätigt werden sondern auf 0x2, wodurch das Paket nicht 
richtig empfangen wird und auch kein Interrupt ausgegeben wird.

Ich nutze einen STM32L162-Prozessor auf einem Eval-Board, IDE ist IAR.

Hat jemand schon mal mit CubeMX die USB-Schnittstelle nutzen können? 
Wird hier eine falsche/alte Lib mitausgeliefert?

Vielen Dank für eure Hilfe
Chris
Persönliche Seite #4784297
I.d.R. musst du in der CDC_Receive_FS einen call auf
1
USBD_CDC_ReceivePacket(&hUsbDeviceFS);

machen, sodass die Schnittstelle bereit für das nächste Paket ist.

Das kann dann so aussehen:
1
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
2
{
3
  /* USER CODE BEGIN 6 */
4

5
    //hier den Buf irgendwo wegschreiben
6

7
    USBD_CDC_ReceivePacket(&hUsbDeviceFS);
8

9
    return (USBD_OK);
10

11
  /* USER CODE END 6 */ 
12
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.