Serielle Kommunikation zwischen zwei MCUs

OP #6816117
Lesenswert?

Hallo liebe Experten,

ich möchte Logdaten, die eine Teensy-Applikation generiert, mit einem 
ESP32 weiterverarbeiten. Die Daten werden über die USB-Schnittstelle des 
Teensy ausgegeben.

Was ist die einfachste Möglichkeit, da eine Kommunikation hinzukriegen? 
USB-Hub und auch den ESP über die USB-Schnittstelle anschließen? 
USB-UART-Adapter und eine serielle Schnittstelle des ESP verwenden? Ganz 
praktisches Problem bei letzterer Lösung: die Adapter haben in aller 
Regel USB Typ A-Stecker, genau wie das micro-USB Kabel, das im Teensy 
steckt. Brauche ich dann einen Hub? Der Adapter muss ja auch versorgt 
werden 🤔

Freu mich über jede Hilfe,
Keith
Gast #6816127
Lesenswert?

Keith S. schrieb:
> Was ist die einfachste Möglichkeit, da eine Kommunikation hinzukriegen?
> USB-Hub und auch den ESP über die USB-Schnittstelle anschließen?
> USB-UART-Adapter und eine serielle Schnittstelle des ESP verwenden? Ganz
> praktisches Problem bei letzterer Lösung: die Adapter haben in aller
> Regel USB Typ A-Stecker, genau wie das micro-USB Kabel, das im Teensy
> steckt. Brauche ich dann einen Hub? Der Adapter muss ja auch versorgt
> werden 🤔

Du brauchst einen USB-(CDC-)Host (bzw. OTG-Funktionalität) in einem der 
Controller.
Also einen weiteren Controller, der diese Funktion zur Verfügung stellt, 
und dann die Daten an den ESP weiterleitet.

Sowas zum Beispiel:
https://www.hobbytronics.co.uk/usb-host-board-v24?search=USBHOST
OP #6816137
Lesenswert?

Danke für die Info! Meinst Du sowas könnte funktionieren, wenn ich 
direkt mit dem micro-USB Stecker in den ESP gehe? Wäre eine schöne 
Lösung, weil keine UART-Pins kontaktiert werden müssen. Nur: wer 
versorgt dann den Adapter?

Rankie USB-OTG Adapter für Smartphones, Handy und Tablet, Micro USB 
Anschluss, 3 Stück, Schwarz 
https://smile.amazon.de/dp/B00YOX4JU6/ref=cm_sw_r_apan_glt_i_CHV5XFC80B9BSTR060N7
Gast #6816142
Lesenswert?

Keith S. schrieb:
> Meinst Du sowas könnte funktionieren, wenn ich
> direkt mit dem micro-USB Stecker in den ESP gehe?

Nein, das wird so nicht gehen. Einer der beiden Mikrocontroller braucht 
ein USB-Host interface. Das haben aber beide nicht. Und selbst wenn es 
so wäre, bräuchtest du dann auch noch auf dem Host einen Treiber der zur 
USB-Seriell Emulation des anderen Boardes passt.
Gast #6816159
Lesenswert?

Keith S. schrieb:
> Ok, aber ich müsste dann die Applikation auf dem Teensy verändern, oder?

Ja.

Vor allem brauchst du auf beiden Seiten neben den USB Treibern auch 
US-Seriell Emulationen die paarweise zusammen passen. Am PC brauchst du 
ja auch zusätzlich zum USB Treiber noch einen für die serielle Port 
Emulation.

An deiner Stelle würde ich dieses Fass gar nicht auf machen, sondern 
anstelle des ESP32 einen Raspberry Pi (oder ähnlich) verwenden.
OP #6816164
Lesenswert?

Stefan ⛄ F. schrieb:
> Keith S. schrieb:
>> Ok, aber ich müsste dann die Applikation auf dem Teensy verändern, oder?
>
> Ja.
>
> Vor allem brauchst du auf beiden Seiten neben den USB Treibern auch
> US-Seriell Emulationen die paarweise zusammen passen. Am PC brauchst du
> ja auch zusätzlich zum USB Treiber noch einen für die serielle Port
> Emulation.
>
> An deiner Stelle würde ich dieses Fass gar nicht auf machen, sondern
> anstelle des ESP32 einen Raspberry Pi (oder ähnlich) verwenden.

Das würde ich auch gerne vermeiden... Komplizierter als gedacht, schön, 
dass einem das hier zumindest so schnell klar gemacht wird 😉

Andere Idee: die Daten, die der Teensy über die USB-Schnittstelle 
ausgibt, kann man die vielleicht "vorher" über ein Uart-Interface 
abgreifen? Ist nicht die USB-Schnittstelle über ein onboard 
UART/USB-Interface realisiert?
Gast #6816175
Lesenswert?

Keith S. schrieb:
> die Daten, die der Teensy über die USB-Schnittstelle
> ausgibt, kann man die vielleicht "vorher" über ein Uart-Interface
> abgreifen?

Wo denn? Willst den Chip aufsägen um den Inhalt eines Pufferbereiches im 
RAM mit Nadeln ab zu greifen? Ohne Softwareänderung wird das nichts.

> Ist nicht die USB-Schnittstelle über ein onboard
> UART/USB-Interface realisiert?

Nein, nicht bei Teensy Boards.

