Wie funktioniert ein FTDI-Chip?

20

Jemand hat mich neulich gefragt, wie ein FTDI USB zu seriellem UART funktioniert, und mir wurde klar, dass ich es nicht wusste. Ich habe mir das Datenblatt für den FT232R angesehen und das Blockdiagramm hat mir nicht wirklich geholfen. Kann mir jemand eine gute Erklärung erklären oder verlinken?

aloishis89
quelle
3
Eher eine Erklärung, als die Geräteseite eines USB-CDC-Geräts zu implementieren? en.wikipedia.org/wiki/USB_communications_device_class
kenny
1
@kenny tut es eigentlich nicht. Es verwendet ein proprietäres Profil, weshalb Sie Treiber installieren müssen, um es zu verwenden (zumindest unter Windows).
Avakar
2
@avakar, es werden Treiber auf allen Betriebssystemen verwendet, einige sind nur vorinstalliert.
Kortuk

Antworten:

15

Die FTDI-Chips implementieren den USB-Protokollstapel. Die Verantwortung für diese Hardware besteht darin, Ihrem PC (unter Verwendung einiger Identifikationsinformationen) mitzuteilen, was es ist, damit Ihr Computer den richtigen Treiber dafür laden kann, und anschließend die Datentransaktionen mit dem PC zu verwalten. Überprüfen Sie die USB-Endpunkte für eine bessere Erklärung dieser Prozesse.

Sobald diese Treiber geladen sind, gibt dies einen Befehlssatz an, mit dem Ihr PC den Chip abfragen kann. Diese Hardware kümmert sich um eine Seite der Gleichung (Kommunikation mit Ihrem PC). Die andere Seite wäre eine dedizierte Hardware zum Verwalten des UART-Protokolls, das Logik, Puffer und Leitungstreiber und die Sortierungen enthält. Der zuvor erwähnte Befehlssatz wird zum Lesen oder Schreiben auf die UART-Hardware verwendet. Es sollte wahrscheinlich erwähnt werden, dass USB-Geräte vom PC abgefragt werden. In Fällen, in denen Sie ereignisbasierten Code verwenden, führt Ihr PC tatsächlich eine Abfrage durch, um festzustellen, ob neue Daten eingetroffen sind - dies kann sich von einer nativen Seriennummer unterscheiden Hafen würde ich nicht wissen.

Die obige Logik kann entweder als dedizierter ASIC oder unter Verwendung eines abgespeckten Mikrocontrollerkerns implementiert werden, der Firmware auf ROM ausführt. Wenn es sich in der Tat um einen Mikrocontroller-Kern handelt, dann stelle ich mir vor, dass der UART als Peripheriegerät daran angeschlossen ist.

Jon L
quelle
Und wie sicher sind Sie sich, dass kein Firmware-Programm ausgeführt wird? Mikrocontroller erfordern normalerweise weniger Logikgatter als die entsprechende Implementierung der dedizierten ASIC-Hardware. Es ist wirklich schwierig, einen Mikrocontroller von einem ASIC zu unterscheiden, wenn die Firmware des Mikrocontrollers nicht für den Benutzer zugänglich ist.
Ben Voigt
@ Ben: Weißt du was? Ich hätte das wahrscheinlich nicht sagen sollen. Die Antwort wurde aufgrund meiner Unkenntnis bearbeitet. Nachdem ich mir das Blockdiagramm angesehen habe, habe ich meine Vermutung übernommen, aber ich nehme an, es wäre besser, alle potenziellen uC-Details auf jeden Fall zu abstrahieren. Ich nehme an, dass nur diejenigen bei FTDI Bescheid wissen, und ich nehme an, dass es auf die Kernlizenzkosten im Vergleich zur internen Entwicklungszeit ankommt.
Jon L
1
Wenn Sie ein "Protokoll" haben, haben Sie in der Regel ein "Programm", mit dem Sie umgehen können ... selbst wenn es auf einem Motor läuft, der tief in einem ASIC oder FPGA verborgen ist. Die Ausnahme wären Dinge, bei denen blitzschnelle Geschwindigkeit die Komplexität übertrifft, bei denen man wahrscheinlich eine Zustandsmaschine oder massive Parallelität sieht. Dazwischen stehen Engines, bei denen der Rechenpfad nicht proportional zur Steuerlogik ist - sozusagen die ursprüngliche Idee hinter DSP-Prozessoren
Chris Stratton
2

Es gibt einen USB-Mikrocontroller, der ein proprietäres Protokoll über USB spricht (daher Treiber erforderlich) und dieses in "normale" UART-Signale und wieder zurück konvertiert.

Martin Thompson
quelle