FTDI Breakout พร้อมตัวเชื่อมต่อ ISP เพิ่มเติม


12

TL; DR - สามารถใช้พิน ISP หกสีเหลืองเป็น ISP ปกติได้หรือไม่


บอร์ดฝ่าวงล้อม USB-TTL FTDI ปกติมีลักษณะดังนี้:

FTDI ฝ่าวงล้อม USB-TTL

เมื่อเร็ว ๆ นี้ฉันเจอกระดานต่าง ๆ ที่แสดงด้านล่าง อย่างไรก็ตามหมุดหัวสีเหลืองเพิ่มเติมในบอร์ดนี้มีไว้เพื่ออะไร? พวกเขามีป้ายกำกับ ISP

USB-TTL FTDI ฝ่าวงล้อมกระดานกับ ISP

นี่คือมุมมองด้านหลัง:

USB-TTL FTDI ฝ่าวงล้อมกระดานกับ ISP ด้านหลัง

ดังนั้นพวกเขาจึงสามารถใช้เป็น ISP / ICSP มาตรฐานได้จริงหรือ

AVR-ICSP

อย่างไรก็ตามตามแผนภาพด้านล่างซึ่งติดป้ายหมุด 6 ตัวที่มีปัญหาฉันไม่แน่ใจว่ามีความสัมพันธ์ที่ถูกต้องของสายสัญญาณ

USB-TTL FTDI ฝ่าวงล้อมกระดานกับ ISP พร้อมตำนาน

กล่าวคือจะต้อง CTS ถึง MISO, RI ถึง RST, DSR ถึง SCK และ DCD เพื่อ MOSI ทำงานหรือไม่ หรือว่าเป็นเพราะเหตุใดจึงจำเป็นต้องมี avrdude รุ่นพิเศษตามที่กล่าวถึงในFT232RL: ตัวแปลง USB เป็นอนุกรม 232 TTL - และ ISP? - โพสต์ # 6 :

ในฐานะที่เป็นคุณสมบัติใหม่มีส่วนหัว ISP 6-pin ที่มีอยู่ ด้วยมัน avrdude และ avrftdi คุณสามารถตั้งโปรแกรม Atmels และ Arduino bootloaders avrdude รุ่นพิเศษที่มีไดรเวอร์ FTDI ที่คอมไพล์แล้วเป็นสิ่งจำเป็น

อย่างไรก็ตามลิงก์ที่ให้ไปยัง avrdude เวอร์ชันนั้นพร้อมไดรเวอร์ FTDI ที่คอมไพล์แล้วนั้นจะตาย

นอกจากนี้ยังกล่าวว่าในการโพสต์ # 7ที่หมุดเหล่านี้เป็นจริงเทียบเท่ากับการเชื่อมต่อ X3 เป็นที่พบบนเก่า Arduino Dicimila / NG / Duemilanoveบอร์ด

ส่วนหัว X3 บน Diecimila

และสิ่งเหล่านั้นสามารถนำมาใช้ได้อย่างชัดเจนเช่น SPI ที่มีการกระแทกเล็กน้อย

เชื่อมต่อส่วนหัว X3 กับส่วนหัว ISP บน Diecimila

ควรสังเกตว่าหมุด RI, CTS, DCD และ DSR (ป้าย RSD) นั้นมีอยู่ตามด้านข้างของบอร์ด FTDI ฝ่าวงล้อมดั้งเดิม ดังนั้นบอร์ดฝ่าวงล้อมที่มีส่วนหัว ISP เพียงแค่ให้การเข้าถึงสัญญาณเดียวกันเหล่านี้โดยใช้ส่วนหัวที่แตกต่างกันหรือไม่?

ฉันสับสนเล็กน้อย - ฉันเพิ่งคิดเรื่องนี้และบอร์ดฝ่าวงล้อมนี้เป็นเพียงส่วนหัว ISP / ICSP และตัวเชื่อมต่อ FTDI รีดเป็นบอร์ดเดียว (เมื่อใช้กับ avrdude รุ่นที่เหมาะสม)? หรือไม่ใช่ส่วนหัว ISP ทั่วไป ฉันไม่สามารถหาใด ๆเฉพาะเอกสารที่เกี่ยวข้องกับประเภทของคณะกรรมการฝ่าวงล้อมนี้ตามที่ระบุไว้ในโพสต์ # 4

ทุกคนสามารถพูดได้แน่นอนว่าหมุดหกตัวนี้มีไว้เพื่ออะไร? หากไม่ใช่ส่วนหัว ISP ปกติคุณสามารถให้วิธีการใช้อย่างละเอียดได้หรือไม่? แผนผังจะเป็นประโยชน์

คำตอบ:


14

มีกระทู้เกี่ยวกับสิ่งนั้นในArduino Forum - บางคนมีคำถามคล้ายกัน


ฉันพบแผนผัง (ด้านล่าง) ซึ่งไม่ใช่สำหรับบอร์ดนั้น แต่หมุดส่วนหัวมีป้ายกำกับเหมือนที่คุณพบดังนั้นจึงมีความคล้ายคลึงกัน

แผนผัง FTDI ของบอร์ด

