Универсальный программатор на FT232R
Введение:
Данный программатор предназначен для программирования различных микроконтроллеров, а также прошивания микросхем SPI Flash и I2C Eeprom и т.п. Подробный список поддерживаемых микросхем спрашивайте в теме поддержки, так как возможности программатора постоянно расширяются.
Этот программатор является развитием программатора, описанного ранее вот тут. Работа программатора описана там же и сильно не изменилась, добавились лишь поддерживаемые микросхемы, а также функции чтения FLASH и EEPROM.
Также данный программатор может работать как имитатор и анализатор последовательных протоколов - подробно об этом написано в [6].
Программатор очень прост и не требует каких-то дополнительных прошиваний. Спаял – и всё работает, так как основную функцию выполняет компьютер. Программатор основан на микросхеме FT232R, которая позволяет управлять пинами в режиме битбэнг. Для того, чтоб прошивание занимало как можно меньшее время, реализована пакетная передача данных.
Программатор не имеет выходного буфера, потому что FT232R позволяет запитывать свои порты внешним напряжением и переводить их в состояние Z (3тье состояние) после программирования, поэтому он не конфликтует с периферией контроллера.
Внешний вид программатора показан на рисунке 1.
Рисунок 1. Внешний вид программатора.
Программатор имеет два разъёма для внутрисхемного программирования: AVR-ISP и PIC-ISP. Из названия уже понятно назначение разъёмов. Также программатор имеет панельку для программирования SPI Flash и I2C Eeprom. С одной стороны платы – под микросхемы в DIP-8, с другой – SO-8 (на прищепку). Также имеется 2 джампера: один для изменения режимов питания программатора и программируемой микросхемы, другой переключает режим выхода 12В (программирование PIC контроллеров или работа в режиме анализатора).
Программная оболочка.
Интерфейс программатора интуитивно понятен, к тому же кнопочки на русском, довольно удобно. Внешний вид программы показан на рисунке 2. Имеется табло с Логом операций (справа) и табло с закладками для программирования различных чипов (слева). Фьюзы подписаны согласно даташитам, галочка означает ‛1“ .
Работа с чипами AVR:
На рисунке 2 показана работа программатора с чипом ATmega48.
Для начала работы необходимо нажать кнопку «Read Signature», чтобы программатор определил чип. После этого в рабочем окне программы активизируются доступные кнопки и названия доступных фъюзов. Совместно с этим программатор производит чтение фьюзов и выставляет галочки.
Чтобы прошить флеш необходимо нажать кнопку «Файл Flash» и выбрать файл. Файл загружается в буфер, и под кнопкой «Файл Flash» будет подписана информация о нём и доступном объёме флэши чипа.
Прошивание Еепром происходит подобным способом.
Прошивка защиты и фьюзы:
Все фьюзы прописаны в соответствии с даташитами на контроллеры. Галочка в поле выбранного фьюза означает «1» - именно то значение «1», которое указано в даташите. Например, на рисунке.2 изображены фьюзы, считанные с контроллера ATmega48 согласно даташиту Tabl.8-1 (см. рисунок 3). Фьюзы CKSEL = 0010. означает, что тактирование чипа происходит от внутреннего RC генератора.
Фъюзы защиты (LockBit) прописываются согласно даташиту. В программной оболочке имеются для задания защиты 3 выпадающих меню. Первые два задают лок биты BLB01,02 второе BLB11,12, а третье лок биты LB.
С третьим окном всё понятно и подписано. Там 3 режима: «нет защиты», «защита от записи» и «защита записи и чтения».
Два других окна дают возможность дополнительной защиты отдельных областей памяти. Для них лучше смотреть назначение в даташите. Каждое окно даёт 4 дополнительных режима.
Если при прошивании контроллера возникла проблема с тактированием чипа, то возможно тактирование его от программатора. Для этого на разъёме AVR-ISP пин.3 выведен сигнал Cbus.4, на который при желании можно вывести тактовую частоту 6,12,24 или 48 Мгц. Это делается в закладке «Настройка». Частота будет выдаваться постоянно, вне зависимости от режимов программирования и работы программы.
Работа с PIC-контроллерами:
Рабочее окно программы при работе с PICами показано на рисунке 4.
Рисунок 4. Рабочее окно программы. Закладка ‛PIC“
В отличие от фирмы Atmel фирма Microchip не ищет лёгких путей, поэтому программирование PICов очень наворочено.
Во-первых, MpLab создаёт при компиляции файл, в котором прописаны и Флэш, и Еепром, и Фъюзы, и ID, и защита. Всё намешано. Работа с такими файлами осуществляется 3мя кнопками: «Файл»-открытие файла дампа; «Считать дамп» - чтение и сохранение дампа; «Прошить дамп» - прошивание всего дампа.
Все загруженные данные (фъюзы и ID и т.п.) отображаются в соответствующих областях. Перед прошивкой их можно подкорректировать.
Также можно прошить каждую область отдельно. Например, прочитать и прошить фъюзы.
Настройка:
Перед работой программатора (если программатор только собран или после замены FT) лучше всего зайти в меню «Настройка» и настроить работу FT на своё усмотрение или по умолчанию.
Кратенько про настройки:
В меню настройки можно изменить основные параметры, влияющие на работу программатора.
1. вывод тактовой частоты Cbus4 – этот выход заведён на разъём XT2-3. Служит, например, для тактирования чипов. Может иметь значение 6,12,24,48 или «выключен».
2. функции красного и зелёного светодиода не изменяются - на данный момент эти функции не реализованы.
3. Ограничение тока портов - тут можно задать ограничение тока, чтобы случайно не испортить программатор или подключаемую к нему схему. Этот параметр устанавливает ограничение тока не отдельных пинов, а всех сразу, то есть это суммарный ток всех портов.
4. Версия USB. Этот параметр больше зависит от вашего компьютера и на работу программатора особо не влияет.
Аппаратная часть
Схема программатора приведена на рисунке 6. Также имеется упрощённая схема программатора: ниже в архиве со схемой лежит версия Lite. Отличается простотой, содержит в себе 5 резисторов и 1 микросхему, но поддерживает исключительно чипы AVR.
Для программирования чипов ATMEL а также микросхем SpiFlash всё просто. FT соединяется с ними через токоограничивающие резисторы 560 Ом. С ними никаких хитростей не требуется, FT после программирования отдаёт ноги и не мешает работе устройства.
Для программирования I2C Eeprom пришлось поставить транзистор, поскольку шина I2C имеет сигнал, направление которого меняется по ходу работы микросхемы, а это сделать на FT232R невозможно - переключение вход/выход требует остановки передачи. Для этого реализовано разделение сигналов на транзисторе VT2 и подтягивающем резисторе 1K. После него BIT3 является выходным, а BIT1 входным (когда BIT3=0). Таким образом, мы можем и передавать данные, и принимать в процессе.
Для программирования PIC контроллеров кроме реализованной уже шины I2C, необходимо было реализовать 12В выход (сигнал MCLR). Для этого реализован DC-DC преобразователь на микросхеме MC34063 - он преобразует 5В от USB в постоянное 12В.
В качестве коммутатора 12В сигнала использован драйвер IR2102, так как он быстродействующий и вполне подходит по току, да и по размерам.
Поскольку MCLR должен меняться не от 0, а от Vcc, соответственно, пришлось разделить питание диодами VD2, VD3.
Материалы, используемые в статье:
- последняя версия программы
- 2 разновидности схемы
- проект на Delphi
- предыдущая статья
- некоторые полезные PDF, использованные при разработке
- Альтернативная функция программатора – цифровой анализатор на FT232R
- протокол прошивания пиков (ICSP) Guid