Någon frågade mig häromdagen hur en FTDI USB till seriell UART fungerar, och jag insåg att jag inte visste det. Jag tittade på databladet för FT232R och blockdiagrammet hjälpte mig inte riktigt. Kan någon förklara eller länka mig till en bra förklaring?
Kommentarer
- Mer förklaring än den implementerar enhetssidan på en USB CDC-enhet? sv.wikipedia.org/wiki/USB_communications_device_class
- @kenny, faktiskt ' t. Den använder en egen profil, varför du måste installera drivrutiner för att använda den (åtminstone i Windows).
- @avakar, den använder drivrutiner på alla operativsystem, vissa kommer bara förinstallerade.
Svar
FTDI-chipsen implementerar USB-protokollstacken. Ansvaret för den här hårdvaran är att berätta för din dator vad det är (med hjälp av viss identifieringsinformation) så att din dator kan ladda rätt drivrutin för den, och även att hantera datatransaktionerna med datorn därpå – leta upp USB-slutpunkter för en bättre förklaring av dessa processer.
När dessa drivrutiner har laddats, skulle detta specificera en kommandosats som din dator kan använda för att fråga om chipet. Denna hårdvara tar hand om ena sidan av ekvationen (kommunikation med din dator). Den andra sidan av det skulle vara en viss dedikerad hårdvara för att hantera UART-protokollet som inkluderar logik, buffertar och linjedrivrutiner och sorter. Den tidigare nämnda kommandosatsen skulle användas för att läsa från eller skriva till UART-hårdvaran. Det bör nog nämnas att USB-enheter pollas av PC: n, så i fall där du använder kod som är händelsebaserad gör din PC faktiskt en del avfrågningar för att fastställa att nya data har kommit – detta kan vara annorlunda än en inbyggd serie port, skulle jag inte veta.
Ovanstående logik kan implementeras antingen som en dedikerad ASIC eller genom att använda en avskalad mikrokontroller-kärna som kör firmware på ROM. Om det verkligen är en mikrokontroller-kärna, då föreställ dig att UART är ansluten till den som en kringutrustning.
Kommentarer
- Och hur säker är du på att det inte finns ' Ett firmwareprogram som körs? Mikrokontroller kräver vanligtvis färre logikgrindar än motsvarande ASIC-dedikerad hårdvaruimplementering. microcontroller-firmware är inte ' t användaråtkomlig.
- @Ben: Vet du vad? Jag ska nog ldn ' t har sagt det. Svaret har redigerats på grund av min okunnighet. Jag gick med mitt tarmantagande efter att ha tittat på blockdiagrammet, men jag antar att det skulle vara bättre att abstrakta eventuella UC-detaljer ändå. Jag antar att bara de på FTDI skulle veta det, och jag antar att det kommer ner till kärnkraftskostnaderna jämfört med utveckling av hus.
- Vanligtvis när du har en " protokoll " du får ett " -program " för att hantera det … till och med om den ' körs på en motor begravd djupt i en ASIC eller FPGA. Undantaget skulle vara saker där bländande snabb hastighet trumfar komplexitet, där du sannolikt kommer att se en statsmaskin eller massiv parallellitet. Däremellan finns motorer där beräkningsvägen är uppbyggd i proportion till styrlogiken – typ av originalidén bakom DSP-processorer
Svar
Det finns en USB-mikrokontroller inuti som talar ett proprietärt protokoll över USB (därmed behovet av drivrutiner) och konverterar det till ”normala” UART-signaler och tillbaka igen.