USB-UART Adapter
USB-UART Adapter (auch USB-TTL genannt) sind im Umfeld von Mikrocontrollern allgegenwärtig. Zusammen mit dem Treiber auf dem PC simulieren sie eine herkömmliche serielle Schnittstelle (auch COM-Port oder RS-232) genannt, allerdings mit anderen Spannungspegeln. Diese Adapter gibt es in der gezeigten Form als Modul, als Kabel (im Stecker integriert) oder auch als Chip auf größeren Platinen.
USB-UART Adapter sind im Schul- und Hobbybereich noch gebräuchlich, obwohl es längst billige Mikrocontroller mit USB Schnittstelle gibt. Gründe dafür sind:
- Die Geräte-Erkennung von USB erfordert eine eindeutige Vendor-ID, welche man beim USB-IF für mindestens 3.500 USD (alle zwei Jahre) abonnieren muss.
- Die Programmierung ist kompliziert.
- Mikrocontroller mit integriertem USB sind schwierig zu debuggen. Ein Breakpoint führt zum Disconnect.
- Die meisten PC Programmiersprachen können nur mit Hilfe von 3rd party Bibliotheken auf USB zugreifen, deren Verfügbarkeit auf lange Sicht ungewiss ist.
Bei der Verwendung solcher Adapter sind die Spannungspegel zu beachten. Die Abkürzung TTL steht eigentlich für 5 Volt, dennoch arbeiten einige dieser Adapter mit 3,3 Volt.
- CH340 und CH341 von WCH unterstützen je nach Beschaltung 3,3 oder 5 Volt
- FT232 von FTDI unterstützen je nach Beschaltung 3,3 oder 5 Volt
- PL2303 von Prolific arbeiten nur mit 3,3 Volt Pegeln
- CP2102 von Silabs geben 3,3 Volt aus, vertragen an ihren Eingängen jedoch auch 5 Volt
- CP2104 von Silabs geben je nach Beschaltung 3,3 oder 5 Volt aus. In beiden Fällen vertragen die Eingänge 5 Volt
- MCP2221 von Microchip unterstützen je nach Beschaltung 3,3 oder 5 Volt
Unter Linux und Mac OS funktionieren alle USB-UART Adapter ohne Treiberinstallation. Windows unterstützt nur Adapter nach CDC Standard ohne Treiberinstallation. Die HAL Firmware von ST, meine Programmierbeispiele für STM32, einige Arduino Boards und der MCP2221 fallen in diese Kategorie. Die anderen oben genannten Chips leider nicht. Windows holt sich den benötigten Treiber oft vollautomatisch aus dem Internet.
⭐ Mit einem Blue-Pill Board kann man sich einfach und billig einen dreifachen USB-UART Adapter basteln, der dank CDC Standard niemals Treiberprobleme hat.
Treiberprobleme
Da zunehmend gefälschte USB-UART Chips auf den Markt kommen, haben einige Hersteller Gegenmaßnahmen ergriffen:
- Der Treiber von FTDI verweigert Fälschungen. Zeitweise hatte er sie durch Umprogrammieren sogar unbrauchbar gemacht.
- Der Treiber von Prolific verweigert nicht nur Fälschungen, sondern auch alte Originale.
- Der Treiber von WCH verweigert Fälschungen.
Für Windows habe ich hier ein paar alte Treiber gesammelt, welche noch mit alten und gefälschten Chips zusammen arbeiten.
- Prolific PL2303 v3.3.2.105 von 2008 (bis Windows 11)
- Prolific PL2303 v3.4.25.218 von 2011 (bis Windows 11)
- WCH CH340 und 341 v3.5.2019.1 (nur bis Windows 10)
- WCH CH340 und 341 v3.7.2022.1 (bis Windows 11)
Wenn Windows ungewollt einen zu neuen Treiber lädt, suche im Startmenü nach "Geräteinstallationseinstellungen" (engl: Device installation settings) und deaktiviere dort die automatische Aktualisierung. Danach hast du folgende Möglichkeiten:
1) Den neueren Treiber entfernen
Dazu geht man im Gerätemanager mit der rechten Maustaste auf den USB-UART Adapter und wählt "Gerät
Deinstallieren". Im nächsten Dialog soll "Treibersoftware für dieses Gerät löschen" aktiviert sein.
Anschließend den USB Stecker ziehen und wieder einstecken. Windows wird danach den verbleibenden
alten Treiber laden.
2) Den alten Treiber zuweisen
Dazu geht man im Gerätemanager mit der rechten Maustaste auf den USB-UART Adapter und wählt "Treiber
aktualisieren". Im nächsten Dialog soll Windows den PC nach verfügbaren Treibern durchsuchen (Aus einer
Liste von Gerätetreibern auf dem Computer wählen). Dort wählst du dann den alten Treiber aus.