Leer Primero

Como se utiliza este blog?

jueves, 22 de julio de 2021

FTDI como programador ISP

Bienvenido a mi blog, hoy hablaremos un poco de Future Technology Devices International Ltd, comúnmente conocida por su abreviatura FTDI, la cual es una empresa privada escocesa especializada en tecnología Universal Serial Bus (USB). FTDI desarrolla, fabrica y da apoyo a dispositivos y sus correspondientes controladores de software (drivers) para la conversión de transmisiones serie RS-232 o TTL a señales USB, con el fin de permitir la compatibilidad de dispositivos heredados con los ordenadores modernos. El adaptador interfaz USB serial FT232RL permite comunicarte a través del puerto USB de tu PC con la UART (Universal Asynchronous Transmitter Receiver) de un microcontrolador, un arduino o cualquier otro dispositivo que tenga este tipo de interfaz. Usualmente la interfaz UART se emplea para la descarga de programas (mediante bootloader), para la configuración de los parámetros de operación en equipos electrónicos, o como interfaz para mensajes de depuración en sistemas embebidos. Por lo tanto, este adaptador es ideal para todos los estudiantes, técnicos e ingenieros que trabajan con microcontroladores y tarjetas electrónicas.

Las ventajas del adaptador interfaz USB serial FT232RL es que puede utilizarse con sistemas electrónicos cuyo funcionamiento es a +5 y +3.3 voltios cc, pudiendo seleccionar el voltaje de las señales correspondientes mediante un jumper o switch. La interfaz UART soporta 7 u 8 bits de datos, 1 ó 2 bits de parada, y paridad par/impar/marca/espacio/sin paridad y el Buffer de recepción es de 128 Bytes mientras el de transmisión es de 256 bytes. Vamos a ver en el post de hoy como utilizar los 6 pines amarillos que traen los conversores FTDI, como un ISP normal. La placa de conexión USB-TTL FTDI habitual, se ve así:

Recientemente, se encuentra una variante del tablero que se muestra a continuación. Sin embargo, algunos usuarios se preguntan ¿para qué sirven los pines de encabezado amarillos adicionales en esta placa que están etiquetados como ISP? ¿pueden realmente usarse como un ISP/ICSP estándar?

De acuerdo con el diagrama a continuación, proporcionado por el fabricante, se etiquetan los 6 pines en cuestión:

El fabricante acota: "Como nueva característica, hay disponible un encabezado ISP de 6 pines. Con él, avrdude y avrftdi, se puede programar los cargadores de arranque (bootloaders) Atmels y Arduino. Es necesaria una versión especial de avrdude con el controlador FTDI compilado". El encabezado se utiliza para el "modo Bit Bang síncrono" como se documenta aquí: Modos Bit Bang para FT232R y FT245R (Nota de aplicación AN_232R-01, Documento de referencia No .: FT_000339)

De hecho, puede configurar ese encabezado para que sea un programador SPI, como se describe, por ejemplo, en FT232R Bitbang ProgrammerComo el fabricante no dio el soporte necesario, ni libero el software que se debe utilizar, se hace necesario bajar el código fuente de avrdude de github y volver a compilarlo para que soporte ISP en esta placa con el FT232RL. Para este ejemplo se utilizara una versión de linux como ubuntu, antes de compilar se debe instalar <libusb> y <libftdi> ejecutando los comandos:

sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libftdi-dev

Ahora compilamos, hacemos avrdude después de extraer el archivo y navegamos a su carpeta:

./configure --enable-libusb --enable-libftdi
make

Ahora debemos buscar la configuración correcta, dentro del archivo que viene con avrdude <avrdude.conf> se debe encontrar:

# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
# Note: pins are numbered from 1!
programmer
  id    = "arduino-ft232r";
  desc  = "Arduino: FT232R connected to ISP";
  type  = "ftdi_syncbb";
  connection_type = usb;
  miso  = 3;  # CTS X3(1)
  sck   = 5;  # DSR X3(2)
  mosi  = 6;  # DCD X3(3)
  reset = 7;  # RI  X3(4)
;

El mapeo de pines a números funcionara con base en la siguiente tabla:

Los números se refieren al número de bits (es decir, en el rango de 0 a 7) en el byte de datos "bit banged". Podemos ver de la tabla anterior que, por ejemplo, el MISO en el encabezado ICSP está asociado al CTS en el FT232RL. Por lo tanto, MISO es el bit de datos 3, del mismo modo, SCK es el bit de datos 5, y así sucesivamente.

Intentemos ahora probar ejecutando el siguiente comando:

./avrdude -C avrdude.conf -carduino-ft232r -pm328p  -v

Ahora debemos corregir permisos creando un archivo en la carpeta /etc/udev/rules.d/ llamado <71-FTDI.rules> dentro de esté ira:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666"

Los números pueden variar para su tablero. Debe encontrar el proveedor y el identificador del producto. En Ubuntu puedes hacer lsusb y ver (entre otras cosas):

Bus 003 Device 061: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
                       ^^^^ ^^^^

Tengamos en cuenta los dos números hexadecimales, que se copian en el archivo de reglas. Después de hacer eso, le decimos al sistema que vuelva a cargar las reglas ejecutando el comando:

sudo udevadm control --reload-rules

A continuación, desconectamos y volvemos a conectar la placa FTDI para que se actualicen o recarguen los nuevos permisos.

Ahora vamos a verificar si se detecta una placa de prueba que posee un ATmega328P (como la Diavolino), utilizaremos cable dupont hembra-hembra o un cable plano ribbon de 6 hilos uno-a-uno, avrdude debería funcionar y leer el chip:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD

avrdude: safemode: hfuse reads as DE
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)

avrdude done.  Thank you.


Como acabamos de constatar, esta placa FTDI se puede utilizar tanto como un convertidor de USB a serie, como también un programador ICSP para los chips AVR.

Descarga aquí avrdude.exe con soporte FTDI bitbang para Windows 10




AVR DUDE = AVR Downloader/UploaDEr, AVRdude es un software de código abierto que se utiliza para programar Microcontroladores AVR de Atmel (ahora microchip). También puede usarlo para programar EEPROM's, memorias Flash e incluso fusibles y bits de bloqueo. ademas al instalar AVRDUDE éste no toca la variable %PATH%, por lo que no causará ningún problema con el IDE de Arduino.


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Finalmente recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Convierte fácilmente una Fuente ATX de PC en una Fuente para alimentar tus proyectos Arduino y/o Raspberry Pi

USB a Serial en Arduino - Generalidades

Como Grabar el Bootloader de Arduino

2 comentarios:

  1. Como se puede compilar en windows

    ResponderBorrar
    Respuestas
    1. Hola, muchas gracias por comentar, al final del post hay un hipervinculo con "descargue aqui avrdude.exe con soporte FTDI bitbang para Windows 11", aunque ten en cuenta que hoy en dia es muy facil montar linux en una máquina virtual bajo windows, con VMware-workstation por ejemplo.

      Borrar