Forum: Mikrocontroller und Digitale Elektronik CP2102 USB-RS232 Einfach-Beschaltung?


von Henning L. (Gast)


Lesenswert?

Hallo!

Ich frage mich, ob es wohl möglich ist, ohne verschiedene
Schaltungstests im vorherein einen CP2102 in ein Gerät zu integrieren.
Ich hätte gern nur eine simple RS232-kompatible Schnittstelle, also nur
die Signale TxD und RxD, so wie wenn ich einen Atmel an einen Max232
hängen würde (fast). Das Gerät wäre per USB ansprechbar, aber
unabhängig (vom USB bzw. Suspend) betrieben.

Kann ich folgendes beschalten:
Suspend -> NC oder Atmel input um irgendwas damit zu machen
1-Reset <- low
DCD <- high
RI <- low
DTR -> NC
RTS -> NC
DSR <- high
CTS <- Atmel output: eine receive complete interrupt Routine würde
während ihrer Abarbeitung CTS auf low setzen, ansonsten high

Btw: laut Datenblatt wird der CP2102 ausschließlich über USB
konfiguriert - ich habe keinen Hinweis gefunden (oder übersehen), dass
man die UART-Parameter auf bestimmte Auswahlen beschränken könnte, was
aber meiner Vorstellung nach notwendig wäre, damit man nicht den
Controller dahinter mit unsinnigen Werten vollmüllt. Gibts da
irgendeine Möglichkeit?

Danke schonmal und Grüße, Henning

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

guckst du Bild!?!

von Christian Meinhardt (Gast)


Lesenswert?

Hallo Henning!

Ich habe meine Erfahrungen mit einem fertigen USB/Seriell Modul
gemacht. Auf dem Modul ist ausser dem CP2102 fast nix drauf.

 http://www.chip45.com/index.pl?page=littleUSB&lang=de
Hier siehst du das Modul und auch den Schaltplan.

Von dem Modul habe ich nur die Versorgungsspannung verbunden und den
Atmel mit RXD/TXD verknüpft. Alle anderen Ports waren NC. Hat so
wunderbar geklappt.

Von der PC Seite musst du dann allerdings CTS/RTS als Handshake
ausschalten, da sonst der CP2102 auf Handshakes wartet und keine
Signale zum Atmel weiterschickt. (Frag nicht woher ich das weiss!) ;)

Viel Erfolg,
ist ein toller Chip!

Christian

von Holger M. (holger)


Lesenswert?

Um Handshakeprobleme zu vermeiden, einfach RTS mit CTS und DCD mit DTR
sowie DSR verbinden.
Dann noch einen Pullup an /RST um sicherzugehen.

von René K. (king)


Lesenswert?

- Wenn Du SUSPEND oder /SUSPEND beschalten willst, ist es am wohl
Einfachsten, damit einen Spannungsregler ein-/ auszuschalten und die
komplette Schaltung herunterzufahren (Ich verwende da z.B. gern
Microchips MCP1252). Du kannst natürlich auch auf den Controller gehen
und diesen dann in Power-Down ziehen. Und wenn der Controller nicht vom
Bus versorgt wird, kannst Du die Ausgänge auch unbeschaltet lassen.

- Der Eingang Reset ist Low-Active, den darfst Du nicht dauerhaft
runterziehen.

- Die Eingänge DCD, RI, DSR, CTS brauchst Du nicht zu beschalten, wenn
Du nur TX und RX benötigst (Datenblatt: "Pins can be left unconnected
when not used."). Da man den Port nach dem Öffnen sowieso immer
richtig konfiguriert, gibt es auch keine Probleme mit dem Handshaking.

> , damit man nicht den Controller dahinter mit unsinnigen Werten
> vollmüllt.

Damit muß der Controller irgendwie klarkommen, sich selbst schützen.
Das ist aber keine Eigenschaft des CP2102, da der Controller auch bei
einer 'echten' RS232-Verbindung mit unsinnigen Daten zugemüllt werden
kann.

von Henning L. (Gast)


Lesenswert?

_Zuerst:_ ich Dummerle habe überall "active low" überlesen, alle highs
und lows in meiner Frage müssen daher ausgetauscht werden........

Wow, das ging schnell! Jetzt seh ich's erst, kleine Fußnote:
tatsächlich, die "übrigen" inputs kann man NC lassen. Das ist ja
einfach :o)

