Moin moin, auf dem STM32l Discovery board habe ich einen Virtual Com Port über USB implementiert. Wie kann man erkennen, ob sich ein Terminal/Programm auf dem PC mit dem Com Port verbunden hat. Nur anhand von gesendeten Daten (PC->Board) ? lg Garag
Dirk B. schrieb: > Nur anhand von gesendeten Daten > (PC->Board) ? Wenn du Hardware-Datenflusskontrolle einstellst, werden die Steuerleitungen gesetzt. mfg.
Wo willst du das sehen? Auf PC oder uC Seite? Auf der PC Seite könntest du einfach versuchen den besagten Port noch ein mal zu öffnen. Wenn es einen Fehler gibt, ist er durch ein anderes Programm belegt.
Dirk B. schrieb: > Terminal/Programm Meist bleibt die ganze Menüstruktur/Parsermimik etc. noch inaktiv, das gilt auch für Teile innerhalb des RX-Interrupts. Angeschaltet wird das ganze dann z.B. mit der Enter-Taste als "magic byte", worauf ein Flag gesetzt wird o.ä. Somit bleibt genug Zeit für den "Alltag", wenn die Konsole nicht gebraucht wird. mfg mf
Ich würde das gerne auf der uC Seite erkennen. Es gibt ja den CDC Class Request "SetControlLineState" womit z.B. DTR gesetzt werden kann. Nur leider wird das wohl nicht automatisch beim Öffnen des Com Ports gesendet. Ich wollte halt ungerne ständig Daten an den PC senden obwohl niemand die Daten abholt. Es bleibt natürlich die Möglichkeit, dass über das Protokoll zu regeln. Gruß Garag
Hallo, ein Terminalprogramm tut garnichts, solange du nicht eine Taste drückst, das ist absichtlich so. Wenn du aber ein eigenes Protokoll fährst, must du dir eh Gedanken über die Initialisierung machen, da kannst du entweder den PC oder dein Gerät ein Anfrage-Zeichen bzw. Sequenz senden lassen, aber dazu brauchst du eben eigene Software, mit einem Terminalprogramm ist sowas wenn überhaupt möglich dann sehr mühsam (ganz besonders bei binären Daten, ich verwende daher nur noch ASCII-Protokolle). Manche Programme zum Datenempfang, die Xon/Xoff verwenden, senden nach dem Start solange etwa alle Sekunde ein Xon, bis Daten kommen oder das Programm wieder beendet wird, das ist so etwa die einfachste Möglichkeit für einen "Autostart" beim Zusammenstecken. Gruss Reinhard
Hey leutz, ich möchte bei mir auf meinem stm32l discovery einen Virtuellen com Port einrichten und finde im Internet keinen fertigen Code dafür :/ Könnte mir die Jemand zu verfügung stellen?? Wäre sehr dankbar dafür. gruß
Hallo abudhabi, von ST gibt es eine USB Lib mit Beispielen. Zu den Beispielen gehört auch eine Virtual Com Port Demo. Die Lib verwendet die standard Lib von ST. Da ich die Standard Libs nicht sonderlich mag und gerne direkt mit der Hardware arbeite, habe ich mir eine eigene VCP implementierung geschrieben. Vom Prinzip her läuft das auch, jedoch wird kein Suspend unterstützt und der Empfang von Daten (uC Seite) könnte durchaus noch eine Überarbeitung vertragen. Schau dir am besten erstmal die Sachen von ST an. Gruß Garag
Hey, Danke für deine Antwort. Ich habe auf der Website von st (http://www.st.com/internet/mcu/product/248820.jsp) die verpackte Datei "STM32F10x and STM32L1xx USB full-speed device library" runtergeladen. Ich arbeite mit der Software µKeil...ich versuche seit 2 Tagen den Virtual Comport zum laufen zu bringen und es klappt einfach nicht. Als erstes ist da kein Code für den stm32l discovery, deshalb habe ich die für stm32-eval genommen. Liegt der Fehler schon da??? Die Software Compiliert und ich kann es flashen doch sehe ich keine Com Verbindung mit dem computer O.o... Sollte ich an dem Code noch was machen?? Ich habe bis jetzt leichte programme geschrieben und die Verbindung zwischen PC und µC übersteigt mein wissen :/ Ich wäre für hilfe sehr dankbar! gruß abuhabi
Passiert denn wenigstens irgendetwas auf dem PC, wenn du deinnen STM32 an den USB dransteckst? Meines Wissens gibt es für virtuelle COM-Ports keine Standardlösung wie für Mäuse, Massenspeicher usw. so daß jeder Hersteller irgendwo dann doch sein spezielles Süppchen kocht. W.S.
> Meines Wissens gibt es für virtuelle COM-Ports keine Standardlösung wie > für Mäuse, Massenspeicher usw. so daß jeder Hersteller irgendwo dann > doch sein spezielles Süppchen kocht. Wieso? Ein VCP gehört zur CDC-Klasse. Dass FTDI beispielsweise einen eigenen Treiber anbietet liegt m.E. eher an deren Treibermodell mit der Möglichkeit den Chip sowohl als COM-Port ansprechen zu können als auch über eine DLL Zugriff zu haben. Ein weiterer Grund ist, dass die usbser.sys (also die vom OS bereitgestellte VCP/CDC-Treiberdatei) von Windows nicht das gelbe vom Ei ist und daher werden sich die meisten Hersteller wohl selbst was schreiben. Ich habe für eine 8-Bit-MCU mit USB VCP-Implementierungen gesehen, die keinen eigenen Treiber benötigten, lediglich die passende INF-Datei. Ralf
ich bekomme keinen virtual comport im geräte manager angezeigt sondern den Standart stm32 usb anschluss...
> ich bekomme keinen virtual comport im geräte manager angezeigt sondern > den Standart stm32 usb anschluss... Wo hast du USB angeschlossen? Ralf
Ich habe es an PA0 und PA1 angeschlossen..in der docu steht USART2...
> Ich habe es an PA0 und PA1 angeschlossen..in der docu steht USART2...
Wat? Moment, nochmal von vorn... Du hast eine VCP-Firmware auf den
Controller geschubst, richtig?
Welche USB-Schnittstelle des Boards verwendest du? Soweit ich sehen
kann, ist eine Buchse vorhanden, die sieht mir aber stark nach der für
den on-board-Programmer/Debugger aus. Weitere USB-Anschlüsse bzw. -kabel
müsstest du also selber dranlöten.
Und sicher nicht USB-Kabel an USART2, denn ein U(S)ART ist kein
USB-Anschluss.
Ralf
Ich hab mich mit PA0 und PA1 vertan..PA11 und PA12 habe ich genommen. Ich bekomme als meldung das ein unbekanntes USB gerät angeschlossen ist, obwohl die treiber software installiert ist...??? Kann ich auf stm32l discovery die Software vom stm32l Eval benutzen?? Auf der St seite ist für meinem µC diese Software gegeben...:/ abudhabi
> Ich hab mich mit PA0 und PA1 vertan..PA11 und PA12 habe ich genommen. Okay, hab jetzt nicht geguckt, ob das die USB-Schnittstelle ist, ... > Ich bekomme als meldung das ein unbekanntes USB gerät angeschlossen ist, ... aber das hört sich danach an :) > obwohl die treiber software installiert ist...??? USB Vendor- und Product-ID stimmen mit dem Treiber überein? > Kann ich auf stm32l discovery die Software vom stm32l Eval benutzen?? > Auf der St seite ist für meinem µC diese Software gegeben...:/ Prinzipiell würde ich sagen ja, allerdings würde ich vorher prüfen, was die Eval-Firmware macht (LEDs ansteuern, etc.) und vergleichen, ob die Ports bei dir ebenfalls auf LEDs gehen. Damit verhinderst du, dass was abraucht, wenn ansonsten ein Ausgang auf einen Ausgang gelegt würde. Alternativ die Eval-Firmware soweit runterstrippen, dass nur noch der relevante VCP-Teil (den willst du ja) vorhanden ist. Ralf
Hey, die USB Vendor und Product-ID bei dem virtuellen com port ist: (Programm USBView) idVendor: 0x0000 idProduct: 0x0000 Alle anderen Werte werden auch als 0 gezeigt. Ich habe die xx.inf datei vom Com port Treiber geändert und neu installiert, hat leider immer noch nichts gebracht. Es wird immer noch als Unknown Device gezeigt...Ich nehme an der Fehler liegt am Code?? abudhabi
hey @all, mit der hilfe von einem Kumpel habe ich es endlich geschafft das problem zu lösen...ich stelle gerne meinen Code zur Verfügung wenn gewünscht! Da ich nur als gast angemeldet bin werde ich gelegentlich auf der Seite vorbeischauen, d.h. wer meinen Code für den stm32l discovere VCP möchte kann hier schreiben und ich schicke den Code weiter..... Danke für die leute die mir hier hilfen wollten :) abudhabi
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.