Esto se debe a que las computadoras domésticas usan ciertos estándares para comunicarse. Existe el puerto serie, el puerto paralelo (obsoleto), cualquier versión de USB, Ethernet, tal vez la fibra óptica, (e) sata, etc.
Un microcontrolador usualmente usa diferentes estándares como I2C o SPI, la única interfaz común es el enlace serial (RS232).
Cada una de estas interfaces tiene su ventaja y su desventaja: la serie es fácil de implementar pero lenta, Ethernet es buena para cables muy largos, sata se usa para dispositivos de almacenamiento masivo y es muy rápida ... Cada interfaz generalmente necesita algo de dedicados hardware, y es por eso que su microcontrolador no tiene un puerto sata: eso es algo que pocos diseñadores usarían, por lo que no vale la pena ponerlo en cada chip, lo que aumenta los costos.
¡Pero, por supuesto, puede emular hardware a través del software! Eso es bastante complicado, probablemente necesitarías un poco de cambio de nivel fuera de tu chip porque generalmente los voltajes difieren de una interfaz a otra, pero puedes. Entonces, si su chip no tiene HW dedicado I2C, puede escribir su propio código y emularlo. Eso, por supuesto, utiliza una gran cantidad de CPU, y a veces eso no es posible. El chip FTDI hace este trabajo por usted: se ocupa de los niveles de señal (usb es un enlace LVDS) y probablemente proporciona algunos marcos o lo que sea. Y probablemente tiene una interfaz I2C. Usar I2C es mucho más fácil que con USB. Por el lado del microcontrolador, solo tiene que hablar con el chip FTDI a la manera I2C, su micro probablemente tiene una interfaz I2C HW y está listo para comenzar.
Por el lado de la computadora, el problema es que este chip FTDI no es un dispositivo estándar como mouse o gamepad, probablemente puede emular varios dispositivos y puedes elegir cuál diciéndolo a través de I2C. El punto es que necesita algunos drivers. Un controlador es una pieza de software que se interconecta con una pieza de hardware: en este caso, el nivel es un poco más: el lado de la computadora del controlador USB tiene su propio controlador, pero la manera de comunicarse con el chip FTDI es personalizada. Tal vez necesite algunos paquetes extraños al principio para inicializarse correctamente, tal vez tenga una velocidad máxima que sea mucho más baja de lo que el estándar USB considera ... Piense en el controlador como una pieza de código que el lado del software expone dos búferes: data_in y data_out , mientras que el lado del hardware se ocupa de cómo enviar estos buffers a su dispositivo personalizado.
Es como lo que está haciendo en el lado del microcontrolador: inicia la comunicación I2C, configura algunos registros, comienza a enviar datos.
Podrías hacer el trabajo sin ningún chip de interfaz, como sugieres, pero eso sería mucho más difícil. Tendría que encontrar una manera de conectarse a una interfaz de bajo nivel de su PC, eso significa encontrar un puerto I2C gratuito, si lo hubiera, y conectar su MCU allí. O otra interfaz de bajo nivel, por supuesto. Usted está intercambiando toneladas de velocidad, tiempo, confiabilidad, reutilización por algunos centavos ahorrados en un FTDI.