ปรากฏว่าส่วนหัวใช้สำหรับ "โหมดบิตซิงโครนัส" ตามที่ระบุไว้ที่นี่: โหมดบิตแบงสำหรับ FT232R และ FT245R (หมายเหตุแอปพลิเคชัน AN_232R-01, หมายเลขอ้างอิงเอกสาร: FT_000339)


คุณสามารถในความเป็นจริงการกำหนดค่าที่ส่วนหัวจะเป็นโปรแกรมเมอร์ SPI ตามที่อธิบายไว้ตัวอย่างเช่นในFT232R Bitbang โปรแกรมเมอร์


ฉันทำแบบทดสอบเนื่องจากฉันมีบอร์ดที่คล้ายกันอยู่ในลิ้นชักชิ้นส่วนของฉัน:

บอร์ด FTDI ด้านหน้า

มันมีบทบัญญัติสำหรับส่วนหัว 6-pin ที่คล้ายกับของคุณ เมื่อพลิกกระดานเราจะเห็นว่าพวกเขามีป้ายกำกับเหมือนกับคุณทุกประการ:

บอร์ด FTDI ด้านหลัง

ฉันบัดกรีบนหัว (เป็นสีเหลืองเพื่อให้สอดคล้อง) ให้ฉันนี้:

บอร์ด FTDI ที่มีส่วนหัว

ฉันเพิ่มจุดสีขาวเพื่อระบุว่าพิน 1 (มองเห็นได้ที่ขอบ) ดังนั้นฉันจึงเสียบสายเคเบิลอย่างถูกวิธี


เมื่อฉันพยายามใช้กระดานฉันได้รับข้อความนี้จาก avrdude:

avrdude: ข้อผิดพลาด: ไม่มีการสนับสนุน libftdi หรือ libusb ติดตั้ง libftdi1 / libusb-1.0 หรือ libftdi / libusb และรันการกำหนดค่า / ทำอีกครั้ง

ดังนั้นจึงต้องรวบรวมตั้งแต่เริ่มต้น! ฉันใช้ 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) ในไบต์ข้อมูล "บิตกระแทก" เราสามารถเห็นได้จากแผนผังก่อนหน้านี้ตัวอย่างเช่น MISO บนส่วนหัว ICSP นั้นเชื่อมต่อกับ CTS บน FT232RL ดังนั้น MISO คือ data bit 3 ซึ่งเราบอก avrdude ในการกำหนดค่าข้างต้น SCK ในทำนองเดียวกันคือ data bit 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"

ตัวเลขอาจแตกต่างกันไปสำหรับบอร์ดของคุณ คุณต้องค้นหาผู้ขายและรหัสผลิตภัณฑ์ ใน Ubuntu คุณสามารถทำlsusbและดู (เหนือสิ่งอื่นใด):

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

จดเลขฐานสิบหกสองตัวซึ่งจะถูกคัดลอกลงในไฟล์กฏ

หลังจากทำเช่นนั้นบอกระบบเพื่อโหลดกฎ:

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 ที่คุณมี (และที่ฉันมี) สามารถใช้เป็นโปรแกรมเมอร์ ICSP สำหรับชิป AVR ดังที่อธิบายไว้ข้างต้น ดังนั้นบอร์ดง่าย ๆ สามารถเป็นได้ทั้ง USB เป็นซีเรียลคอนเวอร์เตอร์และโปรแกรมเมอร์ ICSP

ฉันเห็นกระดานคล้ายกันที่ขายบน eBay ราคาประมาณ 5 เหรียญซึ่งอาจเป็นตัวเลือกการเขียนโปรแกรมที่ค่อนข้างถูก


ขอบคุณนิค ใช่แล้วเธรดบนฟอรัม Arduino นั้นเป็นสิ่งที่ฉันอ้างถึงในคำถามของฉัน แต่มันไม่ชัดเจนว่าจะใช้อย่างไร - แต่มันชี้ไปที่บล็อกส่วนหัว X3 อย่างมีประโยชน์ ลิงก์ที่สองที่คุณระบุดูเหมือนจะขยายตัวตามหัวข้อนั้นยิ่งขึ้นขอบคุณมาก อย่างไรก็ตามยังไม่มีบล็อกที่เขียนโดยเฉพาะสำหรับบอร์ดนี้ซึ่งแปลก
Greenonline

ฉันเชื่อว่าถ้าคุณทำเช่นนี้คุณจะพูดคุยกับ FTDI เป็นอุปกรณ์ USB และไม่ใช้พอร์ตอนุกรม API ของระบบปฏิบัติการอีกต่อไปดังนั้นอาจมีปัญหาเพิ่มเติมเกี่ยวกับการติดตั้ง / ไดรเวอร์ / สิทธิ์อนุญาตขึ้นอยู่กับระบบที่โฮสต์ใช้ มัน. ส่วนที่มีความสามารถมากขึ้นของ FTDI FT4232H / FT2232H / FT232H มักใช้วิธีนี้เป็นอินเตอร์เฟส JTAG กับตัวประมวลผลขั้นสูง
Chris Stratton

3
ดูคำตอบที่แก้ไขเพิ่มเติม ฉันให้บอร์ดทำงานเป็นโปรแกรมเมอร์ ICSP
Nick Gammon

1
ยอดเยี่ยมมาก นั่นคือเอกสารที่ฉันเป็นหลังจากนั้น
Greenonline
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.