Forum: Mikrocontroller und Digitale Elektronik USB CDC Datenübertragung sendet Daten wiederholt


von Sebastian G. (sgessler)


Lesenswert?

Hallo,

derzeit versuche ich einen Virtuellen COM Port über USB CDC umzusetzten.

Die Klasse ist nach meinem Verständnis nun vollständig implementiert. 
Sende ich nun Daten mit TeraTerm und kann keine neuen Daten annehmen 
(Buffer voll, Prozessor beschäftigt) sende ich einen NACK auf 
entsprechenden Endpunkt. Leider wird die Übertragung nach 500ms erneut 
eingeleitet ohne mitzuteilen das dies eine Wiederholungssendung ist.

Gibt es eine Möglichkeit diesen Fall abzufangen, da diese Wartezeit 
wärend der Übertragung in meiner Anwendung sehr wahrscheinlich ist!?

Mit freundlichen Grüßen
Sgessler

von Jim M. (turboj)


Lesenswert?

Sebastian G. schrieb:
> Sende ich nun Daten mit TeraTerm und kann keine neuen Daten annehmen
> (Buffer voll, Prozessor beschäftigt) sende ich einen NACK auf
> entsprechenden Endpunkt.

Wie das? Ist das Software USB? Die USB Hardware die ich kenne macht das 
automagisch genau solange wie der Endpoint Buffer nicht leer ist.

Sebastian G. schrieb:
> Leider wird die Übertragung nach 500ms erneut
> eingeleitet

Erst nach 500ms? Ich hätte da eher µs erwartet. Beschreibe Dein Hardware 
Setup genauer, und poste am Besten mal USB Traces.

von Sebastian G. (sgessler)


Lesenswert?

Einen Trace muss ich demnächst nachreichen.

Mein Hardware Setup ist ein STMF4 Eval Board mit dem vom ST zur 
Verfügung gestellten USB Treiber und CDC Klasse.

Ja die Hardware setzt das NACK wenn der Buffer voll ist oder ich via 
Software wenn ich warten will. Ich denke du hast recht, es sind 
ySekunden. Habe die Zeitskala falsch gelesen.

Nichtsdestotrotz ändert das nichts daran das die Übertragung automatisch 
neu Angesetzt wird ohne Mitteilung und ich einen Weg in der CDC suche 
dies zu verhindern.

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
Noch kein Account? Hier anmelden.