Зачем делать еще один JTAG-адаптер при таком количестве готовых недорогих решений? Идея состоит в использовании одного и того же устройства для программирования и отладки микроконтроллеров с архитектурой AVR и ARM . Такой целью задался я перед реализацией сего проекта.

Реализовать подобный адаптер стало возможно благодаря использованию аппаратного USB-UART/FIFO моста на микросхеме FT2232D. Особенностью драйвера FT2232D является поддержка режима MPSSE( Multi-Protocol Synchronous Serial Engine ), благодаря которому на микросхеме FT2232D можно реализовать преобразователи USB-JTAG, USB-SPI,USB-I2C. С сайта производителя можно скачать драйвера под различные операционные системы, библиотеки для разработки программных средств и примеры реализаций.

Микросхема имеет два канала, каждый из которых может быть настроен независимо от второго на свой режим работы. Конфигурация каналов записывается во внешнюю EEPROM, подключаемую к драйверу. Запись и чтение настроек из EEPROM осуществляется с помощью программ, которые также можно скачать с сайта производителя , например FT_PROG.

Программное обеспечение для поддержки микросхемы FT2232D программаторами и отладчиками можно разработать самостоятельно, используя библиотеки , любезно предоставленные производителем . Но к счастью на данный момент уже существуют отладочные средства, поддерживающие чипы FT2232.

Для программирования AVR микроконтроллеров в режиме ISP с помощью данного адаптера можно использовать программатор AVReal. JTAG отладчик для AVR называется HappyJTAG2 . Для микроконтроллеров с ядром ARM работа с адаптером поддерживается программным обеспечением OpenOCD, который устанавливает соединение с адаптером и выступает программным сервером, способным соединиться с клиентом gdb. Такой механизм отладки используется в интегрированной среде разработки Eclipse.

С загрузкой прошивки в микроконтроллеры ARM дело обстоит еще проще, поскольку для этих целей в микроконтроллер встроен загрузчик, загружающий прошивку по последовательному интерфейсу UART, который также поддерживается микросхемой FT2232D.

Итак , рассмотрим схему адаптера. Схема адаптера почти полностью взята из документации на микросхему FT2232D и в особых  разъяснениях не нуждается. Проект печатной платы( скачать ) адаптера разработан в свободной системе проектирования KiCad ( скачать ) и предоставляется бесплатно на условиях лицензии GNU GPL.

На плате адаптера установлено три 20 -выводных разъема BH-20. На два из них ( X2,X4 ) выведены сигналы от обеих каналов микросхемы FT2232D. Эти линии могут использоваться для реализации различных преобразователей с помощью кабельных переходников . На разъем X3 выведены гальванически развязанные с помощью двух изоляторов на микросхеме ADUM1401 сигналы JTAG.

Светодиод HL4 отображает наличие питающего напряжения на целевой плате.

Индикаторы HL2 и HL3 сигнализируют наличие приема и передачи. Светодиод HL1 включается при подключении адаптера к USB-порту компьютера.

На плате установлен линейный преобразователь на микросхеме LM1117MPX-3.3 , обеспечивающий питание +3,3В микросхемы FT2232D.

Подключение адаптера к персональному компьютеру осуществляется стандартным кабелем USB, который используется, например, для подключения принтера или сканера.

Этой публикацией я открываю цикл статей, посвященных использованию данного адаптера. Планирую детально описать процесс подключения адаптера , конфигурации EEPROM, запуск отладки ARM -микроконтроллера в Eclipse CDT, программирование и отладка AVR и т.д. А пока что плата отправляется на подготовку к производству.

Продолжение следует.

Viewed 29875 times by 4064 viewers

Last modified: 6 февраля 2020

Author

Comments

Плата в работе, запаивается 🙂 надеюсь сегодня приступлю к запуску.

JTAG-адаптер собран и запущен!!!

вы не пробовали доработать этот девайс по аналогии с http://let.nm.ru/Instruments/USB_JTAG/usb_jtag.html ?
Насколько описанная доработка актуальна?
Возможно ли заказать у вас готовое устройство или хотя бы печатную плату?

    доработка устройства , описанная по данной ссылке, касается лишь уменьшения его габаритных размеров за счет выбрасывания лишних ( по мнению автора ) деталей, применение ADUM5401 со встроенным преобразователем не даст возможности отказаться от изоляторов вообще в целях удешевления устройства.
    Адаптер заказать возможно, я планировал заняться продажей после окончания статьи об отладке в Eclipse , чтобы предоставить описание всех возможных вариантов применения устройства.
    Планирую также укомплектовывать устройство диском со всеми необходимыми программами.

Приветствую!
Скажите пожалуйста, а насколько критична гальваническая развязка? Как я понимаю ее можно исключить, если я собираюсь использовать отладчик только на маломощных девбордах. (Просто дороговато стоит микрушка + не так то просто найти, быть может подскажете альтернативное решение?)
Заранее благодарен за ответ.

    Скажите пожалуйста, а насколько критична гальваническая развязка?

    Без гальванической развязки можно программировать и питать маломощные устройста, мощность которых ниже мощности , которую способен обеспечить USB порт.
    Возможно также подключение внешнего питания на целевую плату, но это может грозить выходом из строя программатора или USB порта в случае неполадок в целевом устройстве или перебоев в электросети.
    При длинных линиях связи, подключаемых к целевому устройству, наличии гальванической связи с сетью питания переменного тока возможны электромагнитные помехи и как следствие — сбои при программировании/отладке.

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

    быть может подскажете альтернативное решение?

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

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

Спасибо за схему.
Думаю, можно же без изоляторов сделать. Что еще нужно поменять в схеме, если без изоляторов? (Хочется побыстрее и не очень дорого, а на farnell они по 7euro)
Надо попробовать сделать такой же программатор на FT2232H — он поддерживает USB2.0.

    Без гальванической развязки все необходимые линии JTAG выведены на разъем X4. Другое дело, что распиновка X4 не соответствует стандартной (как на разъеме X3).
    Можно закоротить перемычками на контактных площадках DD3 , DD4 одноименные линии без префикса «I_» с линиями с префиксом «I_» ( TMS с I_TMS и т.д), линию T_GND закоротить с линией GND. Тогда на разъеме X3 будет стандартная распиновка JTAG без гальванической развязки.

    P.S: Еще желательно отключить контакты 5 и 6 разъема X1 от линии GND( по хорошему они должны подключаться к GND через конденсатор 0,1 мкФ >= 1кВольт ). Экран разъема USB-B может быть подключен к заземлению системного блока через оплетку кабеля,а при отсутствии заземления в розетке на корпусе ПК (который подключен к заземлению) может присутствовать напряжение 110В (при включении конденсаторы входного фильтра БП ПК заряжаются и образуют делитель напряжения на 2), которое попадет на линию GND программируемого устройства.

      Исправил, спасибо.
      Появились новые вопросы. Не смог найти на просторах однозначную распиновку 10-pin JTAG.
      Может подскажете? В программируемом устройстве присутствуют только линии TMS, TDO, TDI, TCK и nTRST. Я отключил в схеме всю шину B, а также пины DBGACK и DBGRQ.
      ЗАчем нужен пин RTCK?

        RTCK — Returned TCK , то есть возвращенный сигнал TCK.
        Можно обойтись и без него, а нужен он для того, чтобы можно было определить
        потерю синхронизации.
        Если в Вашем устройстве есть только линии TMS, TDO, TDI, TCK и nTRST, то подключайте их к одноименным выводам на разъеме X3.

          А резисторы R14..R21 нужно переносить на выводы, если развязка не используется?

Нет, вместо резисторов перемычки .

Comments are closed.