USB OTG COM-Port Emulation

Sep 20, 2019 4 Replies
Jump to replies (4)

Hi,



ich hab hier ein Mikrocontroller-System, das eine normale USB-Schnittstelle (CP2102) hat. Ich moechte dieses nun mit einem zweiten Controller verbinden (z.B. STM32 mit einer USB OTG Schnittstelle) und dann zwischen beiden Daten seriell austauschen. Klappt sowas prinzipiell? Kann USB-OTG einen COM-Port emulieren?



(Klar, es waere natuerlich einfacher, das Client-System haette die gute alte RS232; hat es aber nicht ;-(.



M.



--


Am 20.09.19 um 08:06 schrieb Matthias Weingart:

Ja.

Nein. Die USB-Hardware des Controllers stellt nur die Übertragungsschicht (OSI Layer 1) zur Verfügung.

Die darüber liegenden Protokollschichten von der Transportsicherung über das Auffinden angeschlossener Geräte und das Initialisieren des CP2102 bis hin zur gewünschten COM-Emulation musst du selbst programmieren. Wenn du auf dem Zielsystem kein fertiges Betriebssystem (z.B. Linux) hast, was das für dich übernimmt, ist das ein beachtliches Stück Arbeit.

Wenn da ein CP2102 drin steckt, ist dieser über eine normale UART-Schnittstelle mit dem Microcontroller verbunden. Falls es sich um ein Einzelstück handelt, ist es wesentlich einfacher, den CP2102 auszulöten und sich direkt an diese Schnittstelle zu hängen.

Hergen

Im Arduino-Universum gibt es "Software Serial", d.h. die Verwendung beliebiger zweier GPIO-Pins um einen UART per Software zu emulieren. Sowas wäre für dich nicht vorstellbar?

/ralph

Hergen Lehmann snipped-for-privacy@snafu.de:

Mhh, Fazit also: einen Controller suchen, für den es ein (möglichst kleines) Betriebssystem gibt, das einen CP2102 Treiber eingebaut hat. Wobei das zugrundeliegende CDC (modem emulation) ja eigentlich mehr oder weniger "genormt" sein sollte (braucht wohl 3 USB-Endpoints) und sich da die Anpassung womöglich bloss auf die Anpassung der USB-ID's (vendor-Id usw) beschränken sollte(???). Was mich auch noch zu dem Punkt bringt: es muss ja auch noch nicht mal OTG sein, USB Host reicht ja auch.

Seufz - ja wenn es so einfach wäre :-).

M.

--

Am 20.09.19 um 10:03 schrieb Matthias Weingart:

Leider nein. Die eigentliche Datenübertragung ist einheitlich, aber für die Initialisierung des Chip (Baudrate/etc) kocht jeder Hersteller sein eigenes Süppchen. Zum Glück gibt es nicht allzu viele Anbieter am Markt, so das eine Handvoll Treiber reichen.

Ja, natürlich. Im Prinzip ist USB-OTG ohnehin nur ein USB-Host mit einer zusätzlichen Signalisierungsleitung, welche anzeigt, ob/wann die Versorgungsspannung an die Buchse gelegt werden darf.

Hergen

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required