Ich habe in Visual C # ein einfaches Programm erstellt, das über den FT232RL-Chip mit AVR kommuniziert.
PC <-> FTDI <-> MCU.
Ich verwende FTD2XX_NET.dll für den direkten Zugriff auf das USB-Gerät.
Ich frage mich, was ist der Unterschied zwischen einem Paar FTDI-AVR und einem einzelnen AVR mit integriertem USB-Controller? Ich denke, es muss einen Unterschied in der Kommunikationsgeschwindigkeit geben. Was ist noch anders?
Antworten:
Es gibt einige Gründe, aber sie sind, zumindest für die meisten Menschen, ziemlich nisch.
Die Gründe, die ich sehe und erlebt habe
Mit gebrauchsfertigen USB-Bibliotheken, den erheblichen Kosten für FTDI-USB-Bridges (sie kosten normalerweise mehr als sogar sehr hochwertige AVRs) und keinen Leistungseinbußen in den meisten Anwendungen ist es heutzutage sehr schwierig, FTDI-Chips zu rechtfertigen, wenn Sie dies tun Sie haben die volle Kontrolle über Hardware und Firmware.
quelle
tl;dr
Absatz war sicher ein überraschendes Ende ... Sie haben nur über USB / serielle Stacks mit Firmware gesprochen (wenn auch mit äußerst gültigen Punkten), und dann BAM ... "nur ein Idiot würde FTDI verwenden". Urkomisch. Liebt es!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.
quelle