CP2102 USB-RS232 Einfach-Beschaltung?

Gast #263079
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
Gast #263081
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
#263083
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.
Gast #263084
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
Gast #263085
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.
Angehängte Dateien:
Gast #263086
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! :)
Gast #263088
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!
#263089
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
Gast #263090
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

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