ISPコネクタを追加したFTDIブレークアウト


12

TL; DR-6つの黄色のISPピンを通常のISPとして使用できますか?


通常のUSB-TTL FTDIブレークアウトボードは次のようになります。

USB-TTL FTDIブレークアウトボード

最近、私は以下に示すボードの変種に出くわしました。しかし、このボードの追加の黄色のヘッダーピンは何のためのものですか?それらはISPというラベルが付いています。

ISPを備えたUSB-TTL FTDIブレークアウトボード

これが背面図です。

ISPリア付きUSB-TTL FTDIブレークアウトボード

それで、それらは本当に標準のISP / ICSPとして使用できますか?

AVR-ICSP

ただし、問題の6つのピンにラベルを付ける次の図によると、信号線の有効な相関関係があるかどうかはわかりません。

凡例付きのISPを備えたUSB-TTL FTDIブレークアウトボード

つまり、CTSからMISO、RIからRST、DSRからSCK、DCDからMOSIは機能しますか?それとも、FT232RLで言及されているように、avrdudeの特別なバージョンが必要なのはなぜですか。USBからシリアル232 TTLアダプタ、およびISPですか。-投稿#6

新機能として、6ピンISPヘッダーが利用可能です。それを使用して、avrdudeとavrftdiでAtmelsとArduinoのブートローダーをプログラムできます。コンパイルされたFTDIドライバーを含むavrdudeの特別なバージョンが必要です。

ただし、コンパイルされたFTDIドライバーを含むavrdudeのそのバージョンへのリンクは無効です。

以前のArduino Dicimila / NG / Duemilanoveボードで見られるように、これらのピンは実際にはX3コネクタと同等であるともポスト#7で述べられています。

DiecimilaのX3ヘッダー

そして、それらは(明らかに)ビットバングSPIとしてそのように使用できます、

X3ヘッダーをDiecimilaのISPヘッダーに接続する

元のFTDIブレークアウトボードの側面に沿って、RI、CTS、DCD、およびDSR(RSDのラベルが付いている)ピンが利用可能であることに注意してください。では、ISPヘッダーを備えたブレークアウトボードは、異なるヘッダーを使用してこれらの同じ信号へのアクセスを提供するだけですか?

私は少し混乱しています-これを考えすぎましたか?このブレイクアウトボードは、ISP / ICSPヘッダー FTDIコネクタが1つのボードにロールインされたものです(適切なバージョンのavrdudeと共に使用した場合)?それとも通常のISPヘッダーではありませんか?ポスト#4に記載されているように、このタイプのブレークアウトボードに関連する特定のドキュメントは見つかりません。

確かに、これらの6つのピンが何のためにあるのか誰もが言えるでしょうか?それらが通常のISPヘッダーでない場合、それを使用する詳細な方法を提供できますか?回路図が役に立ちます。

回答:


14

Arduinoフォーラムにスレッドに関するスレッドがあります-誰かが同様の質問をしました。


そのボード用ではない回路図(下)を見つけましたが、ヘッダーピンにはあなたが見つけたのと同じラベルが付いているので、それはおそらく類似しています。

FTDIボードの回路図

ここに記載されているように、ヘッダーは「同期ビットバングモード」に使用されているようです:FT232RおよびFT245Rのビットバングモード(アプリケーションノートAN_232R-01、ドキュメント参照番号:FT_000339)


実際には、たとえばFT232R Bitbang Programmerで説明されているように、そのヘッダーをSPIプログラマーとして構成できます。


パーツドロワーに同様のボードがあるので、テストを行いました。

FTDIボード前面

あなたに似た6ピンヘッダーが用意されていました。ボードをひっくり返すと、ラベルがあなたのものとまったく同じであることがわかります。

FTDIボードバック

私はこれを与えて(一貫性を持たせるために黄色で)ヘッダーにはんだ付けしました:

ヘッダー付きFTDIボード

