FTDI Breakout avec connecteur ISP supplémentaire

12

TL; DR - Les six broches FAI jaunes peuvent-elles être utilisées comme FAI normal?


La carte de dérivation USB-TTL FTDI habituelle ressemble à ceci:

Carte de dérivation USB-TTL FTDI

Récemment, je suis tombé sur une variante du tableau ci-dessous. Mais à quoi servent les broches jaunes supplémentaires sur cette carte? Ils sont labellisés ISP.

Carte de dérivation USB-TTL FTDI avec FAI

Voici une vue de l'arrière:

Carte de dérivation USB-TTL FTDI avec arrière ISP

Peut-on vraiment les utiliser comme ISP / ICSP standard?

AVR-ICSP

Cependant, selon le schéma ci-dessous, qui identifie les 6 broches en question, je ne suis pas sûr qu'il existe une corrélation valide des lignes de signal.

Carte de dérivation USB-TTL FTDI avec FAI avec légende

C'est-à-dire, CTS à MISO, RI à RST, DSR à SCK et DCD à MOSI fonctionneraient-ils? Ou est-ce la raison pour laquelle une version spéciale d'avrdude est requise, comme mentionné dans FT232RL: Adaptateur USB vers série 232 TTL -? Et ISP? - poste # 6 :

En tant que nouvelle fonctionnalité, un en-tête ISP à 6 broches est disponible. Avec lui, avrdude et avrftdi vous pouvez programmer des bootloaders Atmels et Arduino. Une version spéciale d'avrdude avec un pilote FTDI compilé est nécessaire.

Cependant, le lien fourni vers cette version d'avrdude, avec le pilote FTDI compilé, est mort.

Il est également dit, dans le post # 7 , que ces broches sont en fait équivalentes à un connecteur X3, comme sur les anciennes cartes Arduino Dicimila / NG / Duemilanove .

En-tête X3 sur Diecimila

et ceux-ci peuvent (évidemment) être utilisés comme tels, comme un SPI un peu cogné,

Connexion de l'en-tête X3 à l'en-tête du FAI sur Diecimila

Il convient de noter que les broches RI, CTS, DCD et DSR (étiquetées RSD) sont disponibles, le long des côtés de la carte de dérivation FTDI d'origine. Ainsi, la carte de dérivation avec l'en-tête ISP donne-t-elle simplement accès à ces mêmes signaux en utilisant un en-tête différent?

Je suis un peu confus - ai-je un peu trop réfléchi à cela, et cette carte de dérivation est simplement un en-tête ISP / ICSP et un connecteur FTDI enroulé dans une seule carte (lorsqu'elle est utilisée avec la version appropriée d'avrdude)? Ou n'est-ce pas un en-tête ISP habituel? Je ne trouve aucune documentation spécifique concernant ce type de carte de dérivation, comme indiqué dans le post # 4 .

Quelqu'un peut-il dire définitivement à quoi servent ces six broches? S'ils ne sont pas un en-tête ISP normal, pourriez-vous fournir une manière détaillée de l'utiliser? Un schéma serait utile.

Greenonline
la source

Réponses:

14

Il y a un fil à ce sujet sur le forum Arduino - quelqu'un avait une question similaire.


J'ai trouvé un schéma (ci-dessous) qui n'est pas pour cette carte, mais les broches d'en-tête sont étiquetées de la même manière que vous avez trouvé, donc c'est plausiblement similaire.

Schéma de la carte FTDI

Il semble que l'en-tête soit utilisé pour le "mode de bit binaire synchrone" comme indiqué ici: Modes de bit bang pour le FT232R et FT245R (Note d'application AN_232R-01, référence document: FT_000339)


Vous pouvez en fait configurer cet en-tête pour qu'il soit un programmeur SPI, comme décrit par exemple dans FT232R Bitbang Programmer .


J'ai fait un test car j'avais une planche similaire dans mon tiroir de pièces:

Face avant de la carte FTDI

Il avait prévu un en-tête à 6 broches similaire au vôtre. En retournant la planche, nous pouvons voir qu'ils étaient étiquetés exactement comme les vôtres:

Carte FTDI de retour

J'ai soudé sur un en-tête (en jaune, pour être cohérent) me donnant ceci:

Carte FTDI avec en-tête

J'ai ajouté un point blanc pour indiquer la broche 1 (visible sur le bord) alors je branche le câble dans le bon sens.


