FTDI Breakout con conector ISP adicional

12

TL; DR: ¿se pueden usar los seis pines ISP amarillos como un ISP normal?


La placa de conexión FTDI USB-TTL habitual se ve así:

Tarjeta de conexión FTDI USB-TTL

Recientemente, me encontré con una variante del tablero que se muestra a continuación. Sin embargo, ¿para qué son los pines de cabecera amarillos adicionales en esta placa? Están etiquetados como ISP.

Tarjeta de conexión USB-TTL FTDI con ISP

Aquí hay una vista de la parte trasera:

Tarjeta de conexión USB-TTL FTDI con ISP trasero

Entonces, ¿pueden realmente usarse como un ISP / ICSP estándar?

AVR-ICSP

Sin embargo, según el diagrama a continuación, que etiqueta los 6 pines en cuestión, no estoy seguro de que haya una correlación válida de las líneas de señal.

Placa de conexión FTDI USB-TTL con ISP con leyenda

Es decir, ¿funcionarían CTS a MISO, RI a RST, DSR a SCK y DCD a MOSI? ¿O es por eso que se requiere una versión especial de avrdude, como se menciona en FT232RL: Adaptador USB a Serial 232 TTL -? E ISP? - Publicación # 6 :

Como nueva característica, hay disponible un encabezado ISP de 6 pines. Con él, avrdude y avrftdi puedes programar los cargadores de arranque Atmels y Arduino. Es necesaria una versión especial de avrdude con el controlador FTDI compilado.

Sin embargo, el enlace proporcionado a esa versión de avrdude, con el controlador FTDI compilado, está muerto.

También se dice, en la publicación # 7 , que estos pines son en realidad equivalentes a un conector X3, como se encuentra en las placas Arduino Dicimila / NG / Duemilanove más antiguas .

X3 encabezado en Diecimila

y esos pueden (evidentemente) usarse así, como un SPI un poco golpeado,

Conexión del encabezado X3 al encabezado ISP en Diecimila

Cabe señalar que los pines RI, CTS, DCD y DSR (etiquetados como RSD) están disponibles, a lo largo de los lados de la placa de conexión FTDI original. Entonces, ¿la placa de conexión con el encabezado ISP solo proporciona acceso a estas mismas señales usando un encabezado diferente?

Estoy un poco confundido: ¿acabo de pensar esto, y esta placa de conexión es simplemente un encabezado ISP / ICSP y un conector FTDI enrollado en una placa (cuando se usa con la versión adecuada de avrdude)? ¿O no es un encabezado ISP habitual? No puedo encontrar ninguna documentación específica relacionada con este tipo de tablero de conexiones, como se indica en la publicación n.º 4 .

¿Alguien puede decir, definitivamente, para qué sirven estos seis pines? Si no son un encabezado ISP normal, ¿podría proporcionar una forma detallada de usarlo? Un esquema sería útil.

Greenonline
fuente

Respuestas:

14

Hay un hilo sobre eso en el Foro Arduino : alguien tenía una pregunta similar.


Encontré un esquema (a continuación) que no es para esa placa, sin embargo, los pines del encabezado están etiquetados de la misma manera que lo encontraste, por lo que es plausiblemente similar.

Esquema del tablero FTDI

Parece que el encabezado se usa para el "modo de sincronización de bits síncrono" como se documenta aquí: modos de explosión de bits para FT232R y FT245R (Nota de aplicación AN_232R-01, número de referencia del documento: FT_000339)


De hecho, puede configurar ese encabezado para que sea un programador SPI, como se describe, por ejemplo, en FT232R Bitbang Programmer .


Hice una prueba ya que tenía un tablero similar en mi cajón de piezas:

Frente de tablero FTDI

Tenía una disposición para un encabezado de 6 pines similar al tuyo. Volteando el tablero podemos ver que fueron etiquetados exactamente igual que el suyo:

FTDI tablero de vuelta

Solde en un encabezado (en amarillo, para ser consistente) dándome esto:

Tablero FTDI con encabezado