ピン1(端に表示)を示すために白い点を追加したので、ケーブルを正しい方法で差し込みます。


ボードを使用しようとしたときに、avrdudeから次のメッセージが表示されました。

avrdude:エラー:libftdiまたはlibusbサポートなし。libftdi1 / libusb-1.0またはlibftdi / libusbをインストールして、configure / makeを再度実行します

したがって、最初からコンパイルする必要がありました。私がフォローしようとしている場合は、Ubuntu 14.04を使用しています。:)


avrdudeのダウンロード

サイトに移動http://www.nongnu.org/avrdude/

バージョン6.3のソースをダウンロードしました:http : //download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

libusbとlibftdiをインストールする

コンパイルする前に、libusbとlibftdiを取得する必要がありました。

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

avrdudeをコンパイルする

次に、アーカイブを抽出してそのフォルダーに移動した後、avrdudeを作成します。

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

正しい構成を見つける

avrdude.conf私が見つけたavrdudeに付属するファイル内で(少し熟考した後)、これは正しいエントリのようです。

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

ピンの番号へのマッピングは次のように機能します... 上記のビットバンモードに関するPDFから、私はこのテーブルを持っています。

ビットバンモードピン

数値は、「ビットバンギング」データバイトのビット番号(つまり、0〜7の範囲)を参照します。以前の回路図から、たとえば、ICSPヘッダーのMISOがFT232RLのCTSに配線されていることがわかります。したがって、MISOはデータビット3であり、上記の構成でavrdudeに通知します。同様に、SCKはデータビット5です。

私はこのようにテストしようとしました:

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

権限を修正

/etc/udev/rules.d/呼ばれるフォルダにファイルを作成することで修正された権限エラーが発生しました71-FTDI.rules。これの中には:

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

数値はボードによって異なる場合があります。ベンダーと製品IDを見つける必要があります。Ubuntuではlsusb、(他のものとともに)実行して見ることができます:

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

ルールファイルにコピーされる2つの16進数に注意してください。

その後、ルールをリロードするようシステムに指示します。

sudo udevadm control --reload-rules

次に、FTDIボードをいったん取り外し、再度差し込んで、新しいアクセス許可を通知します。

テストボード検出

最後に、上のavrdude行が機能し、チップを読み取ります。

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.

私はATmega328Pにプラグインしました。


Diavolinoに接続された例

Atmega328Pのプログラミング

ここまで来たら、ストレートケーブルでFTDIボードをターゲットボードに接続するだけです。


概要

あなたが持っている(そして私が持っている)FTDIボードは、上記のように、AVRチップのICSPプログラマーとして使用できます。したがって、単純なボードはUSBからシリアルへのコンバーターでもあり、ICSPプログラマーでもあります。

私はeBayで同様のボードを5ドル前後で販売しているので、それはおそらくかなり安いプログラミングオプションです。


ニックに感謝します。はい、Arduinoフォーラムのスレッドは私の質問で参照したスレッドですが、その使用方法については明確ではありませんでしたが、X3ヘッダーブログを参考にしています。あなたが提供する2番目のリンクはそのトピックをさらに拡張するようです、ありがとう、ありがとう。ただし、この特定のボード用に特別に書かれたブログはまだありません。これは奇妙です。
Greenonline 2016年

これを行うと、USBデバイスとしてFTDIと通信し、オペレーティングシステムのシリアルポートAPIを使用しなくなるため、ホストに使用しているシステムに応じて、セットアップ/ドライバー/アクセス許可の問題が発生する可能性があります。それ。FTDIのより高性能なFT4232H / FT2232H / FT232Hパーツは、JTAGがより高度なプロセッサにインターフェースするので、このように使用されることがよくあります。
Chris Stratton

3
修正された回答を参照してください。私はICSPプログラマーとして仕事をするようになりました。
Nick Gammon

1
素晴らしい、素晴らしい作品。それは私が求めていたドキュメントです。
Greenonline 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.