Noen spurte meg her om dagen hvordan en FTDI USB til seriell UART fungerer, og jeg skjønte at jeg ikke visste det. Jeg så på databladet for FT232R og blokkdiagrammet hjalp meg ikke. Kan noen forklare eller knytte meg til en god forklaring?
Kommentarer
- Mer forklaring enn det implementerer enhetssiden til en USB CDC-enhet? no.wikipedia.org/wiki/USB_communications_device_class
- @kenny, faktisk, det gjør det ikke ' t. Den bruker en proprietær profil, og derfor må du installere drivere for å bruke den (i det minste på Windows).
- @avakar, den bruker drivere på alle operativsystemer, noen kommer bare forhåndslastet.
Svar
FTDI-brikkene implementerer USB-protokollstakken. Ansvaret til denne maskinvaren er å fortelle PCen din hva det er (ved hjelp av noe identifikasjonsinformasjon) slik at datamaskinen din kan laste inn riktig driver for den, og også å administrere datatransaksjonene med PC-en derpå – se etter USB-endepunkter for en bedre forklaring på disse prosessene.
Når disse driverne er lastet inn, vil dette spesifisere et kommandosett som PC-en din kan bruke til å spørre om brikken. Denne maskinvaren tar seg av den ene siden av ligningen (kommunikasjon med din PC). Den andre siden av det ville være noe dedikert maskinvare for å administrere UART-protokollen som inkluderer logikk, buffere og linjedrivere og slags. Kommandosettet nevnt tidligere vil bli brukt til å lese fra eller skrive til UART-maskinvaren. Det bør sannsynligvis nevnes at USB-enheter blir pollet av PCen, så i tilfeller der du bruker kode som er hendelsesbasert, gjør PCen din faktisk litt avstemning for å fastslå at nye data har kommet – dette kan være annerledes enn en innfødt serie port, ville jeg ikke vite.
Logikken ovenfor kan implementeres enten som en dedikert ASIC eller ved å bruke en strippet mikrokontrollerkjerne som utfører fastvare på ROM. Hvis det virkelig er en mikrokontrollerkjerne, så forestill deg at UART er koblet til den som en perifer.
Kommentarer
- Og hvor sikker er du på at det ikke er ' et firmwareprogram som kjøres? Microcontrollers krever vanligvis færre logiske porter enn tilsvarende ASIC dedikert maskinvareimplementering. Det ' er veldig vanskelig å fortelle en mikrokontroller fra en ASIC, hvis fastvaren til mikrokontrolleren er ikke ' t brukeren er tilgjengelig.
- @Ben: Vet du hva? ldn ' t har sagt det. Svaret er redigert på grunn av min uvitenhet. Jeg gikk med tarmforutsetningen etter å ha sett på blokkdiagrammet, men jeg antar at det ville være bedre å abstrakte eventuelle potensielle UC-detaljer uansett. Jeg antar at bare de på FTDI ville vite det, og jeg antar at det kommer til kjerne lisensieringskostnader i forhold til utviklingstid.
- Vanligvis når du har en " protokoll " du ender opp med et " program " for å håndtere det … til og med hvis den ' kjører på en motor begravet dypt i en ASIC eller FPGA. Unntaket vil være ting der blendende rask hastighet trumfer kompleksitet, hvor du sannsynligvis vil se en statsmaskin eller massiv parallellitet. I mellom er motorer der beregningsbanen er bygget ut av proporsjoner med kontrollogikken – slags den originale ideen bak DSP-prosessorer
Svar
Det er en USB-mikrocontroller som snakker en proprietær protokoll over USB (derav behovet for drivere) og konverterer det til «normale» UART-signaler og tilbake igjen.