Breakout FTDI dengan konektor ISP tambahan

12

TL; DR - Bisakah enam pin ISP kuning digunakan sebagai ISP normal?


Papan breakout USB-TTL FTDI yang biasa terlihat seperti ini:

Papan Breakout FTDI USB-TTL

Baru-baru ini, saya menemukan varian papan yang ditunjukkan di bawah ini. Namun, untuk apa pin header kuning tambahan di papan ini? Mereka diberi label ISP.

Papan Breakout FTDI USB-TTL dengan ISP

Ini tampilan belakang:

Papan Breakout FTDI USB-TTL dengan bagian belakang ISP

Jadi bisakah mereka benar-benar digunakan sebagai ISP / ICSP standar?

AVR-ICSP

Namun, menurut diagram di bawah ini, yang memberi label 6 pin yang dimaksud, saya tidak yakin bahwa ada korelasi yang benar dari garis sinyal.

USB-TTL FTDI Breakout board dengan ISP dengan legenda

Dengan kata lain, apakah CTS ke MISO, RI ke RST, DSR ke SCK dan DCD untuk MOSI berfungsi? Atau apakah itu sebabnya versi khusus dari avrdude diperlukan, seperti disinggung dalam FT232RL: USB ke Serial 232 TTL Adapter -? Dan ISP? - pos # 6 :

Sebagai fitur baru, tersedia header ISP 6-pin. Dengan itu, avrdude dan avrftdi Anda dapat memprogram Atmel dan Arduino bootloader. Versi khusus avrdude dengan driver FTDI yang dikompilasi diperlukan.

Namun tautan yang disediakan ke versi avrdude itu, dengan driver FTDI yang dikompilasi, sudah mati.

Juga dikatakan, dalam posting # 7 , bahwa pin ini sebenarnya setara dengan konektor X3, seperti yang ditemukan pada papan Arduino Dicimila / NG / Duemilanove yang lebih tua .

Header X3 di Diecimila

dan mereka dapat (jelas) digunakan seperti itu, sebagai SPI sedikit menggedor,

Menghubungkan header X3 ke header ISP di Diecimila

Perlu dicatat bahwa pin RI, CTS, DCD dan DSR (berlabel RSD) tersedia, di sepanjang sisi papan breakout FTDI asli. Jadi, apakah papan breakout dengan header ISP hanya menyediakan akses ke sinyal yang sama ini menggunakan header yang berbeda?

Saya agak bingung - apakah saya sudah terlalu memikirkan hal ini, dan papan breakout ini hanyalah header ISP / ICSP dan konektor FTDI digulung menjadi satu papan (bila digunakan dengan versi avrdude yang sesuai)? Atau bukan header ISP biasa? Saya tidak dapat menemukan dokumentasi khusus yang berkaitan dengan jenis papan breakout ini, sebagaimana dinyatakan dalam posting # 4 .

Adakah yang bisa mengatakan, secara pasti, untuk apa enam pin ini? Jika mereka bukan header ISP normal, dapatkah Anda memberikan cara rinci menggunakannya? Skema akan sangat membantu.

Greenonline
sumber

Jawaban:

14

Ada utas tentang itu di Forum Arduino - seseorang memiliki pertanyaan serupa.


Saya menemukan skema (di bawah) yang bukan untuk papan itu, namun pin header diberi label sama seperti yang Anda temukan, jadi ini sangat mirip.

Skema dewan FTDI

Tampak bahwa tajuk digunakan untuk "Mode Bit Sinkron" seperti yang didokumentasikan di sini: Mode Bit Bang Untuk FT232R dan FT245R (Catatan Aplikasi AN_232R-01, Nomor Referensi Dokumen: FT_000339)


Anda sebenarnya dapat mengkonfigurasi header itu untuk menjadi programmer SPI, seperti yang dijelaskan misalnya, dalam Programmer Bitbang FT232R .


Saya membuat tes karena saya memiliki papan serupa di bagian laci saya:

Papan depan FTDI

Itu ketentuan untuk header 6-pin yang mirip dengan Anda. Membalik papan kita dapat melihat bahwa mereka diberi label yang persis sama dengan milik Anda:

Papan FTDI kembali

Saya disolder pada tajuk (berwarna kuning, agar konsisten) memberi saya ini:

Papan FTDI dengan header

Saya menambahkan titik putih untuk menunjukkan pin 1 (terlihat di tepi) jadi saya pasang kabel dengan cara yang benar.


Ketika saya mencoba menggunakan papan tulis, saya mendapat pesan ini dari avrdude:

