Hallo zusammen Ich möchte folgende serielle Verbindung realisieren: Smartphone -> Bluetooth Modul BTM-222 -> USBKEY2 -> CP2102 -> Elektronik Da der CP2102 in meiner Elektronik bereits verbaut ist, kann ich diesen nicht mehr ändern und bin hierbei gezwungen zur Kommunikation einen USB Host fähigen Mikrocontroller einzusetzen. Hierbei ist meine Wahl auf das USBKEY2 Kit von Atmel gefallen, da es hierzu eine Application Note "AVR280: USB Host CDC Demonstration" von Atmel gibt und das zugehörige Softwarebeispiel. Mein Problem liegt nun darin, dass der CP2102 bei der Enumeration sich mit nur 2 Endpoints meldet: Endpoint0 IN Bulk Endpoint1 OUT Bulk Class ist 0xFF für Vendor Device SubClass ist 0x00 Protokoll ist 0x00 -> die Verbindung funktiniert nicht, da das Softwarebeispiel 3 Enpoints erwartet! Wenn ich meine Prolific USB UART Bridge an USBKEY anschließe, meldet sich diese mit 3 Endpoints: Endpoint0 IN Interrupt Endpoint1 OUT Bulk Endpoint2 IN Bulk Class ist 0xFF für Vendor Device SubClass ist 0x00 Protokoll ist 0x00 und die Verbindung funktioniert einwandfrei! Es fehlt beim CP2102 der Interupt Endpoint. Hatte vielleicht schon jemand das gleiche Problem oder kann mir jemand den Schubs in die richtige Richtung geben?
Der CP2102 dürfte kein CDC sein, wie es auch FT232 und Co. nicht sind. AFAIK ist die einzige USB-Seriell-Bridge, die sich tatsächlich als CDC verkauft, irgendwas von Microchip. Hast Du die Enumeration mal unter Windows mit einem USB-Sniffer untersucht?
Naja, dann dürfte das Problem sein, daß das Softwarebeispiel mit einem CDC reden will, Deine UART-USB-Bridge aber eben kein CDC ist, sondern ein anderes, proprietäres Protokoll einsetzt. Wie ich schon schrieb, praktisch keine der üblichen USB-Seriell-Bridges (ob von TI, FTDI, SiLabs, Prolific etc.) verwendet das CDC-Protokoll, das tut nur* der MCP2200 von Microchip (http://www.microchip.com/wwwproducts/devices.aspx?dDocName=en546923) und natürlich V-USB/CDC. Was genutzt wird, kannst Du erkennen, indem Du Dir die vom Hersteller gelieferten USB-Treiber für Windows ansiehst. Ist das mehr als eine simple *.inf-Datei, wird mit sehr hoher Wahrscheinlichkeit ein proprietäres, nicht-CDC-Protokoll verwendet. *) natürlich will ich nicht ausschließen, daß es so etwas nicht vielleicht doch auch von einem anderen Hersteller geben kann.
Ist nur komisch das meine Prolific USB Bridge die ich oben beschrieben habe funktioniert. Naja ist wohl eben dann ein CDC Device, weil Sie eben auch 3 Endpunkte hat. Schade, wäre ja auch zu einfach gewesen! VIELEN DANK für deine Antwort Rufus!
ok Uwe dann lass mal deinen Lösungsansatz hören denn deine Aussage bringt mich jetzt nicht unbedingt weiter
Hallo Hans, Schau dir mal das Dokument an: http://www.silabs.com/Support%20Documents/Software/USB_Overview.pdf Wenn ich das nicht ganz falsch verstehe steht da deutlich das die USB/UART Bridges Virtual Com Ports Treiber verwenden. Das CDC Beispiel (Appendix ab Seite 60) ist leider ausdrücklich für die Silab MCU's gedacht. Ein kleines Konfigurationstool und zusätzliche Informationen zu den CP210x ist hier mit dabei (kennst du wahrscheinlich schon): http://silicon-laboratories-usbxpress-developme.software.informer.com/ Gruß Bernhard
P.S. Damit will ich sagen das ich nicht glaube das CDC mit den CP210x funktionieren kann. „Requires no firmware or driver development“ S.54, heißt leider auch: ist nicht möglich.
Hat irgendjemand vielleicht ne andere Idee wie ich die Verbindung zwischen Smartphone und CP2102 realisieren kann? Am besten natürlich kabellos!
Du wirst schon den CP2102 nutzen können, nur wirst Du anstelle der CDC-Ansteuerung das Ding auf seine vom Hersteller vorgegebene proprietäre Weise ansteuern müssen. Wie das geht, solltest Du den Linux-Treibersourcen entnehmen können.
Ok das würde ich gerne tun. Mir fehlt jetzt irgendwie der Einstieg. Wo finde ich denn die Linux Treibersourcen? Bin dir wirklich für jeden Tipp dankbar.
Hans Dampf schrieb: > Wo > finde ich denn die Linux Treibersourcen? Vermutlich bei kernel.org bzw. github. Kurzes Durchblättern, ich denke, das hier ist er: http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=blob;f=drivers/usb/serial/cp210x.c;h=edc0f0dcad8378f4298d68815d2935404d8fedac;hb=HEAD
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.