Hacer que libftdi funcione con PL-2303HX

4

Quiero golpear un Prolific PL-2303HX. Existe la biblioteca libftdi que permite el intercambio de bits en el chip FT232. ¿Puedo hacer que funcione con PL-2303? Cuando intento usar libftdi , aparece el error "No se puede abrir el dispositivo".

¿Alguien sabe cómo hacer que esto funcione?

Cuando intento abrir el dispositivo con el código de ejemplo en libftdi (cambiando la identificación del proveedor y del dispositivo a

f = ftdi_usb_open(&ftdic, 0x067b, 0x2303);

Obtengo el siguiente resultado

rick2047@ubuntu:~/work/libftdi$ sudo ./a.out 
[sudo] password for rick2047: 
unable to open ftdi device: -6 (ftdi_usb_reset failed)
    
pregunta Rick_2047

3 respuestas

3

No va a suceder. Los chips son / pin / compatibles (los pines hacen las mismas cosas) pero el comportamiento interno es muy diferente. Los chips FTDI están construidos con el modo bit-bang como objetivo de diseño, el chip Prolific no.

    
respondido por el Christopher Biggs
2

No tengo idea de cómo hacer bitbanging con los chips prolíficos, pero el error que está viendo es el resultado de que el identificador de proveedor (VID) y el identificador de producto (PID) del chip Prolific son diferentes del valor predeterminado de FTDI

Este código de ejemplo muestra un ejemplo de dónde se puede producir este tipo de error:

if ((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0)
{
    fprintf(stderr, "unable to open ftdi device: %d (%s)\n", 
            ret, ftdi_get_error_string(&ftdic));
    return EXIT_FAILURE;
}

ftdi_usb_open() es un alias para la función:

ftdi_usb_open_desc_index(
    struct ftdi_context * ftdi,
    int                   vendor,
    int                   product,
    const char *          description,
    const char *          serial,
    unsigned int          index  
)   

que solo sustituye un puntero nulo para la descripción y la serie, y '0' para el índice.

La fuente de esta función se puede encontrar en la línea 623 de ftdi.c, o es en línea aquí .

Tenga en cuenta que cada interacción que realizan los controladores FDTI en esta función y más allá asume que tiene un chip FTDI en el otro extremo. Es casi seguro que la solución de este problema llevará a más problemas, y la solución de esos problemas le dará otro. Habrá una luz al final del túnel, pero puede ser un largo camino para llegar allí.

Agregar soporte Prolific a libftdi (o transferir la API de libftdi a una nueva biblioteca, llámelo libprolific) sería bastante bueno. Sin embargo, es casi seguro que está mejor usando los controladores de Prolific: enlace

    
respondido por el Kevin Vermeer
2

Son dos chips totalmente diferentes dentro.

Aquí está el controlador FTDI de Linux: enlace

Y aquí está el controlador PL230x de Linux: enlace

Note que no son lo mismo.

La hoja de datos no menciona el PL2303 que admite ningún modo de bitbang.

Siempre se pueden usar líneas RS232 para bitbang: DTR y RTS para salida, RI + DCD + DSR + CTS para entrada.

    
respondido por el markrages

Lea otras preguntas en las etiquetas