Die Verwendung eines separaten USB-Chips und die Kommunikation des AVR über seinen UART bieten Vorteile.
Ein USB-Stack muss auf Abfragen vom Host-PC reagieren. Dies geschieht mindestens jede Millisekunde. Dies bedeutet, dass es noch schwieriger ist, eine schnelle Echtzeitreaktion auf Ereignisse zu gewährleisten, da die MCU möglicherweise unterbrochen wird, um auf die USB-Abfrage des Hosts zu antworten.
Wenn nichts zu kommunizieren ist oder die MCU sich voll und ganz auf eine Echtzeitaufgabe konzentrieren möchte, muss sie dennoch auf einige USB-Abfrageereignisse des Hosts reagieren, da der Host sonst das Gerät "verliert". Es ist also schwer zu ignorieren. Ein dedizierter USB-Chip wie ein FTDI entlädt diese Aufgaben vom AVR.
Ein kleines Problem ist, dass der USB-Stack eine angemessene Menge an Flash-Speicher und RAM verbraucht, sodass der Chip mehr Ressourcen benötigt als ein einfacher AVR.
Außerdem können die beiden Teile auf zwei Karten getrennt werden, sodass USB keine festen Kosten verursacht, sondern möglicherweise von mehreren Karten gemeinsam genutzt wird.
Umgekehrt besteht der Hauptvorteil der Verwendung eines AVR mit integriertem USB-Peripheriegerät und USB-Stack darin, dass nur ein Teil gekauft und zusammengebaut werden muss.
Ich habe kürzlich nicht überprüft, aber ich glaube, dass die neueren FTDI-Chips eine höhere USB-Datenübertragungsrate als der USB des AVR bieten. AVR-UARTs waren jedoch so langsam, dass ein AVR mit USB aufgrund des langsamen AVR-UART schneller überträgt als die Kombination von FTDI (oder einer beliebigen USB-Schnittstelle), die über den UART des AVR kommuniziert.
Bearbeiten: FTDI stellt andere Schnittstellen als UART her. Zum Beispiel SPI. Ich habe keine Erfahrung damit. Einige AVRs unterstützen 9 (vielleicht 12) Megabit-SPI-Übertragungen. Der FTDI ist der SPI-Master, was nicht ideal ist. Wenn der AVR sendet, ist dies möglicherweise in Ordnung. Die FTDIs verfügen zwar über Puffer, der Empfang kann jedoch wie das Trinken aus einem Feuerwehrschlauch erfolgen. AFAIK, Sie müssen am Host-PC arbeiten, damit er funktioniert.
Die Übertragung mit der höchsten Geschwindigkeit erfolgt möglicherweise über eine 100-MBit-Ethernet-Tochterplatine, ich habe jedoch keine Durchsatzmessungen gesehen.
Ich verwende gerne andere Mikrocontroller als AVR. Ich könnte also etwas mit einem schnellen UART und einem DMA-Controller verwenden, der Zeichen ohne CPU-Beteiligung verschieben könnte. Wenn dies ein nützlicher Ansatz ist, schauen Sie sich vielleicht das Arduin Due oder das mbed an. Das ST mbed heißt Nucelo und ist kostengünstig.