Прорыв FTDI с дополнительным соединителем ISP

TL;DR - Можно ли использовать шесть желтых контактов ISP в качестве обычного ISP?


Обычная плата USB-TTL FTDI breakout выглядит следующим образом:

USB-TTL FTDI Breakout board

Недавно я наткнулся на вариант платы, показанный ниже. Тем не менее, для чего нужны дополнительные желтые контакты заголовка на этой плате? Они помечены ISP.

USB-TTL FTDI Breakout board with ISP

Вот вид сзади:

USB-TTL FTDI Breakout board with ISP rear

Так могут ли они действительно использоваться в качестве стандартного ISP/ICSP?

AVR-ICSP

Однако, судя по приведенной ниже диаграмме, на которой обозначены рассматриваемые 6 контактов, я не уверен, что существует достоверная корреляция сигнальных линий.

USB-TTL FTDI Breakout board with ISP with legend

То есть будут ли работать CTS с MISO, RI с RST, DSR с SCK и DCD с MOSI? Или поэтому требуется специальная версия avrdude, как указано в FT232RL: USB to Serial 232 TTL Adapter –?и ISP? - сообщение № 6:

В качестве новой функции доступен 6-контактный заголовок ISP. С его помощью avrdude и avrftdi вы можете программировать загрузчики Atmels и Arduino. Необходима специальная версия avrdude с компилированным драйвером FTDI.

Однако предоставленная ссылка на эту версию avrdude с скомпилированным драйвером FTDI мертва.

В посте № 7 также говорится, что эти контакты на самом деле эквивалентны разъему X3 , как это было найдено на старых платах Arduino Dicimila/NG/Duemilanove.

X3 header on Diecimila

и те, которые могут (очевидно) быть использованы так, как немного ударили SPI,

Connecting X3 header to ISP header on Diecimila

Следует отметить, что контакты RI, CTS, DCD и DSR (маркированные RSD) имеются по бокам оригинальной платы прорыва FTDI. Итак, обеспечивает ли плата прорыва с заголовком ISP доступ к этим же сигналам, используя другой заголовок?

Я немного запутался - я только что подумал об этом, и эта плата прорыва-просто заголовок ISP/ICSP и разъем FTDI, свернутый в одну плату (при использовании с соответствующей версией avrdude)? Или это не обычный заголовок ISP? Я не могу найти никакой конкретной документации, относящейся к этому типу прорывной платы, как указано в посте № 4.

Кто-нибудь может точно сказать, для чего нужны эти шесть контактов? Если это не обычный заголовок ISP, не могли бы вы подробно описать его использование? Схема была бы очень кстати.

, 👍12


2 ответа


Лучший ответ:

15

На форуме Arduino есть тема об этом - у кого-то был аналогичный вопрос.


Я нашел схему (ниже), которая не предназначена для этой платы, однако контакты заголовка помечены так же, как вы нашли, поэтому она правдоподобно похожа.

FTDI board schematic

Похоже, что заголовок используется для "Режима синхронного битового взрыва", как описано здесь: Режимы битового взрыва Для FT232R и FT245R (Примечание к приложению AN_232R-01, Номер ссылки на документ: FT_000339)


На самом деле вы можете настроить этот заголовок как программатор SPI, как описано, например, в FT232R Bitbang Programmer.


Я составил тест, так как у меня в ящике для запчастей была похожая плата:

FTDI board front

В нем был предусмотрен 6-контактный заголовок, аналогичный вашему. Перевернув плату, мы видим, что они были помечены точно так же, как и ваши:

FTDI board back

Я припаял заголовок (желтый, чтобы быть последовательным), который дает мне следующее:

FTDI board with header

Я добавил белую точку, обозначающую вывод 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-файла о режиме bit bang, упомянутого выше, у нас есть эта таблица с аннотациями, сделанными мной синим цветом:

Bit bang mode pins

Числа относятся к разрядному номеру (т. е. в диапазоне от 0 до 7) в байте данных "бит". Из более ранней схемы мы можем видеть, что, например, MISO в заголовке ICSP подключен к CTS на FT232RL. Таким образом, 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"

Цифры могут отличаться для вашей платы. Вам нужно найти поставщика и идентификатор продукта. В 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

Programming an Atmega328P

Как только мы доберемся до этого, вы просто подключите плату FTDI к вашей целевой плате с помощью прямого кабеля.


Резюме

Плата FTDI, которая у вас есть (и у меня есть), может использоваться в качестве программатора ICSP для микросхем AVR, как описано выше. Таким образом, простая плата может быть как преобразователем USB в последовательный, так и программатором ICSP.

Я вижу, что подобные платы продаются на eBay примерно за 5 долларов, так что это, вероятно, довольно дешевый вариант программирования.

,

Спасибо, Ник. Да, эта тема на форумах Arduino - та, на которую я ссылался в своем вопросе, но на самом деле не было ясно, как ее использовать, но она с пользой указала на блог заголовка X3. Вторая ссылка, которую вы предоставляете, похоже, еще больше расширяет эту тему, отлично, спасибо. Однако до сих пор нет ни одного блога, специально написанного для этой конкретной платы, что странно., @Greenonline

Я считаю, что если вы это сделаете, вы будете общаться с FTDI как с USB-устройством и больше не будете использовать API последовательного порта операционной системы, поэтому могут возникнуть дополнительные проблемы с настройками/драйверами/разрешениями в зависимости от того, какая система используется для его размещения. Более мощные детали FTDI FT4232H/FT2232H/FT232H часто используются таким образом в качестве интерфейсов JTAG для более продвинутых процессоров., @Chris Stratton

Смотрите исправленный ответ. Я заставил свою плату работать программатором ICSP., @Nick Gammon

Фантастическая, отличная работа. Это та документация, за которой я охотился., @Greenonline

можно ли повторить эксперимент в Windows? Я нахожу это очень интересной темой, @Jorge Eliecer Chacon Florez

Да, в основном те же файлы разработки являются частью среды IDE, загруженной для Windows., @Nick Gammon


1

Arduino IDE:

Дополнительно programmers.txt записи для использования "FT232R в качестве ISP"

ftdi232rasisp.name=FT232R as ISP
ftdi232rasisp.communication=usb
ftdi232rasisp.protocol=arduino-ft232r
ftdi232rasisp.program.tool=avrdude
ftdi232rasisp.program.extra_params=

avrdude.exe с поддержкой FTDI bitbang https://github.com/mariusgreuel/avrdude

,