Agregué un punto blanco para indicar el pin 1 (visible en el borde) para enchufar el cable de la manera correcta.


Cuando intenté usar el tablero, recibí este mensaje de avrdude:

avrdude: error: no hay soporte para libftdi o libusb. Instale libftdi1 / libusb-1.0 o libftdi / libusb y ejecute configure / make nuevamente

Entonces, ¡tuvo que ser compilado desde cero! Estoy usando Ubuntu 14.04 si estás tratando de seguirlo. :)


Descargar avrdude

Vaya al sitio http://www.nongnu.org/avrdude/

Descargué la fuente de la versión 6.3: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Instalar libusb y libftdi

Antes de compilar tuve que tomar libusb y libftdi:

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

Compilar avrdude

Ahora hacemos avrdude después de extraer el archivo y navegar a su carpeta:

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

Encuentra la configuración correcta

Dentro del avrdude.confarchivo que viene con avrdude encontré (después de reflexionar) esta parece ser la entrada correcta:

# 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)
;

La asignación de pines a números funciona de esta manera ... Del PDF sobre el modo de explosión de bits mencionado anteriormente tenemos esta tabla, con anotaciones en azul por mí:

Pines de modo de explosión de bits

Los números se refieren al número de bit (es decir, en el rango de 0 a 7) en el byte de datos "bit banged". Podemos ver en el esquema anterior que, por ejemplo, MISO en el encabezado ICSP está conectado a CTS en el FT232RL. Por lo tanto, MISO es el bit de datos 3, que le decimos a avrdude en la configuración anterior. De manera similar, SCK es el bit de datos 5, y así sucesivamente.

Intenté probar así:

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

Arreglar permisos

Obtuve un error de permisos que se solucionó creando un archivo en la carpeta /etc/udev/rules.d/llamada 71-FTDI.rules. Dentro de esto está:

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

Los números pueden variar para su tablero. Necesita encontrar el proveedor y la identificación del producto. En Ubuntu puedes hacer lsusby ver (entre otras cosas):

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

Tenga en cuenta los dos números hexadecimales, que se copian en el archivo de reglas.

Después de hacer eso, dígale al sistema que vuelva a cargar las reglas:

sudo udevadm control --reload-rules

Luego, desenchufe y vuelva a enchufar la placa FTDI para que note los nuevos permisos.

Prueba de detección de placa

Finalmente, la línea avrdude anterior funciona y lee 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.

Tenía el mío conectado a un ATmega328P.


Ejemplo conectado a un Diavolino

Programando un Atmega328P

Una vez que hayamos llegado tan lejos, simplemente conecte la placa FTDI a su placa objetivo con un cable directo.


Resumen

La placa FTDI que tiene (y la que tengo) se puede usar como programador ICSP para los chips AVR, como se describió anteriormente. Por lo tanto, una placa simple puede ser un convertidor de USB a serie y también un programador ICSP.

Veo tableros similares que se venden en eBay por alrededor de $ 5, por lo que probablemente sea una opción de programación bastante barata.

Nick Gammon
fuente
Gracias Nick Sí, ese hilo en los foros de Arduino es el que mencioné en mi pregunta, pero no estaba realmente claro sobre cómo usarlo, pero útilmente señaló el blog de encabezado X3. El segundo enlace que proporciona parece ampliar aún más ese tema, excelente, gracias. Sin embargo, todavía no hay ningún blog escrito específicamente para este foro en particular, lo cual es extraño.
Greenonline
Creo que si hace esto, estaría hablando con el FTDI como un dispositivo USB y ya no usaría la API del puerto serie del sistema operativo, por lo que puede haber problemas adicionales de configuración / controlador / permiso dependiendo del sistema que se esté utilizando para alojar eso. Las piezas FT4232H / FT2232H / FT232H más capaces de FTDI a menudo se usan de esta manera como interfaces JTAG para procesadores más avanzados.
Chris Stratton
3
Ver respuesta enmendada. Conseguí que mi junta trabajara como programador de ICSP.
Nick Gammon
1
Fantástico, gran trabajo. Esa es la documentación que buscaba.
Greenonline