Emulation von UART über USB

7

Weiß jemand, ob es möglich ist, UART (einfaches serielles Senden und Empfangen) über USB zu emulieren? Wie würde dies erreicht werden?

Ich habe diesen Link auf der Microchip-Website gefunden, aber er ist nicht sehr aktuell.

Ссылка

Irgendwelche Ideen? Danke.

    
Jim Fell 01.10.2012, 18:14
quelle

2 Antworten

8

Grundsätzlich haben Sie zwei Möglichkeiten, UART über USB zu emulieren:

  1. Verwenden Sie ein vorhandenes Produkt. Die Firma FTDI stellt bekannte und solide UART-USB-Brückenchips, z.B. FT230X. Pro: Sie benötigen kein detailliertes Wissen über USB. Nachteile: Teuer, wenn es in der Massenproduktion verwendet wird. Zusätzliche Hardware benötigt zusätzliche Energie.

  2. Implementieren Sie die USB-Geräteklasse "Communication Device Class" (CDC). Die Spezifikation von CDC ist auf USB.org verfügbar, siehe hier . Pro: Billig in der Massenproduktion (wenn Ihr Microcontroller USB an Bord hat). Con: Sie benötigen detailliertes Wissen über USB.

Habi 01.10.2012, 19:17
quelle
11

Sie müssen den Gerätestapel als CDC ACM-Gerät implementieren (auch bekannt als Virtual COM-Port oder VCP). Die meisten Hersteller von Mikrocontrollern mit USB-Unterstützung haben Beispielcode oder App-Notizen.

Vorausgesetzt, dass Ihr Gerät für Windows wie ein COM-Port aussehen wird. 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 zu erhalten.

Ein Problem besteht darin, dass USB-Geräte eine vom USB Implementer's Forum zugewiesene Hersteller-ID benötigen, bei einer 5000 $ Gebühr ( richtig 23. JULI 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 ihre Hersteller-ID für eine Teilmenge von Produkt-IDs kostenlos oder zu einem geringeren Preis verwenden. Dies ist jedoch nur möglich, wenn Sie eine erhebliche Anzahl von Geräten von ihnen kaufen.

Ein weiteres Problem ist, dass unter OS X oder Linux ein CDC / ACM ohne zusätzliche Treiber erkannt wird. Windows ist jedoch wählerischer und benötigt eine INF-Datei, um den 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.

Im Endeffekt können Sie das also tun, wenn Ihr Anbieter bereits Code und einen signierten Treiber zur Verfügung stellt (oder Sie Windows nicht verwenden). Um ein Produkt bereitzustellen, benötigen Sie jedoch eine Hersteller-ID und ein Codesignaturzertifikat . Es ist ein bisschen wie ein Minenfeld, um ehrlich zu sein.

Ein einfacherer Ansatz besteht darin, einen FTDI USB & lt; - & gt; Seriell-Chip zu verwenden. 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 erneut eine VID und ein Signaturzertifikat erwerben, können Ihr Gerät jedoch eindeutig als generische serielle Schnittstelle identifizieren.

    
Clifford 01.10.2012 19:18
quelle

Tags und Links