FTDI Breakout mit zusätzlichem ISP-Anschluss

12

TL; DR - Können die sechs gelben ISP-Pins als normaler ISP verwendet werden?


Das übliche USB-TTL FTDI Breakout Board sieht folgendermaßen aus:

USB-TTL FTDI Breakout Board

Kürzlich bin ich auf eine Variante des unten gezeigten Boards gestoßen. Wofür sind jedoch die zusätzlichen gelben Header-Pins auf dieser Platine vorgesehen? Sie sind als ISP gekennzeichnet.

USB-TTL FTDI Breakout Board mit ISP

Hier ist eine Ansicht von hinten:

USB-TTL FTDI Breakout Board mit ISP Rückseite

Können sie also wirklich als Standard-ISP / ICSP verwendet werden?

AVR-ICSP

Gemäß dem folgenden Diagramm, das die 6 fraglichen Pins kennzeichnet, bin ich mir jedoch nicht sicher, ob eine gültige Korrelation der Signalleitungen vorliegt.

USB-TTL FTDI Breakout Board mit ISP mit Legende

Das heißt, würde CTS zu MISO, RI zu RST, DSR zu SCK und DCD zu MOSI funktionieren? Oder ist deshalb eine spezielle Version von avrdude erforderlich, wie in FT232RL erwähnt: USB to Serial 232 TTL Adapter -? Und ISP? - Beitrag Nr. 6 :

Als neue Funktion steht ein 6-poliger ISP-Header zur Verfügung. Mit avrdude und avrftdi können Sie Atmels- und Arduino-Bootloader programmieren. Eine spezielle Version von avrdude mit kompiliertem FTDI-Treiber ist erforderlich.

Der bereitgestellte Link zu dieser Version von avrdude mit dem kompilierten FTDI-Treiber ist jedoch nicht mehr verfügbar.

In Post 7 wird auch gesagt, dass diese Pins tatsächlich einem X3-Anschluss entsprechen, wie er auf den älteren Arduino Dicimila / NG / Duemilanove- Platinen zu finden ist.

X3 Header auf Diecimila

und diese können (offensichtlich) so verwendet werden, als ein bisschen knalliger SPI,

Verbinden des X3-Headers mit dem ISP-Header auf Diecimila

Es ist zu beachten, dass die RI-, CTS-, DCD- und DSR-Pins (mit RSD gekennzeichnet) an den Seiten der ursprünglichen FTDI-Breakout-Platine verfügbar sind. Bietet die Breakout-Karte mit dem ISP-Header nur über einen anderen Header Zugriff auf dieselben Signale?

Ich bin ein wenig verwirrt - habe ich mir das gerade überlegt, und diese Breakout-Karte ist einfach ein ISP / ICSP-Header und ein FTDI-Anschluss, die in einer Karte zusammengefasst sind (wenn sie mit der entsprechenden Version von avrdude verwendet werden)? Oder ist es kein gewöhnlicher ISP-Header? Ich kann keine spezifische Dokumentation zu dieser Art von Breakout-Board finden, wie in Beitrag 4 angegeben .

Kann jemand definitiv sagen, wofür diese sechs Stifte sind? Wenn es sich nicht um einen normalen ISP-Header handelt, können Sie eine detaillierte Verwendung bereitstellen? Ein Schaltplan wäre hilfreich.

Greenonline
quelle

Antworten:

14

Es gibt einen Thread darüber im Arduino Forum - jemand hatte eine ähnliche Frage.


Ich habe einen Schaltplan (unten) gefunden, der nicht für diese Karte gilt. Die Header-Pins sind jedoch genauso beschriftet wie Sie, sodass sie plausibel ähnlich sind.

FTDI-Kartenschema

Es scheint, dass der Header für den "Synchronous Bit Bang Mode" verwendet wird, wie hier dokumentiert: Bit Bang Modi für FT232R und FT245R (Application Note AN_232R-01, Dokumentreferenznummer: FT_000339)


Sie können diesen Header tatsächlich als SPI-Programmierer konfigurieren, wie beispielsweise in FT232R Bitbang Programmer beschrieben .


Ich habe einen Test gemacht, da ich ein ähnliches Board in meiner Teileschublade hatte:

FTDI Board Front

Es war ein 6-poliger Header vorgesehen, der Ihrem ähnlich war. Wenn wir das Brett umdrehen, können wir sehen, dass sie genau so beschriftet waren wie deine:

FTDI Board zurück

Ich habe einen Header (gelb, um konsistent zu sein) angelötet und dabei Folgendes erhalten:

FTDI-Karte mit Header

Ich habe einen weißen Punkt hinzugefügt, um Pin 1 (sichtbar am Rand) anzuzeigen, damit ich das Kabel richtig herum einstecken kann.


Als ich versuchte, das Board zu benutzen, bekam ich folgende Nachricht von avrdude:

avrdude: Fehler: Keine libftdi oder libusb Unterstützung. Installieren Sie libftdi1 / libusb-1.0 oder libftdi / libusb und führen Sie configure / make erneut aus

Also musste es von Grund auf neu kompiliert werden! Ich benutze Ubuntu 14.04, wenn Sie versuchen, mitzumachen. :) :)


Laden Sie avrdude herunter

Gehen Sie zur Website http://www.nongnu.org/avrdude/

Ich habe die Quelle der Version 6.3 heruntergeladen: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Installieren Sie libusb und libftdi

Vor dem Kompilieren musste ich libusb und libftdi holen:

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

Kompilieren Sie avrdude

Jetzt machen wir avrdude, nachdem wir das Archiv extrahiert und zu seinem Ordner navigiert haben:

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

Finden Sie die richtige Konfiguration

In der avrdude.confDatei, die mit avrdude geliefert wird, habe ich (nach einigem Nachdenken) den richtigen Eintrag gefunden:

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

Die Zuordnung von Pins zu Zahlen funktioniert folgendermaßen ... Aus dem oben erwähnten PDF über den Bit-Bang-Modus haben wir diese Tabelle mit Anmerkungen in Blau von mir:

Bit Bang Mode Pins

Die Zahlen beziehen sich auf die Bitnummer (dh im Bereich von 0 bis 7) im Datenbyte "Bit Banged". Aus dem früheren Schema ist ersichtlich, dass beispielsweise MISO im ICSP-Header mit CTS im FT232RL verbunden ist. Somit ist MISO das Datenbit 3, das wir in der obigen Konfiguration als avrdude bezeichnen. In ähnlicher Weise ist SCK das Datenbit 5 und so weiter.

Ich habe versucht, so zu testen:

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

Festgelegte Berechtigungen

Ich habe einen Berechtigungsfehler erhalten, der behoben wurde, indem eine Datei in dem Ordner /etc/udev/rules.d/namens erstellt wurde 71-FTDI.rules. Darin befindet sich:

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

Die Zahlen können für Ihr Board variieren. Sie müssen den Lieferanten und die Produkt-ID finden. In Ubuntu können Sie lsusb(unter anderem) Folgendes tun und sehen:

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

Beachten Sie die beiden Hex-Zahlen, die in die Regeldatei kopiert werden.

Weisen Sie das System anschließend an, die Regeln neu zu laden:

sudo udevadm control --reload-rules

Ziehen Sie dann den Stecker aus der Steckdose und schließen Sie die FTDI-Karte erneut an, damit sie die neuen Berechtigungen erkennt.

Testplatinenerkennung

Schließlich funktioniert die obige Avrdude-Zeile und liest den 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.

Ich hatte meine an einen ATmega328P angeschlossen.


Beispiel verbunden mit einem Diavolino

Programmieren eines Atmega328P

Sobald wir so weit sind, verbinden Sie einfach die FTDI-Karte mit einem durchgehenden Kabel mit Ihrer Zielkarte.


Zusammenfassung

Die FTDI-Karte, die Sie haben (und die, die ich habe), kann wie oben beschrieben als ICSP-Programmierer für die AVR-Chips verwendet werden. Somit kann eine einfache Karte sowohl ein USB-zu-Seriell-Wandler als auch ein ICSP-Programmierer sein.

Ich sehe ähnliche Boards, die bei eBay für etwa 5 US-Dollar verkauft werden. Das ist wahrscheinlich eine recht billige Programmieroption.

Nick Gammon
quelle
Danke Nick. Ja, dieser Thread in den Arduino-Foren ist derjenige, auf den ich in meiner Frage verwiesen habe, aber es war nicht wirklich klar, wie man ihn verwendet - aber er hat sinnvollerweise auf den X3-Header-Blog verwiesen. Der zweite Link, den Sie bereitstellen, scheint dieses Thema noch weiter zu erweitern, ausgezeichnet, danke. Es gibt jedoch noch keinen Blog, der speziell für dieses Board geschrieben wurde, was seltsam ist.
Greenonline
Ich glaube, wenn Sie dies tun, würden Sie mit dem FTDI als USB-Gerät sprechen und die serielle Schnittstelle des Betriebssystems des Betriebssystems nicht mehr verwenden. Je nachdem, welches System zum Hosten verwendet wird, kann es daher zu zusätzlichen Problemen mit Setup / Treiber / Berechtigung kommen es. Die leistungsfähigeren FT4232H / FT2232H / FT232H-Teile von FTDI werden häufig auf diese Weise als JTAG-Schnittstelle zu fortschrittlicheren Prozessoren verwendet.
Chris Stratton
3
Siehe geänderte Antwort. Ich habe mein Board dazu gebracht, als ICSP-Programmierer zu arbeiten.
Nick Gammon
1
Fantastische, großartige Arbeit. Das ist die Dokumentation, nach der ich gesucht habe.
Greenonline