Sie müssen die Gerätestapel als CDC ACM-Gerät (auch als Virtual COM Port oder VCP bekannt) implementieren. Die meisten Hersteller von Mikrocontrollern mit USB-Unterstützung haben Beispielcode oder App-Notizen.
Vor diesem Hintergrund sieht Ihr Gerät für Windows wie ein COM-Port aus. Auf der Seite des Geräts erhalten Sie rohe Datenblöcke, die übertragen werden. Eine geeignete Abstraktionsschicht kann sowohl für UART- als auch für USB-Schnittstellen implementiert werden, um dann bei Bedarf dieselbe Schnittstelle bereitzustellen.
Ein Problem besteht darin, dass USB-Geräte eine vom USB Implementer's Forum zugewiesene Hersteller-ID benötigen, unter $5000 fee (korrekt am 23. Januar 2016). Wenn Sie Ihr Gerät in der freien Natur freigeben, benötigen Sie eines, wenn Ihr Gerät erkannt werden und sich mit anderen Geräten korrekt verhalten soll. Bei einigen Mikrocontroller-Anbietern können Sie die Hersteller-ID für eine Teilmenge von Produkt-IDs kostenlos oder zu einem geringeren Preis verwenden. Dies ist jedoch nur der Fall, wenn Sie signifikante Mengen von Geräten von ihnen kaufen. Ein weiteres Problem ist, dass während auf OSX oder Linux ein CDC/ACM ohne zusätzliche Treiber erkannt wird, Windows ist wählerischer und benötigt eine INF-Datei, um den spezifischen USB-Hersteller und die Produkt-ID dem usbser.sys-Treiber zuzuordnen. Dann kommen Sie in die ganze Welt der Treibersignierung, die für die Verwendung von Windows Vista 64 oder einer beliebigen Version von Windows 7 unerlässlich ist. Eine Signatur, die Sie signieren, kostet Sie auch Geld. Wenn Ihr Anbieter einen Beispiel-VCP-Code bereitgestellt hat, wird er wahrscheinlich auch einen signierten Treiber bereitstellen. Das STM32 VCP-Beispiel von STMicroelectronios ist sogar WHQL-zertifiziert und kann daher automatisch über Windows Update erworben werden.
Das Ergebnis ist, dass Sie experimentieren können, wenn Ihr Anbieter bereits Code und einen signierten Treiber zur Verfügung stellt (oder Sie nicht Windows verwenden), aber für die Bereitstellung eines Produkts benötigen Sie eine Hersteller-ID und eine Code-Signierung Zertifikat. Es ist ein bisschen wie ein Minenfeld, um ehrlich zu sein.
Ein einfacherer Ansatz ist die Verwendung eines FTDI USB < -> Serieller Chip. Dies ist besonders nützlich für einen Mikrocontroller ohne eigenen USB-Controller, aber die Datenübertragungsrate wird durch die UART-Schnittstelle des Mikros und/oder des FTDI anstelle der USB-Geschwindigkeit begrenzt. Ein FTDI-Chip kann unverändert mit FTDIs VID/PID verwendet werden oder Sie können ihn mit Ihrer eigenen VID/PID anpassen.Mit dem Customizing müssen Sie zwar eine VID und ein Signaturzertifikat erwerben, können Ihr Gerät jedoch eindeutig als generischen seriellen Port identifizieren.
Definitiv die Verwendung eines FTDI ist der beste Weg zu gehen. – TJD
FTDI? Bitte erkläre. Mein Manager fordert an, dass ich das integrierte USB-Peripheriegerät so konfiguriere, dass es als UART funktioniert. Soweit ich das beurteilen kann, ist das nicht möglich, aber er besteht darauf, dass es so ist. –
FTDI-Chips konvertieren UART zu USB. Also intern würden Sie nur normale UART-Peripheriegeräte verwenden, aber extern verbinden Sie sich mit USB. Auf PC-Seite erhalten Sie einen virtuellen COM-Port, damit Sie als normaler serieller Port mit ihm interagieren können. Das ist sehr sauber und einfach und so wie jeder es macht. Ich kann mir nicht vorstellen, warum Sie wirklich das USB-Peripheriegerät Ihres Chips verwenden müssen. – TJD