Informiere dich doch erstmal vorher über grundsätzlichen Eigenschaften 
der Produkte, bevor du Änderungen planst.
OP #6816184
Lesenswert?

> Informiere dich doch erstmal vorher über grundsätzlichen Eigenschaften
> der Produkte, bevor du Änderungen planst.

Mache ich doch gerade 😉 Nix für ungut, hast ja Recht, ich danke Euch für 
die schnelle Hilfe!

Ich gebe dem von "STK500-Besitzer" empfohlenen Adapter mal ein Chance, 
denke ich.
Gast #6816190
Lesenswert?

Keith S. schrieb:
> Was ist die einfachste Möglichkeit, da eine Kommunikation hinzukriegen?

Indem du USB USB sein lässt und die Daten über eine andere Schnittstelle 
des Teensies ausgibst.
Um welchen Teensy handelt es sich und was ist das für eine 
"unanfassbare" Teensy-Applikation?
Gast #6816192
Lesenswert?

Stefan ⛄ F. schrieb:
> Bleibt als nur das CDC Protokoll. Nun die Gretchenfrage: Nutzt dein
> Teensy das CDC Protokoll?

An einem Barcode-Reader funktionierte es z.B. leider nicht, ist immer 
etwas Glückssache, ob die CDC-Implementation funktioniert. In meinem 
konkreten Fall konnte ich den Umweg über HID-Keyboard nehmen, den auch 
jeder Barcode-Reader beherrscht.
Gast #6816199
Lesenswert?

Stefan ⛄ F. schrieb:
> Bleibt als nur das CDC Protokoll. Nun die Gretchenfrage: Nutzt dein
> Teensy das CDC Protokoll?

Das sollte sich doch herausfinden lassen, wenn man es an einem PC 
anschließt.

Das Adapter verwenden wir in der Firma um Netzteile anzusteuern, für die 
es zwar auch eine (optionale) RS232-Schnittstelle gibt, die im Gegensatz 
zu dem Hobbytronics-Adapter unverschämt teuer ist.

Wenn ich wüsste, um welche Teensy-Applikation es sich handelt (Hardware 
+ Software), könnte ich den Aufbau auch mal testen (wobei ich dazu erst 
mal ein Teensy bräuchte...).
Gast #6816211
Lesenswert?

Harald schrieb:
> An einem Barcode-Reader funktionierte es z.B. leider nicht, ist immer
> etwas Glückssache, ob die CDC-Implementation funktioniert. In meinem
> konkreten Fall konnte ich den Umweg über HID-Keyboard nehmen, den auch
> jeder Barcode-Reader beherrscht.

Barcodereader treten ja auch eher als HID auf.
Die seriellen sind doch so gut wie ausgestorben.

Harald schrieb:
> Hobbytronics ist closed-source und Du musst den Controller von denen
> kaufen

Der Schaltplan liegt offen:
https://www.hobbytronics.co.uk/datasheets/ht/usb%20host%20v2_3.pdf

Es ist ein PIC24FJ64GB002 mit Hühnerfutter.
Unser Steuercontroller hat zwar schon zwei USB-OTG-Kanäle, aber wir 
brauchten mehr. Deswegen der externe UART-USB-CDC-Konverter.

Man könnte natürlich auch den Weg über einen MAX3421E (am ESP) gehen:
https://www.arduino.cc/reference/en/libraries/usb-host-shield-library-2.0/

Ob das mit dem ESP funktioniert, weiß ich nicht.
Ich habe es nur mit einem Arduino UNO (oder sowas) und einem 
Gamecontroller erfolgreich getestet.
Gast #6816233
Lesenswert?

STK500-Besitzer schrieb:
> Barcodereader treten ja auch eher als HID auf.
> Die seriellen sind doch so gut wie ausgestorben.

Das kann man so nicht sagen, es gibt verschiedene Anwendungsszenarien in 
der Industrie. Und weil es die gibt, kann man jeden handelsüblichen 
professionellen Reader mittels Barcodes aus dem Handbuch sehr einfach 
auf den Bedarf parametrieren. Baudraten oder Codetables bei Keyboard 
etc.
Gast #6816238
Lesenswert?

Harald schrieb:
> Das kann man so nicht sagen, es gibt verschiedene Anwendungsszenarien in
> der Industrie. Und weil es die gibt, kann man jeden handelsüblichen
> professionellen Reader mittels Barcodes aus dem Handbuch sehr einfach
> auf den Bedarf parametrieren. Baudraten oder Codetables bei Keyboard
> etc.

Da gebe ich dir Recht.
Unsere waren standardmäßig HIDs.
Dass man USB-Geräte auch "umprogrammieren" kann, sollte 
selbstverständlich sein.
Im Falle des Teensy sollte sich die USB-KLasse per Windows 
Geräte-Manager oder per lsusb etc. feststellen lassen.
Gast #6816244
Lesenswert?

STK500-Besitzer schrieb:
> Im Falle des Teensy sollte sich die USB-KLasse per Windows
> Geräte-Manager oder per lsusb etc. feststellen lassen.

Wenn er partout nicht ran kann oder will muss er halt auf die CDC 
Implementation hoffen (Hobbytronics) oder den etwas steinigeren Weg über 
den CH559 gehen. Der MAX3421 mag auch funktionieren, dazu kann ich aber 
nichts sagen.

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