USB OTG COM-Port Emulation

M

Matthias Weingart

Guest
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:

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?

Ja.

> Kann USB-OTG einen COM-Port emulieren?

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.

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

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
 
Matthias Weingart <mwnews@pentax.boerde.de> wrote:
(Klar, es waere natuerlich einfacher, das Client-System haette die gute alte
RS232; hat es aber nicht ;-(.

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
--
-----------------------------------------------------------------------------
https://aisg.at
ausserirdische sind gesund
 
Hergen Lehmann <hlehmann.expires.5-11@snafu.de>:

Am 20.09.19 um 08:06 schrieb Matthias Weingart:

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?

Ja.

Kann USB-OTG einen COM-Port emulieren?

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.

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.

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

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.

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

M.
--
 
Am 20.09.19 um 10:03 schrieb Matthias Weingart:

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(???).

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.

Was mich auch noch zu dem Punkt bringt: es muss ja auch noch nicht mal OTG
sein, USB Host reicht ja auch.

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
 

Welcome to EDABoard.com

Sponsor

Back
Top