FTDI Breakout com conector ISP adicional


12

TL; DR - Os seis pinos amarelos do ISP podem ser usados ​​como um ISP normal?


A placa de distribuição USB-TTL FTDI usual é assim:

Placa USB-TTL FTDI Breakout

Recentemente, deparei-me com uma variante do quadro mostrada abaixo. No entanto, para que servem os pinos amarelos adicionais neste quadro? Eles são rotulados como ISP.

Placa USB-TTL FTDI Breakout com ISP

Aqui está uma visão da parte traseira:

Placa USB-TTL FTDI Breakout com traseira do ISP

Então eles podem realmente ser usados ​​como um ISP / ICSP padrão?

AVR-ICSP

No entanto, de acordo com o diagrama abaixo, que rotula os 6 pinos em questão, não tenho certeza de que exista uma correlação válida de linhas de sinal.

Placa USB-TTL FTDI Breakout com ISP com legenda

Ou seja, CTS para MISO, RI para RST, DSR para SCK e DCD para MOSI funcionariam? Ou é por isso que é necessária uma versão especial do avrdude, como mencionado no FT232RL: Adaptador USB para Serial 232 TTL -? E ISP? - pós # 6 :

Como um novo recurso, há um cabeçalho ISP de 6 pinos disponível. Com ele, avrdude e avrftdi, você pode programar os gerenciadores de inicialização Atmels e Arduino. Uma versão especial do avrdude com o driver FTDI compilado é necessária.

No entanto, o link fornecido para essa versão do avrdude, com o driver FTDI compilado, está inoperante.

Também é dito, no post # 7 , que esses pinos são realmente equivalentes a um conector X3, como encontrado nas placas mais antigas do Arduino Dicimila / NG / Duemilanove .

Cabeçalho X3 em Diecimila

e esses (evidentemente) podem ser usados ​​dessa maneira, como um SPI um pouco danificado,

Conectando o cabeçalho X3 ao cabeçalho ISP no Diecimila

Deve-se observar que os pinos RI, CTS, DCD e DSR (RSD rotulado) estão disponíveis, ao longo dos lados da placa original do FTDI. Então, a placa de interrupção com o cabeçalho ISP apenas fornece acesso a esses mesmos sinais usando um cabeçalho diferente?

Estou um pouco confuso - acabei de pensar nisso, e essa placa de interrupção é simplesmente um cabeçalho ISP / ICSP e um conector FTDI enrolado em uma placa (quando usado com a versão apropriada do avrdude)? Ou não é um cabeçalho de ISP comum? Não consigo encontrar nenhuma documentação específica relacionada a esse tipo de breakout board, conforme indicado no post # 4 .

Alguém pode dizer, definitivamente, para que servem esses seis pinos? Se eles não forem um cabeçalho ISP normal, você poderia fornecer uma maneira detalhada de usá-lo? Um esquema seria útil.

Respostas:


14

Há um tópico sobre isso no Fórum do Arduino - alguém teve uma pergunta semelhante.


Eu encontrei um esquema (abaixo) que não é para essa placa, no entanto, os pinos do cabeçalho são rotulados da mesma forma que você encontrou, por isso é plausivelmente semelhante.

Esquema da placa FTDI

Parece que o cabeçalho é usado para o "modo Sincronizado de Bit Bang", conforme documentado aqui: Modos de Bit Bang para o FT232R e o FT245R (nota de aplicação AN_232R-01, nº de referência do documento: FT_000339)


De fato, você pode configurar esse cabeçalho para ser um programador SPI, como descrito, por exemplo, no FT232R Bitbang Programmer .


Fiz um teste porque tinha uma placa semelhante na minha gaveta de peças:

Frente da placa FTDI

Ele tinha um cabeçalho de 6 pinos semelhante ao seu. Virando o quadro, podemos ver que eles foram rotulados exatamente da mesma forma que a sua:

Placa FTDI de volta

Soldado em um cabeçalho (em amarelo, para ser consistente), me dando o seguinte:

Placa FTDI com cabeçalho