avrdude: error: tidak ada dukungan libftdi atau libusb. Instal libftdi1 / libusb-1.0 atau libftdi / libusb dan jalankan configure / make lagi

Jadi, itu harus dikompilasi dari awal! Saya menggunakan Ubuntu 14.04 jika Anda mencoba untuk mengikuti. :)


Unduh avrdude

Pergi ke situs http://www.nongnu.org/avrdude/

Saya mengunduh versi 6.3 sumber: http://download.savannah.gnu.org/releases/avrdude/avrdude-6.3.tar.gz

Instal libusb dan libftdi

Sebelum mengkompilasi, saya harus mengambil libusb dan libftdi:

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

Kompilasi avrdude

Sekarang kita membuat avrdude setelah mengekstrak arsip dan menavigasi ke foldernya:

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

Temukan konfigurasi yang benar

Di dalam avrdude.conffile yang datang dengan avrdude saya menemukan (setelah beberapa perenungan) ini tampaknya entri yang benar:

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

Pemetaan pin ke angka berfungsi seperti ini ... Dari PDF tentang mode bit bang yang disebutkan di atas, kita memiliki tabel ini, dengan penjelasan berwarna biru oleh saya:

Pin mode bit bang

Angka-angka mengacu pada nomor bit (yaitu dalam kisaran 0 hingga 7) dalam byte data "bit banged". Kita dapat melihat dari skema sebelumnya bahwa, misalnya, MISO pada header ICSP ditransfer ke CTS pada FT232RL. Jadi MISO adalah data bit 3, yang kami beri tahu avrdude dalam konfigurasi di atas. Demikian pula SCK adalah data bit 5, dan seterusnya.

Saya mencoba menguji seperti ini:

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

Perbaiki izin

Saya mendapat kesalahan izin yang diperbaiki dengan membuat file di folder /etc/udev/rules.d/bernama 71-FTDI.rules. Di dalam ini adalah:

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

Jumlahnya dapat bervariasi untuk papan Anda. Anda perlu menemukan vendor dan ID produk. Di Ubuntu Anda dapat melakukan lsusbdan melihat (antara lain):

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

Perhatikan dua angka hex, yang bisa disalin ke file aturan.

Setelah melakukan itu, beri tahu sistem untuk memuat kembali aturan:

sudo udevadm control --reload-rules

Kemudian cabut dan pasang kembali papan FTDI untuk membuatnya memperhatikan izin baru.

Deteksi papan tes

Akhirnya, baris avrdude di atas berfungsi dan membaca 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.

Saya telah memasang kabel ATmega328P.


Contoh terhubung ke Diavolino

Memprogram Atmega328P

Setelah kami sampai sejauh ini, Anda cukup menghubungkan papan FTDI ke papan target Anda dengan kabel langsung.


Ringkasan

Papan FTDI yang Anda miliki (dan yang saya miliki) dapat digunakan sebagai programmer ICSP untuk chip AVR, seperti dijelaskan di atas. Dengan demikian papan sederhana dapat berupa konverter USB ke serial, dan juga programmer ICSP.

Saya melihat papan serupa menjual di eBay sekitar $ 5 sehingga mungkin opsi pemrograman yang cukup murah.

Nick Gammon
sumber
Terima kasih Nick. Ya, utas di forum Arduino itu adalah yang saya rujuk dalam pertanyaan saya, tetapi tidak terlalu jelas bagaimana cara menggunakannya - tetapi bermanfaat menunjuk ke blog header X3. Tautan kedua yang Anda berikan tampaknya memperluas topik itu lebih jauh, luar biasa, terima kasih. Namun, masih belum ada blog yang ditulis khusus untuk forum khusus ini, yang aneh.
Greenonline
Saya percaya bahwa jika Anda melakukan ini, Anda akan berbicara dengan FTDI sebagai perangkat USB dan tidak lagi menggunakan API port seri sistem operasi, sehingga mungkin ada masalah pengaturan / driver / izin tambahan tergantung pada sistem apa yang digunakan untuk meng-host Itu. Bagian FT4232H / FT2232H / FT232H yang lebih mampu dari FTDI sering digunakan dengan cara ini sebagai antarmuka JTAG ke prosesor yang lebih maju.
Chris Stratton
3
Lihat jawaban yang diubah. Saya mendapatkan board saya untuk bekerja sebagai programmer ICSP.
Nick Gammon
1
Fantastis, kerja bagus. Itu adalah dokumentasi yang saya cari.
Greenonline