@Christian: was ist denn drauf? Ich vermute mal, ein Kondensator und
die drei Schutzdioden (bzw. 1 Array), oder? Äh, Handshake wäre dann
allerdings witzlos ;)

@ René: bezüglich Handshaking hatte ich an eine Sicherheit gedacht,
damit mein Buffer nicht überläuft. Wird wahrscheinlich nicht passieren,
noch steht das Programm aber nicht, und ich bin's vom PC gewöhnt, auf
Sicherheit zu gehen, und (fast) alle komischen Fälle abzufangen.

Bezüglich des Selbstschutzes hast Du Recht, sollte sich mit höchster
Wahrscheinlichkeit so kontrollieren lassen (fängt mit dem einfachen
Bsp. an, von einer Befehlsfolge alle Parities zu überprüfen, danach der
Inhalt).

Danke, Henning

von Christian Meinhardt (Gast)


Angehängte Dateien:

Lesenswert?

Auf dem Modul ist so gut wie nix drauf.
Der Chip, zwei Kondensatoren, die USB Buchse und wo die Dioden sich
verstecken muss ich nochmal nachsehen.

Das mit dem Handshake war einfach doof. Hatte mich beim Herumtesten mit
dem Terminalprogramm verklickt und dann ewig den Fehler gesucht.

von Henning L. (Gast)


Lesenswert?

@Holger: hat da jemand gemerkt, dass ich noch nie ne serielle eingebaut
habe!?! Danke.

Ps: ist mein Gedanke mit CTS und der receive complete interrupt Routine
nicht ratsam/sinnvoll? Oder wäre es obsolet, da es sowieso nur während
der sowieso aufgerufenen Interrupt-Routine, in der es schnell geht, auf
passiv gesetzt wäre?

@Peter: geilo Bild! :)

von Henning L. (Gast)


Lesenswert?

@Christian: hatte ja gar nicht gefragt ;)) Aber hätte auch ich sein
können...

Auf dem Bild ist eine kleine schwarze Ecke zu sehen, könnte das sowas
sein:
http://www.littelfuse.com/cgi-bin/r.cgi/prod_parts.html?PartID=14194
Danke fürs Nachgucken!

von Frank (Gast)


Lesenswert?

Hallo,

habe bisher auch gute Erfahrungen gemacht (5 Projekte). Z-Zt. taucht
aber in einer Applikation das Problem auf, das bei einem verwendeten
USB-Verlängerungskabel der CP2101 nicht korrekt erkannt wird.
Hat jemand eine Idee warum ?

Danke!

von René K. (king)


Lesenswert?

Verlängerungen darf es laut Spezifikation gar nicht geben (6.4.4). Und
wenn Du zusammen mit Deiner Verlängerung mehr als 5 Meter zurücklegst,
ist das der Grund für das Fehlverhalten. Also:

- Nicht verlängern!
- Keine Strippe länger als 5 Meter machen oder einen HUB
dazwischenschalten

von Rolf Wettstein (Gast)


Lesenswert?

Hi folks!
Habe mir ein eigenen kleinen USB-Testprint gebastelt mit Atmega128 und
Cp2102. Bin nun verzweifelt am versuchen, die Kommunikation
hinzukriegen. Erstens: Kann mir jemand sagen, was es mit den Baudraten
des Cp2102 auf sich hat? wie konfiguriert man das (habe das tool, aber
kapiere das prinzip nicht)? Oder erkennt er die Baudrate vom Atmega
selbst und kommuniziert dann USB-Seitig gleich schnell? Wie ist das mit
dem ParityBit?
Habe ein LabView Listener programmiert, und bekomme nur 0x8000 und
0x8080 und 0x0000, aber wenigstens im Sekundentakt, sowie ichs aufm
Atmega geproggt habe :-) (juhui)!

Infos:
 - CP2102 nur minimal beschalten (alle pins NC, die man NC darf)
 - Virtual COM-Port Treiber mit AN220-Tool
 - Probierte Baudraten 28800, 115200 --> gleiches Resultat!

Hoffe es kann mir da jemand ein bisschen weiterhelfen!
MfG
Rolf

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.