Nogen spurgte mig forleden, hvordan en FTDI USB til seriel UART fungerer, og jeg indså, at jeg ikke vidste det. Jeg kiggede på databladet til FT232R og blokdiagrammet hjalp mig ikke rigtig. Kan nogen forklare eller knytte mig til en god forklaring?
Kommentarer
- Mere en forklaring end den implementerer enhedsiden af en USB CDC-enhed? da.wikipedia.org/wiki/USB_communications_device_class
- @kenny faktisk ' t. Det bruger en proprietær profil, hvorfor du skal installere drivere for at bruge den (i det mindste på Windows).
- @avakar, den bruger drivere på alle operativsystemer, nogle er bare forudindlæst.
Svar
FTDI-chips implementerer USB-protokolstakken. Ansvaret for denne hardware er at fortælle din pc, hvad det er (ved hjælp af nogle identifikationsoplysninger), så din computer kan indlæse den rigtige driver til den, og også at administrere datatransaktionerne med pcen derpå – efter at have fundet USB-slutpunkter for en bedre forklaring af disse processer.
Når disse drivere er indlæst, angiver dette et kommandosæt, som din pc kan bruge til at forespørge chippen. Denne hardware tager sig af den ene side af ligningen (kommunikation med din pc). Den anden side af det ville være noget dedikeret hardware til at styre UART-protokollen, som inkluderer logik, buffere og linjedrivere og de slags. Det tidligere nævnte kommandosæt ville blive brugt til at læse fra eller skrive til UART-hardware. Det skal sandsynligvis nævnes, at USB-enheder polles af pcen, så i tilfælde, hvor du bruger kode, der er hændelsesbaseret, foretager din pc faktisk nogle afstemninger for at fastslå, at nye data er ankommet – dette kan være anderledes end en native seriel port, ville jeg ikke vide det.
Ovenstående logik kan implementeres enten som en dedikeret ASIC eller ved hjælp af en strippet microcontroller-kerne, der udfører firmware på ROM. Hvis det faktisk er en microcontroller-kerne, så jeg forestil dig at UART er forbundet til den som en perifer enhed.
Kommentarer
- Og hvor sikker er du på, at der ikke er ' et firmwareprogram, der udføres? Microcontrollers kræver normalt færre logiske porte end den tilsvarende ASIC-dedikerede hardwareimplementering. Det ' er virkelig svært at fortælle en mikrocontroller fra en ASIC, hvis microcontroller-firmwaren er ikke ' t brugertilgængelig.
- @Ben: Ved du hvad? Jeg skal sandsynligvis ldn ' t har sagt det. Svaret er redigeret på grund af min uvidenhed. Jeg gik med min tarmantagelse efter at have set på blokdiagrammet, men jeg formoder, at det ville være bedre at abstrakte eventuelle potentielle UC-detaljer alligevel. Jeg formoder, at kun de ved FTDI ville vide det, og jeg formoder, at det kommer til kernelicensomkostninger i forhold til husudviklingstid.
- Normalt når du har en " protokol " du ender med et " program " til at håndtere det … endda hvis den ' kører på en motor begravet dybt i en ASIC eller FPGA. Undtagelsen ville være ting, hvor blændende hurtig hastighed trumfer kompleksitet, hvor du sandsynligvis vil se en statsmaskine eller massiv parallelisme. Ind imellem er motorer, hvor beregningsstien er bygget ud af proportioner med kontrollogikken – slags den originale idé bag DSP-processorer
Svar
Der er en USB-mikrocontroller inde, som taler en proprietær protokol over USB (dermed behovet for drivere) og konverterer det til “normale” UART-signaler og tilbage igen.