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
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
Um Handshakeprobleme zu vermeiden, einfach RTS mit CTS und DCD mit DTR sowie DSR verbinden. Dann noch einen Pullup an /RST um sicherzugehen.
- 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.
_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
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.
@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! :)
@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!
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!
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.