stm32 + virtual com port datenübertragungsfehler

Gast #2713411
Lesenswert?

Hi!
Ich habe das Beispiel für den virtuellen Com Port von der Seite hier 
http://www.mikrocontroller.net/articles/STM32_USB-FS-Device_Lib#Aubau_der_Beispielimplmentierung 
so implementiert, dass ich den Puffer nur sende. Allerdings kommt davon 
nicht wirklich alles an. Sende ich z.b. abwechselnd 2 Puffer mit 64 Byte 
ist die Reihenfolge beim Empfänger willkürlich und es gibt auch 
Überlappungen. Ich vermute mal, dass der µC zu schnell sendet. 
Allerdings half ein while (count_in != 0) {} nach SetEPTxValid(ENDP1); 
dabei nicht. Kann mir jemand irgend einen Tipp geben wonach ich hier 
suchen muss? Ich bin für jede Hilfestellung dankbar!

VG Julian
Gast #2713545
Lesenswert?

Erstmal danke für deine Antwort. Der Code ist
1
if (bDeviceState == CONFIGURED) {
2
      for (i = 0; i < 4096; i++) {        
3
          
4
          sprintf(SendBuffer,"123456789012345678901234567890123456789012345678901234567890123\n");
5

6
          // Write the data to the USB endpoint
7
          USB_SIL_Write(EP1_IN, SendBuffer, 64);
8
          SetEPTxValid(ENDP1);
9
          while (count_in != 0) {}
10
          sprintf(SendBuffer,"098654321098654321098654321098654321098654321098654321098765432\n");          
11

12
          // Write the data to the USB endpoint
13
          USB_SIL_Write(EP1_IN, SendBuffer, 64);
14
          SetEPTxValid(ENDP1);
15
          while (count_in != 0) {}
16

17
      }
18
      
19
      SetEPRxValid(ENDP3);
20
      count_out = 0;
21
      
22
}

Die Variablen sind die aus dem Beispiel. Puffern würde ich gerne, aber 
Doku hab ich bisher leider keine gefunden. Normal müsste es ja auch 
reichen zu warten, bis die Daten gesendet wurden.
Gast #2714118
Lesenswert?

Bevor jemand anderes danach sucht: Man muss count_in selber setzten 
(scheint beliebig zu sein), da es nur auf 0 gesetzt wird. Im Gegensatz 
zu count_out wird also nichts automatisch gesetzt, was man normal 
erwarten könnte. Danach ging also alles bei mir.

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