Hallo Mikrocontroller-Gemeinde! Ich müsste für ein Projekt einen 2D-Laserscanner von einem STM32F407 ARM-Controller per USB auslesen lassen. Das Übertragungs-Protokoll des Scanners (URG-04LX-UG01) nennt sich Scip 2.0 und erfolgt durch Senden und Empfangen einzelner Character (ähnlich UART). http://www.hokuyo-aut.jp/02sensor/07scanner/download/data/URG_SCIP20.pdf Von daher scheint die Kommunikation einfach. Allerdings habe ich noch nie eine USB-Kommunikation implementiert und die library-Files die ich im Internet zu USB am STM32 gefunden habe, scheinen mir sehr komplex. Ist es bei USB nicht möglich, einfach einzelne Zeichen nacheinander auszugeben und einzulesen ähnlich wie bei UART, oder brauche ich dazu wirklich all diese Host-Controller-Treiber usw.?
Stackpointer schrieb: > oder brauche ich dazu > wirklich all diese Host-Controller-Treiber usw.? Ganz kurz: JA!
> brauche ich dazu wirklich all diese Host-Controller-Treiber usw.? Virtual comport wär das einfachste aber Treiber und den ganzen Device Controller Kram (Konfiguration) brauchst du trotzdem auf dem STM32. Wenn du dich an den USB-Standart für Virtuelle com ports hältst brauchst du den Host-Controller-Treiber (Kernel) nicht auf dem PC selber zu machen und kannst z.B. den Windows internen benutzen.
Danke für die schnellen Antworten! > Virtual comport wär das einfachste aber Treiber und den ganzen Device > Controller Kram (Konfiguration) brauchst du trotzdem auf dem STM32. > Wenn du dich an den USB-Standart für Virtuelle com ports hältst brauchst > du den Host-Controller-Treiber (Kernel) nicht auf dem PC selber zu > machen und kannst z.B. den Windows internen benutzen. Windows-Treiber brauch ich nicht, ich will ja den STM32 mit dem Laserscanner verbinden, d.h. der STM32 ist der Host. Kommunikation zum PC erfolgt über UART. Virtuelle com-Ports sind ja für den PC, oder? Müsste ich die Treiber am STM32 speziell für den Laserscanner schreiben oder reicht da so ne Art "allgemeiner Treiber"? Als einzigen Anhaltspunkt dafür hab ich nen Windowstreiber des Scanners gefunden (siehe Anhang). Ist es überhaupt möglich, daraus einen C-Treiber zu entwickeln oder ist das sowieso zum Scheitern verurteilt?
Stackpointer schrieb: > Müsste ich die Treiber am STM32 speziell für den Laserscanner schreiben > oder reicht da so ne Art "allgemeiner Treiber"? Als einzigen > Anhaltspunkt dafür hab ich nen Windowstreiber des Scanners gefunden > (siehe Anhang). > Ist es überhaupt möglich, daraus einen C-Treiber zu entwickeln oder ist > das sowieso zum Scheitern verurteilt? Die INF-Datei im Anhang ist für einen virtuellen Seriellen Port unter Windows. Das SCIP-Protokoll wird über diese virtuelle serielle Schnittstelle gesprochen. Also wirst Du zuerst einen Treiber für die CDC-Klasse (virtuelle serielle Schnittstelle) schreiben dürfen. Hast Du schon mal geschaut, ob der Scanner nicht sogar eine "normale" serielle Schnittstelle hat? Viele Scanner haben beide Schnittstellen oder sind auch als Version mit RS232C zu bekommen. Unter Umständen ist es sinnvoller/preiswerter als da viel zu entwickeln.
Flansch doch einen Vinculum 2 dran. Für den gibt es eine Applicationnote, um einen CDC-Host aufzusetzen, der das CDC-Device auf einen UART mappt. Gruß Oliver
Da quält man sich mit USB Routinen rum, nur um dann damit einen popeligen UART-Port zu simulieren. ^^ Die Hardware ist aber schon im Haus und der Laserscanner hat leider nur USB. Ich schätze mal, ich brauche hierzu einen virtuellen COM-Host, also wirds mit den Treibern z.B. von http://www.mikrocontroller.net/articles/STM32_USB-FS-Device_Lib wohl nicht gehen, weil die ja für Kommunikation STM32 mit dem PC geschrieben wurden. Oder gibt es bei virtuellen COM-Ports gar keinen Host? @Oliver: Danke für die Info! Die Option mit dem Vinculum2 werd ich mir mal offen lassen. Muss ich beim virtuellen COM-Port Rücksicht auf das angeschlossene Gerät (Laserscanner) nehmen, oder ist dieses Protokoll geräteunabhängig?
http://www.ftdichip.com/Support/Documents/AppNotes/AN_183_Vinculum-II_UART_to_CDCModem_Host_Bridge.pdf Mit dem Code für den Vinculum2 müsste es also sofort funktionieren, ohne etwas am Code ändern zu müssen, d.h. ich kann die gesamte Kommunikation dann über den UART des STM32 abwickeln? Oder täusche ich mich?
Hier übrigens noch eine Device Description für den Laserscanner, die ich mit USB Device Viewer am PC erstellt hab.
Stackpointer schrieb: > Mit dem Code für den Vinculum2 müsste es also sofort funktionieren, ohne > etwas am Code ändern zu müssen, d.h. ich kann die gesamte Kommunikation > dann über den UART des STM32 abwickeln? Oder täusche ich mich? Das kann ich nicht beantworten, weil ich noch nichts mit den Vinculum zu tun hatte. Bestell dir doch einfach ein Dev-Kit und probier es aus. Gruß Oliver
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.