Adicionei um ponto branco para indicar o pino 1 (visível na borda) para conectar o cabo da maneira correta.


Quando tentei usar o quadro, recebi esta mensagem da avrdude:

avrdude: error: sem suporte a libftdi ou libusb. Instale libftdi1 / libusb-1.0 ou libftdi / libusb e execute configure / make again

Então, ele teve que ser compilado do zero! Estou usando o Ubuntu 14.04, se você está tentando acompanhar. :)


Baixar avrdude

Acesse o site http://www.nongnu.org/avrdude/

Eu baixei a versão 6.3 fonte: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Instale libusb e libftdi

Antes de compilar, tive que pegar o libusb e o libftdi:

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

Compilar avrdude

Agora criamos avrdude após extrair o arquivo e navegar para sua pasta:

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

Encontre a configuração correta

Dentro do avrdude.confarquivo que vem com o avrdude eu encontrei (depois de algumas ponderações) esta parece ser a entrada correta:

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

O mapeamento de pinos para números funciona assim ... No PDF sobre o modo bit bang mencionado acima, temos esta tabela, com anotações em azul por mim:

Pinos do modo bit bang

Os números referem-se ao número do bit (ou seja, no intervalo de 0 a 7) no byte de dados "bit banged". Podemos ver no esquema anterior que, por exemplo, o MISO no cabeçalho do ICSP está conectado ao CTS no FT232RL. Assim, o MISO é o bit de dados 3, que dizemos a avrdude na configuração acima. Da mesma forma, o SCK é o bit de dados 5 e assim por diante.

Eu tentei testar assim:

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

Corrigir permissões

Eu tenho um erro de permissões que foi corrigido criando um arquivo na pasta /etc/udev/rules.d/chamada 71-FTDI.rules. Dentro deste é:

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

Os números podem variar para o seu quadro. Você precisa encontrar o fornecedor e o ID do produto. No Ubuntu, você pode fazer lsusbe ver (entre outras coisas):

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

Observe os dois números hexadecimais que são copiados no arquivo de regras.

Depois de fazer isso, diga ao sistema para recarregar as regras:

sudo udevadm control --reload-rules

Em seguida, desconecte e reconecte a placa FTDI para que ela observe as novas permissões.

Detecção da placa de teste

Finalmente, a linha avrdude acima funciona e lê o 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.

Eu tinha o meu conectado a um ATmega328P.


Exemplo conectado a um Diavolino

Programando um Atmega328P

Quando chegamos até aqui, basta conectar a placa FTDI à placa de destino com um cabo direto.


Sumário

A placa FTDI que você possui (e a que eu tenho) pode ser usada como programador ICSP para os chips AVR, conforme descrito acima. Assim, uma placa simples pode ser um conversor USB para serial e também um programador ICSP.

Vejo placas semelhantes sendo vendidas no eBay por cerca de US $ 5, o que provavelmente é uma opção de programação barata.


Obrigado Nick. Sim, esse tópico nos fóruns do Arduino é o que eu mencionei na minha pergunta, mas não ficou muito claro como usá-lo - mas apontou o blog do cabeçalho X3. O segundo link que você fornece parece expandir ainda mais esse tópico, excelente, obrigado. No entanto, ainda não há nenhum blog escrito especificamente para esse fórum em particular, o que é estranho.
Greenonline 27/10/16

Acredito que, se você fizer isso, estará conversando com o FTDI como um dispositivo USB e não mais usando a API da porta serial do sistema operacional; portanto, pode haver problemas adicionais de configuração / driver / permissão, dependendo do sistema usado para hospedar isto. As peças FT4232H / FT2232H / FT232H, mais capazes da FTDI, costumam ser usadas dessa maneira como interfaces JTAG para processadores mais avançados.
Chris Stratton

3
Ver resposta alterada. Consegui que meu conselho trabalhasse como programador de ICSP.
Nick Gammon

11
Fantástico, ótimo trabalho. Essa é a documentação que eu procurava.
Greenonline 27/10/16
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.