Lorsque j'ai essayé d'utiliser le forum, j'ai reçu ce message d'avrdude:

avrdude: erreur: pas de support libftdi ou libusb. Installez libftdi1 / libusb-1.0 ou libftdi / libusb et exécutez à nouveau configure / make

Il fallait donc le compiler à partir de zéro! J'utilise Ubuntu 14.04 si vous essayez de suivre. :)


Télécharger avrdude

Allez sur le site http://www.nongnu.org/avrdude/

J'ai téléchargé la source de la version 6.3: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Installez libusb et libftdi

Avant de compiler, j'ai dû saisir libusb et libftdi:

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

Compiler avrdude

Maintenant, nous faisons avrdude après avoir extrait l'archive et navigué vers son dossier:

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

Trouver la configuration correcte

Dans le avrdude.conffichier fourni avec avrdude, j'ai trouvé (après quelques réflexions) que cela semble être la bonne entrée:

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

Le mappage des broches aux nombres fonctionne comme ceci ... Du PDF sur le mode bit bang mentionné ci-dessus, nous avons ce tableau, avec des annotations en bleu par moi:

Broches de mode Bit Bang

Les nombres se réfèrent au numéro de bit (c'est-à-dire dans la plage de 0 à 7) dans l'octet de données "bit banged". Nous pouvons voir d'après le schéma précédent que, par exemple, MISO sur l'en-tête ICSP est câblé à CTS sur le FT232RL. Ainsi, MISO est le bit de données 3, que nous indiquons à avrdude dans la configuration ci-dessus. De même SCK est le bit de données 5, et ainsi de suite.

J'ai essayé de tester comme ça:

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

Autorisations de correctifs

J'ai obtenu une erreur d'autorisation qui a été corrigée en créant un fichier dans le dossier /etc/udev/rules.d/appelé 71-FTDI.rules. À l'intérieur c'est:

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

Les nombres peuvent varier pour votre planche. Vous devez trouver le fournisseur et l'ID du produit. Dans Ubuntu, vous pouvez faire lsusbet voir (entre autres):

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

Notez les deux nombres hexadécimaux, qui sont copiés dans le fichier de règles.

Après cela, dites au système de recharger les règles:

sudo udevadm control --reload-rules

Débranchez et rebranchez ensuite la carte FTDI pour lui faire remarquer les nouvelles autorisations.

Détection de la carte de test

Enfin, la ligne avrdude ci-dessus fonctionne et lit la puce:

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.

J'avais le mien branché sur un ATmega328P.


Exemple connecté à un Diavolino

Programmation d'un Atmega328P

Une fois que nous sommes arrivés jusqu'ici, il vous suffit de connecter la carte FTDI à votre carte cible avec un câble droit.


Résumé

La carte FTDI que vous avez (et celle que j'ai) peut être utilisée comme programmeur ICSP pour les puces AVR, comme décrit ci-dessus. Ainsi, une simple carte peut être à la fois un convertisseur USB vers série et également un programmeur ICSP.

Je vois des planches similaires se vendre sur eBay pour environ 5 $, ce qui est probablement une option de programmation assez bon marché.

Nick Gammon
la source
Merci Nick. Oui, ce fil sur les forums Arduino est celui auquel j'ai fait référence dans ma question, mais il n'était pas vraiment clair comment l'utiliser - mais il pointait utilement vers le blog d'en-tête X3. Le deuxième lien que vous fournissez semble approfondir ce sujet, excellent, merci. Cependant, il n'y a toujours pas de blog spécifiquement écrit pour ce forum particulier, ce qui est étrange.
Greenonline
Je crois que si vous faites cela, vous parlerez au FTDI en tant que périphérique USB et n'utiliserez plus l'API du port série du système d'exploitation, il peut donc y avoir des problèmes de configuration / pilote / autorisation supplémentaires selon le système que vous utilisez pour héberger il. Les pièces FT4232H / FT2232H / FT232H plus performantes de FTDI sont souvent utilisées de cette façon comme interfaces JTAG avec des processeurs plus avancés.
Chris Stratton
3
Voir la réponse modifiée. J'ai fait fonctionner ma carte en tant que programmeur ICSP.
Nick Gammon
1
Fantastique, excellent travail. C'est la documentation que je recherchais.
Greenonline