Guten Tag zusammen! Ich arbeite zur Zeit an einem Projekt an dem ich nicht weiter komme und Hilfe brauche. Zunächst einmal würde ich gerne wissen, ob mein Ansatz richtig ist bzw. ob es überhaupt so funktionieren kann. (BILD) Situation: Ich habe eine ECU, welche über ein Terminalprogramm z.B. hTerm ansteuerbar ist. Wenn ich einen Befehl sende, z.B. eine Temperaturabfrage, geschieht dies über string befehle. Empfangen wird die Antwort auch als String. Konfiguration: 9600 kBaud, 8N1, kein flow-control. Da ich auch einen Computer verzichten muss, möchte ich dies Über einen Mikrocontroller lösen. Hierzu habe ich ein STM32F767ZI gewählt. Die ECU verfügt über einen männlichen USB-A anschluss, an welchen ich eine USB weiblich-weiblich Kupplung angeschlossen habe. An diese wiederrum habe ich einen "DSD TECH SH-U09C5 USB zu TTL UART Konverterkabel mit FTDI Chip Unterstützung" oder alternativ "Paradisetronic.com USB-UART-Wandler-Kabel, Serielle Schnittstelle/TTL zu USB, CP2102 USB Serial Converter" angeschlossen und dieser mit den UART Pins am Mikrocontroller. Soweit ich weiß, hat die ECU einen FTDI Chip, da ein FTDI treiber von Windows beim anschließen installiert wird. Problem: Bisher konnte ich jedoch nichts empfangen, ob das Senden geklappt hat weiß ich leider auch nicht, da die ECU keine Anzeige hat. Über hTerm am PC kann ich senden und empfangen. Meine Fragen nun: Ist es so, wie ich es mir vorstelle, überhaupt möglich? Wenn nein, welche Möglichkeit gäbe es? Muss ich irgendwelche FTDI Bibliotheken nutzen? Nehme auch gerne Tipps für ein gutes Buch! Ich bin für JEDEN Hinweis / Tipp dankbar!
Denis schrieb: > Ich arbeite zur Zeit an einem Projekt an dem ich nicht weiter komme und > Hilfe brauche. Dazu müßtest du dein Projekt mal etwas weniger konfus darstellen. So, wie ich das im Moment sehen, besteht dein Projekt aus einer analogen Meßschaltung (oder mehreren), deren Wert(e) per ADC gelesen und auf einem Display angezeigt werden soll(en). Ist das die eigentlich angezielte Funktion? Wenn ja, dann nimm irgend einen µC, bau ein Display dran und bau den ADC dran (wenn es die gewünschte Auflösung erfordert) oder nutze den im µC enthaltenen ADC. Das wäre alles - vorausgesetzt, das ist dein eigentliches Anliegen. W.S.
Denis schrieb: > Ich bin für JEDEN Hinweis Für USB benötigst du einen Host und ein Device. USB ist keine einfache gleichberechtigte peer to peer verbindung wie UART. Ist eins deiner Geräte überhaupt in der Lage die Funktionen des Host zu übernehmen?
Denis schrieb: > Problem: Bisher konnte ich jedoch nichts empfangen, ob das Senden > geklappt hat weiß ich leider auch nicht, da die ECU keine Anzeige hat. > Über hTerm am PC kann ich senden und empfangen. Wenn es ein STM Board wie auf dem Bild ist, stehen dir aber LEDs zur Verfügung. Mit denen kannst du sehr wohl checken, ob Befehle ankommen. :-)
Irgend W. schrieb: > Ist eins deiner Geräte überhaupt in der Lage die Funktionen des Host zu > übernehmen? Denis schrieb: > STM32F767ZI Hat Host-Funktionalität... Trivial ist das aber nicht, wenn man nicht mal die Grundlagen von USB kennt. ==> Googlen
Irgend W. schrieb: > Für USB benötigst du einen Host und ein Device. USB ist keine einfache > gleichberechtigte peer to peer verbindung wie UART. Das ist vielleicht auch schon das Problem. Über die ECU weiß ich leider sehr wenig und die USB-UART Adapter bieten keine Host-Funktion soweit ich das sehe. Kennt hier jemand vielleicht ein gutes Produkt mit welchem ich zwischen USB und UART Daten in beide Richtungen übertragen kann? W.S. schrieb: > Dazu müßtest du dein Projekt mal etwas weniger konfus darstellen. Tut mir leid für die "konfuse" Darstellung. Das was ich beschrieben habe, ist nur ein sehr kleiner Teil eines größeren Projekts. Ich benötige die Daten der ECU zwecks Weiterverarbeitung. Die Ausgabe auf dem LCD dient nur der Kontrolle. Die Sensoren und Aktoren, welche an der ECU angeschlossen sind, müssen dort auch bleiben, weil ich den Regler nicht verändern möchte. Leider hatte ich bisher noch keinen Fall, bei welchem ich auf diese Weise Daten übertragen musste und habe deswegen leider keine Ahnung...
Denis schrieb: > Kennt hier jemand vielleicht ein gutes Produkt mit welchem > ich zwischen USB und UART Daten in beide Richtungen übertragen kann? https://www.hobbytronics.co.uk/usb-host-board-v24
Das klappt so nicht. Solche USB-Female-Female-Adapter sind von USB nicht vorgesehen und vermutlich nur für sehr spezifische Anwendungen möglich. Die einfachste Lösung wäre einen SBC (z.B. Raspberry PI) mit Linux zu verwenden und direkt per USB mit der ECU zu verbinden und statt des STM32F7 zu verwenden. Die zweiteinfachste Lösung wäre es die ECU zu öffnen, die Verbindung zwischen FTDI-Chip und MCU zu trennen und stattdessen mit dem STM32 zu verbinden. Die dritteinfachste Lösung wäre es einen FTDI Vinvulum II zu verwenden, um als USB-Host zu fungieren und das FTDI-Protokoll wieder zurück auf Seriell umzusetzen. Das wäre äquivalent zum Hobbytronics-USB-Host-Board. Mit großem Abstand kommt dann die Variante, das FTDI-USB-Protokoll auf dem STM32F7 als USB-Host zu implementieren (und dabei z.B. den Linux-Treiber als Inspiration zu verwenden) und ECU und STM32F7 direkt zu verbinden.
Niklas G. schrieb: > Die einfachste Lösung wäre einen SBC (z.B. Raspberry PI) mit Linux zu > verwenden und direkt per USB mit der ECU zu verbinden und statt des > STM32F7 zu verwenden. Danke, daran habe ich auch schon einmal gedacht. Werde ich erstmal damit versuchen und die Abfragen automatisieren.
Niklas G. schrieb: > Die zweiteinfachste Lösung wäre es die ECU zu öffnen, die Verbindung > zwischen FTDI-Chip und MCU zu trennen und stattdessen mit dem STM32 zu > verbinden. Je nachdem wie leicht sich das Ding öffnen lässt, ob es akzeptabel ist die Garantie zu verlieren und je nach interner UART Datenrate könnte man auch einfach ein fertiges Modul verwenden (z.B. EP-20) um von UART auf z.B. UDP umzusetzen. Dann hätte man es direkt im Netzwerk. Allerdings ohne Display dann. Niklas G. schrieb: > Die einfachste Lösung wäre einen SBC (z.B. Raspberry PI) mit Linux zu > verwenden und direkt per USB mit der ECU zu verbinden und statt des > STM32F7 zu verwenden. Wäre auch meine erste Wahl. Zumindest wenn es abgesetzt sein soll. Leicht umzusetzen und trotzdem hat man alle Möglichkeiten. Wenn WLAN geht, könnte man sich auch den Raspi W überlegen. Der ist kleiner als dein eingezeichnetes Display.
...evtl könnte dir folgendes weiterhelfen: stm32 als USB cdc host https://controllerstech.com/usb-cdc-device-and-host-in-stm32/ Ich schätze das dein Gerät eine USB CDC node darstellt und dafür bräuchtest du als "Gegenstück" auf deinem stm32 einen USB Host welcher mit dem CDC Zeug umgehen kann (so wie es ein PC machen würde). Somit könntest du auf einen USB seriell Adapter verzichten. Aber evtl irre ich mich da auch und das tutorial habe ich jetzt selber auch nicht ausprobiert.
Christian G schrieb: > Ich schätze das dein Gerät eine USB CDC node darstellt Nein, die FTDI-Chips machen kein USB-CDC-ACM sondern ein proprietäres Protokoll.
Niklas G. schrieb: > Nein, die FTDI-Chips machen kein USB-CDC-ACM sondern ein proprietäres > Protokoll. schade, ok war auch irgendwie zu erwarten.... Einen eigenen host Treiber ala https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ftdi_sio.c , https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ftdi_sio.h zu basteln und darauf zu hoffen das es funzt ist wahrscheinlich den Aufwand auch nicht wert.
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.