Forum: Mikrocontroller und Digitale Elektronik CP2102 UART USB Bridge


von Debugger (Gast)


Lesenswert?

Hallo USB Experten,

hab ne frage zu dem CP2102 USB UART Bridge. Wie kann ich mich von der
Mikrocontroller seite her vor einem Pufferüberlauf schützen?

Ich habe ein Testprogramm geschrieben welches immer nur Daten in den
UART schiebt und es kommt vor dass Zeichenketten verloren gehen. Ich
denke dass der Interne Puffer des USB Bausteins überläuft. Wie kann ich
den Pufferstatus des CP2102 abfragen um keine daten nachzuschieben,
solange die alten nicht verschickt sind ???

danke

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hardwarehandshake verwenden. Zwischen µC und CP2102 müssen zusätzlich zu
RxD/TxD auch noch RTS/CTS bzw. DTR/DSR* verbunden werden, der µC muss
die entsprechende Handshakeleitung aktivieren und deaktivieren (je nach
Empfangsbereitschaft) und die auf dem PC, an den der CP2102
angeschlossen ist, eingesetzte Software muss die virtuelle serielle
Schnittstelle ebenfalls mit Hardwarehandshake ansteuern.

Es gibt auch ein Softwarehandshakeprotokoll namens XON/XOFF, dazu
sendet der µC ein Steuerzeichen, um seine Empfangsbereitschaft zu
signalisieren bzw. um mitzuteilen, daß er nicht empfangsbereit ist.
Da es hier aber unweigerlich zu Verzögerungen kommen kann, muss der µC
damit rechnen, daß trotz Senden von XOFF noch einige Datenbytes
eintreffen, bevor der PC mit dem Senden aufhört; der Empfangspuffer ist
also entsprechend zu dimensionieren.
Auch hier muss die PC-Software dieses Protokoll unterstützen und hier
muss darauf geachtet werden, daß die Steuerzeichen XON/XOFF nicht
versehentlich als Nutzdaten gesendet werden.
Das ist daher die unattraktivste Variante.

*) welches Pärchen bleibt Dir bzw. den Vorgaben der von Dir auf dem PC
eingesetzten Software überlassen

von Debugger (Gast)


Lesenswert?

Und wie kann ich dann checken ob der USB Puffer voll ist oder nicht ???
Kann man dies nicht mit der Suspend Leitung irgenwie regeln. Viele
Applicationen die ich gesehen habe verwendien RX, TX und Suspend aber
kein RTS und CTS.

Ich dachte dass vieleicht CTS automatisch gesetzt wird wenn der interne
Puffer voll ist.

Wo bekomme ich eigentlich infos über die geanaue Portfunktionen des
CP2102 ?

danke an euch

von Debugger (Gast)


Lesenswert?

Hallo habe gerade nachgelesen was Suspend zu bedeuten hat.

Es bedeutet dass der HOST heruntergefahren ist (also zB. der PC im
Ruhezustand) dies ist wichtig um die Stromaufnahme eines BUS Powered
Devices zu minimieren.

Kann mir vieleicht jemand sagen ob die von "Rufus" vorgesteltte
Methode über CTS und RTS die einzige möglichkeit ist eine sichere
Datenverbindung zum PC zu bekommen (damit man nicht in den
übergelaufenen Puffer des CP2102 schreibt) oder kann man noch andere
Tricks anwenden den Pufferstatus abzufragen, ich möchte eben nicht mit
Hardwarehandshake fahren sondern nur wissen ob der USB Baustein noch
Daten aufnehmen kann oder nicht

thx

von user (Gast)


Lesenswert?

???

von rufus (Gast)


Lesenswert?

Hallo,

hat jemand schon einmal X-on/X-off mit dem CP2102 praktiziert. Ich finde 
leider keine Doku diesbezüglich im Netz und der Linux Treiber 
unterstützt diese Funktionalität auch nicht.

Danke

rufus

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.