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