Autor Tema: FTDI FT245BL  (Leído 5399 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado unevox

  • PIC10
  • *
  • Mensajes: 12
FTDI FT245BL
« en: 18 de Julio de 2007, 06:23:34 »
bueno antes que nada quisiera felicitar a las personas de este foro por este magnifico trabajo.

Me surge una duda acerca de este integrado de la casa de FTDI en particular estoy manejando el FT245BL que es un convertidor de USB a Paralelo, pero tengo unas dudas. realice un diseño en pcb con la configuracion basica del micro Windows lo detecta correctamente y me piide la instalacion de drivers los cuales tmb ya instale.

aqui el dilema y es lo que no entiendo, los drivers se llama VCP que se refiere a (Virtual Com Port), aunque se trate de un convertidor USB - Paralelo, crea un puerto serie virtual.

Como se usa este chip para que cree un puerto paralelo virtual, segun lo que he leido necesita de un pic [ara simular la entrada y salida de datos D0-D7 etc. ahora si alguien ha usado este chip sabe si hay alguna forma de configurarlo como puerto paralelo, o si funciona con cualquier software que maneje datos tanto de entrada como salida por el puerto paralelo??

De antemano muchas gracias, espero no haberlos confundido con mis preguntas Bytezz
« Última modificación: 18 de Julio de 2007, 10:57:29 por unevox »

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3492
    • http://www.todopicelectronica.com.ar
Re: FTDI FT245BL
« Respuesta #1 en: 18 de Julio de 2007, 10:15:48 »
Hola, no he trabajado nunca con ese integrado, pero encontre este manual muy completito
descargar aquí

Por lo que veo, el micro lo emplea para proceso, y no se que aplicacion le daras...

Suerte!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 733
    • www.muchotrasto.com
Re: FTDI FT245BL
« Respuesta #2 en: 08 de Septiembre de 2007, 11:09:38 »
Llevo tiempo usando el FT232BL y por lo que veo los drivers funcionan bien...quiero decir...el micro de ftdi es una interface de usb a paralelo (Single Chip USB <=> parallel FIFO bi-directional data transfer) pero a la hora de hacer un programa con dicha interface no te queda otra que hacerlo como si fuese un puerto serie...a la salida del chip FTDI tendrias que conectarle un MCU/PLD/FPGA para hacer luego lo que quieras con los datos que recibes.

Si lo que querias es una interface usb-RS245 tendrías que meter algo para subir la tensión ya que el usb funciona a 5V y el paralelo a +-12V, creo que hay en el mercado interface paracedos al max232 pero para puerto paralelo llamados max245 que en realizadad son multicanales del primero...pero en esto último no me hagas mucho caso.

Un saludete y espero que te sirva de ayuda.

Desconectado Oceano

  • PIC10
  • *
  • Mensajes: 22
    • Proyectos Roboticos.
FT232 controlarlo como una UART (?)
« Respuesta #3 en: 08 de Julio de 2009, 18:41:09 »

Hola amigos,

me compré unos convertidores de USB a RS-232 y cuando quise usarlos como si estuviera comunicándome con una UART me llevé la sorpresa de que no entiende.

Alguno de vosotros sabe cómo manejar los bits RST, DTR, DCD, etc... del convertidor USB a RS232 de forma directa con algún lenguaje de programación?

He intentado de todas las formas posibles haciendo Inp y Out, pero "nanay" de la china.

Saludos.

Desconectado Oceano

  • PIC10
  • *
  • Mensajes: 22
    • Proyectos Roboticos.
Re: FT232 controlarlo como una UART (?)
« Respuesta #4 en: 20 de Marzo de 2010, 20:50:17 »
Después de 9 meses encontré una respuesta, es lo que sigue:

Para manejar los Bits de forma independiente en un FTDI FT232xx o su homónimo PL232xx:

Salidas: DTR - RTS
Entradas: CTS - DSR - (RI*) - DCD


* ("RI" sólo es compatible con la UART es decir el Com1 y 2 que viene en los PC de sobremesa por defecto; en los FTDI no suele tener implementada esta patilla, porque sólo se usan en los antiguos Modem)

He comprobado la frecuencia máxima de cambio de estado con un osciloscopio. Si pones a cambiar el estado sólo una de las salidad (DTR ó RTS) se obtiene una frecuencia máxima de 166 Hercios. Y si usas los dos a la vez (DTR y RTS), la frecuencia es de 85 hercios. Esto es muy pobre, y para lo que necesitaba no me es factible, pero comunico los resultados por si alguien le encuentra alguna función a todo esto.

El programa está escrito en FreeBasic. No sé cómo se hace en otros lenguajes de programación. Si no puedes acceder al zip que adjunto, copio aquí los dos programas. Hace parpadear dos LED conectados al DB9 del FTDI (también es válido para la UART del PC, pero hay otras formas mucho más sencillas de manejarlo, directamente con la instrucción "Out puerto, dato" [has de abrir el puerto de comunicaciones previamente con 'Open com "com1:2400,8,n,1,rs,ds,cd" as #1' si estás en plataformas de SO de 32 ó 64 bits como el Win XP; en win98 no hace falta abrir el puerto porque el kernel del SO es de 16 bits, es decir, tipo msdos] y puedes alcanzar más de 20KHz de parpadeo). Las conexiones están en el JPG que adjunto. En pantalla no sale nada porque se trata de ver el parpadeo de los LEDs. Antes de ejecutar el programa has de averiguar en qué puerto Com está tu FTDI; lo puedes encontrar en: Inicio > Panel de Pontrol > Sistema > Hardware > Administrador de Dispositivos > Puertos Com & LPT > y pulsas en el símbolo '+', ahí verás la referencia del puerto donde esté. Si quieres tb puedes cambiar el Com a otro que tu quieras mientras esté libre, pulsando con el botón derecho y le das a "Propiedades" y después pulsas en la pestaña "Configuración del puerto". Pulsas sobre el botón "Opciones avanzadas" y verás abajo de esa ventana que te permite cambiar el Com a otro puerto si está libre.

En cualquiera de los dos programas has de pulsar "Escape" para salir.

Puedes descargar los códigos fuentes, esquema y los ejecutables aquí:

Pines:
RTS -----> patilla 7 del DB9
DTR -----> patilla 4 del DB9
Masa ----> patilla 5 del DB9

-------------------------------------------------------------------------------

Manejo de las Salidas TxD, RTS y DTR del FTDI FT232xx ó PL232xx:

#Include "windows.bi"

Dim Letra  As String
Dim hCom   As HANDLE
Dim ComX   As Integer

Screen 9

Locate 10,1: Input "    Escribe solo el -numero- del puerto COM donde tengas tu FTDI. COM:"; ComX

Color 14,1
Cls

Locate 10,1
Print "           Observa el cambio  de  estado de los  LED. Han de parpadear"
Print "           secuencialmente, un segundo de tiempo cada uno."
Print
Print "           Pulsa  'Escape'  para salir; quiza tarde varios segundos en"
Print "           tener efecto por la  temporizacion  que hay en el programa."

hCom = CreateFile( "Com" + Str(ComX), GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL )

While Letra <> Chr( 27 )
 
        Letra=InKey()
 
        EscapeCommFunction( hCom, SETDTR )  ' DTR=1
 
        Sleep 500

        EscapeCommFunction( hCom, CLRDTR )  ' DTR=0
   
        Sleep 500
   
        EscapeCommFunction( hCom, SETRTS )  ' RTS=1
   
        Sleep 500
 
        EscapeCommFunction( hCom, CLRRTS )  ' RTS=0
   
        Sleep 500
 
        EscapeCommFunction( hCom, SETBREAK ) ' TxD=1
   
        Sleep 500
 
        EscapeCommFunction( hCom, CLRBREAK ) ' TxD=0
   
        Sleep 500
 
Wend

CloseHandle( hCom )
 
End

Y ahora el programa para leer las entradas. Si las patillas de entrada (CTS - DSR - DCD - RI) están sueltas lo interpreta como un 0. Hay que llevarlas a positivo para que se ponga, las entradas que corresponda, a 1. Los resultados podrás leerlo en el monitor.

Pines de entradas:

CDC -----> patilla 1 del DB9
DSR -----> patilla 6 del DB9
CTS -----> patilla 8 del DB9
RI -------> patilla 9 del DB9 (opcional)
Masa ----> patilla 5 del DB9

Manejo de las patillas CDC, DSR, CTS y RI* del FTDI FT232xx ó PL232xx:

* (No en todos los FTDI tiene la función 'RI' integrada.)

#Include "windows.bi"

Dim Letra     As String
Dim hCom      As HANDLE
Dim modemStat As Dword
Dim ComX      As Integer

Screen 9

Locate 10,1: Input "Escribe solo el -numero- del puerto COM donde tengas tu FTDI. COM:"; ComX

Cls

hCom = CreateFile( "Com" + Str(ComX), GENERIC_READ Or GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL )
   
While Letra = ""
 
      Letra=InKey()
 
      GetCommModemStatus( hCom, @modemStat )
 
      Locate 10,10
 
      If modemStat And MS_CTS_ON  Then Print "CTS=1 ";  Else Print "CTS=0 ";
      If modemStat And MS_DSR_ON  Then Print "DSR=1 ";  Else Print "DSR=0 ";
      If modemStat And MS_RING_ON Then Print "RING=1 "; Else Print "RING=0 ";
      If modemStat And MS_RLSD_ON Then Print "RLSD=1"   Else Print "RLSD=0" 
   
      Print modemstat         
 
Wend

CloseHandle( hCom )

End
« Última modificación: 02 de Abril de 2010, 18:43:16 por Oceano »