Iemand vroeg me laatst hoe een FTDI USB naar serieel UART werkt, en ik realiseerde me dat ik het niet wist. Ik keek naar de datasheet voor de FT232R en het blokschema hielp me niet echt. Kan iemand mij een goede uitleg uitleggen of koppelen?
Opmerkingen
- Meer uitleg dan dat het de apparaatzijde van een USB CDC-apparaat implementeert? en.wikipedia.org/wiki/USB_communications_device_class
- @kenny, eigenlijk niet ' t. Het maakt gebruik van een eigen profiel, daarom moet je stuurprogrammas installeren om het te gebruiken (tenminste op Windows).
- @avakar, het gebruikt stuurprogrammas op alle besturingssystemen, sommige zijn al voorgeladen.
Answer
De FTDI-chips implementeren de USB-protocolstack. De verantwoordelijkheid van deze hardware is om uw pc te vertellen wat het is (met behulp van identificatie-informatie), zodat uw computer de juiste driver ervoor kan laden, en ook om de datatransacties te beheren met de pc erop na – zoek USB-eindpunten op voor een betere uitleg van deze processen.
Als die stuurprogrammas eenmaal zijn geladen, zou dit een commandoset specificeren die uw pc kan gebruiken om de chip op te vragen. Deze hardware zorgt voor één kant van de vergelijking (communicatie met uw pc). De andere kant zou een speciale hardware zijn om het UART-protocol te beheren, inclusief logica, buffers en lijnstuurprogrammas en dergelijke. De eerder genoemde commandoset zou worden gebruikt om te lezen van of te schrijven naar de UART-hardware. Er moet waarschijnlijk worden vermeld dat USB-apparaten door de pc worden gepolld, dus in gevallen waarin u code gebruikt die op gebeurtenissen is gebaseerd, voert uw pc in feite wat polling uit om vast te stellen dat er nieuwe gegevens zijn binnengekomen – dit kan anders zijn dan een native serieel poort, zou ik het niet weten.
De bovenstaande logica kan worden geïmplementeerd als een speciale ASIC of door een uitgeklede microcontrollerkern te gebruiken die firmware op ROM uitvoert. Als het inderdaad een microcontrollerkern is, dan kan ik stel je voor dat de UART ermee verbonden is als een randapparaat.
Opmerkingen
- En hoe zeker ben je dat er geen '
erg moeilijk om een microcontroller van een ASIC te onderscheiden, als de microcontroller-firmware is niet ' t toegankelijk voor de gebruiker.
Answer
Er zit een USB-microcontroller in die een eigen protocol over USB spreekt (vandaar de behoefte aan stuurprogrammas) en dat omzet in “normale” UART-signalen en weer terug.