USB программатор МК AT89S52
0
1. Введение. 2
2. Обзор программаторов. 3
2.1. Программатор Громова. 4
2.2. STK200/300. 5
2.3. USBAsp. 6
3. Последовательное программирование AT89S52. 6
3.1. Алгоритм программирования. 6
3.2. Интерфейс программирования SPI. 7
4. Аппаратная реализация программатора. 8
4.1. Микросхема FT245BM. 9
5. Программная реализация. 10
5.3. Использование драйвера D2XX. 10
5.2. Bitbang. 10
1. Введение.
Развитие микроэлектроники
и широкое применение ее изделий
в промышленном производстве, в устройствах
и системах управления самыми разнообразными
объектами и процессами является
в настоящее время одним из
основных направлений научно-
Использование микроконтроллеров
в изделиях производственного и
культурно-бытового назначения не только
приводит к повышению технико-
За последние годы в
микроэлектронике бурное развитие получило
направление, связанное с выпуском
однокристальных
Однако такие устройства
сами по себе являются чисто исполнительным.
Использование их для решения
конкретных задач требует написания
алгоритма программы, управляющей
микроконтроллером. Такая программа
загружается в ПЗУ
Таким образом, программирование микроконтроллеров является неотъемлемой частью разработки микроконтроллерной техники, а потому тема специализированных устройств – так называемых программаторов – и соответствующего программного обеспечения, стала актуальной с самого появления микроконтроллеров и остается таковой по сей день.
В данной работе исследовалась возможность программирования микроконтроллера Atmel AT89S52 через USB порт компьютера с использованием микросхемы FTDI FT245B.
2. Обзор программаторов.
Первые программаторы были автономными — для набора прошивки имелась клавиатура или коммутационная панель. С распространением ПК такие программаторы были полностью вытеснены подключаемыми к компьютеру — специальная программа (которая также называется программатором) передаёт прошивку с компьютера, а программатору остаётся только записать её в память микросхемы.
Для подключения программаторов могут применяться:
- последовательный порт;
- параллельный порт;
- специализированная интерфейсная плата (ISA или PCI);
- USB;
- Ethernet.
Стоит заметить, что в самых простых параллельных и последовательных программаторах управляющему ПО приходится напрямую управлять логическим уровнем на выводах порта (bitbang). Такое прямое управление в Windows NT запрещено, это обходится установкой специализированного драйвера; через адаптеры USB→COM bitbang-программаторы работают крайне медленно (единицы-десятки байт в секунду). Микроконтроллерные программаторы полностью поддерживают протокол COM- или LPT-порта и поэтому свободны от этих недостатков.
Специализированные платы изредка применялись до появления USB, так как позволяли достичь максимальных скоростей обмена данными. Впрочем, одновременно они делали программатор стационарным.
Современные программаторы подключаются через USB (лишь простые дешёвые конструкции используют COM- или LPT-порты). Высокопроизводительные промышленные программаторы используют Ethernet.
Помимо способа подключения
к компьютеру, программаторы различаются
по сложности. Если нужно запрограммировать
микроконтроллер единожды, радиолюбители
обходятся простейшими
Разработчики программ для
микроконтроллеров или своих
схем используют более сложные программаторы,
которые часто содержат свой микроконтроллер.
Такие программаторы позволяют
работать сразу с одним или
несколькими семействами
В конструкторских бюро и лабораториях используют универсальные программаторы. Поскольку в таких устройствах каждый из выводов разъёма (а этих выводов может быть до сотни) может подавать на микросхему напряжения от 0 до 27 В с точностью в 0,1 вольт и частотами до 40 МГц, универсальные программаторы бывают очень дороги — до нескольких тысяч долларов. Зато при появлении новой микросхемы достаточно добавить её поддержку на программном уровне.
2.1. Программатор Громова.
Одним из простейших программаторов, используемых в настоящее время, является программатор Громова. Такой программатор представляет собой несколько проводов, резисторов и диодов. Его схема приведена на рисунке 1.
Рис. 1. Схема программатора Громова
Управляется такой программатор специальным ПО, которое эмулирует протокол SPI. Такие программы работают напрямую с линиями COM порта компьютера и управляют их состояниями.
Минусы:
- работа через COM порт
- малая скорость программирования
- невозможность работы через переходники USB-COM
- требует специального ПО
Плюсы:
- простота исполнения
- состоит из пассивных элементов (не требует питания)
- дешевизна
2.2. STK200/300.
Программатор получил свое название от комплектующихся им отладочных плат фирмы ATMEL для быстрого начала работы с микроконтроллерами AT90S8515 и ATmega103 соответственно.
STK200/300 представляет собой
буферизованный адаптер.
Адаптер собран на основе шинного формирователя 74HC244 (рис. 2). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244) либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, "отключив" адаптер от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).
Рисунок 2. Электронная схема адаптера STK200/300
Поскольку разводка рассчитана на установку LPT-разъема непосредственно на плату, для этих адаптеров рекомендуется изготовить удлиннитель порта LPT длиной 1.5-1.8м со всеми линиями и вывести с программатора шлейф до платы с микроконтроллером длиной 20-25 см.
Минусы:
- подключение через LPT порт (устаревший интерфейс)
Плюсы:
- поддерживается большинством программ
- простота исполнения
- надежность
- отключение адаптера от схемы по завершению программирования
2.3. USBAsp.
Данный программатор, в отличие в вышеприведенных, подключается к компьютеру через USB. Таким образом, он может работать с любым современным компьютером. Кроме того, микроконтроллер может программироваться на максимальных скоростях, т.к. скорость передачи данных по USB много больше.
3. Последовательное программирование AT89S52.
Программирование микроконтроллера AT89S52 может осущесвляться через параллельный или последовательный интерфейсы. Поскольку параллельный интерфейс требует большого количества соединительных линий, в данной работе использовался последовательный режим программирования. Для его использование необходимо подать на вход микроконтроллера RST напряжение питания Vcc. Максимальная частота передачи данных не должна превышать 1/16 частоты осциллятора микроконтроллера. В использованном микроконтроллере частота осцилятора равна 12 МГц, потому частота тактирования программатора не может превышать 0,75 МГц.
3.1. Алгоритм программирования.
Алгоритм программирования в последовательном режиме сводится к следующему. Сперва на микроконтроллер подается питание. Далее вход RST устанавливается в высокое положение. Если внешний осцилятор не подключен к входам XTAL1 и XTAL2, необходимо подать сигналы тактирования с частотой от 3 до 33 МГЦ на вход XTAL1 и подождать как минимум 10 миллисекунд.
Включение последовательного режима программирования осуществляется отправкой комманды "Programming Enable" на выход MOSI. "Programming Enable" должна предшествовать любой другой комманде (табл. 1).
Таблица 1. Набор инструкций последовательного режима программирования микроконтроллера AT89S52
Инструкция |
Формат инструкции |
Операция | |||
Байт 1 |
Байт 2 |
Байт 3 |
Байт 4 | ||
Programming Enable |
1010 1100 |
0101 0011 |
xxxx xxxx |
xxxx xxxx 0110 1001 (вывод на MISO) |
Включение последовательного режима программирования |
Chip Erase |
1010 1100 |
100x xxxx |
xxxx xxxx |
xxxx xxxx |
Стирание флэш-памяти |
Read Program Memory (байтовый режим) |
0010 0000 |
xxx |
|
|
Чтение данных памяти из ячейки с указанным адресом |
Write Program Memory (байтовый режим) |
0110 0000 |
xxx |
|
|
Запись данных в ячейку с указанным адресом |
Write Lock Bits |
1010 1100 |
1110 00 |
xxxx xxxx |
xxxx xxxx |
Запись lock-битов |
Read Lock Bits |
0010 0100 |
xxxx xxxx |
xxxx xxxx |
xxx xx |
Чтение lock-битов |
Read Signature Bytes |
0010 1000 |
xxx |
xxx xxx0 |
Signature Byte |
Чтение байта сигнатуры контроллера |
Read Program Memory (страничный режим) |
0010 0000 |
xxx |
Байт 0 |
Байт 1 … Байт 255 |
Чтение 256 байт с указанной страницы памяти |
Write Program Memory (страничный режим) |
0110 0000 |
xxx |
Байт 0 |
Байт 1 … Байт 255 |
Запись 256 байт на указанную страницу памяти |
Программирование происходит побайтно, как в байтовом, так и в страничном режимах. Цикл записи байта обычно занимает менее 0,5 мс при 5В. Таким же образом происходит и чтение данных из микроконтроллера, за исключением того, что данные передаются по линии MISO.
3.2. Интерфейс программирования SPI.
SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, разработанный компанией Motorola для обеспечения простого и недорогого сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным интерфейсом.
SPI является синхронным
интерфейсом, в котором любая
передача синхронизирована с
общим тактовым сигналом, генерируемым
ведущим устройством (
В SPI используются четыре цифровых сигнала:
- MOSI или SI — выход ведущего, вход ведомого (англ. Master Out Slave In). Служит для передачи данных от ведущего устройства ведомому.
- MISO или SO — вход ведущего, выход ведомого (англ. Master In Slave Out). Служит для передачи данных от ведомого устройства ведущему.
- SCLK или SCK — последовательный тактовый сигнал (англ. Serial Clock). Служит для передачи тактового сигнала для ведомых устройств.
- CS или SS — выбор микросхемы, выбор ведомого (англ. Chip Select, Slave Select).
Хотя SPI интерфейс и является четырехпроводным, для программирования микроконтроллера используется 3 линии. Линия выбора ведомого устройства не используется, т.к. программатор всегда является ведущим.
Передача байта программатором осуществляется выводом данных на MOSI линию и тактированием на линии SCK. В то же время микроконтроллер выводит данные на линию MISO. Первым передается старший бит (рис. ).
Рисунок. Волновые диаграммы приема/передачи байта данных по протоколу SPI
4. Аппаратная реализация программатора.
В данной работе программатор был реализован на основе лабораторного модуля, содержащего в себе печатную плату, на которой установлены микроконтроллер AT89S52 и микросхема FT245BM. Микросхема FT245BM установлена в готовом модуле фирмы DLP, состоящем из непосредственно самой микросхемы, USB порта и внешнего осциллятора. Принципиальная схема программатора приведена на рисунке.
Рисунок. Принципиальная схема программатора
Схема крайне проста в исполнении и требует минимальное количество соединений.
4.1. Микросхема FT245BM.
Микросхема FT245BM является ключевым компонентом. FT245B – устройство фирмы FTDI, представляющее собой аппаратный конвертер «USB <-> параллельный FIFO» второго поколения. Микросхема позволяет передавать данные со скоростью до 8 Мбит/c. Её физические размеры – 7x7 мм (9x9 включая ножки).
Основными элементами являются USB трансивер, контроллер FIFO и входной и выходной буферы FIFO (рис. ). Взаимодействие между этими элементами обеспечивается контроллером последовательного интерфейса (SIE).
Рисунок. Блок-схема микросхемы FT245BM
Данная микросхема является аппаратным преобразователем, а потому программатор на её основе лишен недостатков COM программаторов, использующих bitbang. Для изменения уровней информационных выводов не нужно работать напрямую с линиями, вместо этого достаточно записать байт данных. Кроме того, микросхема сама формирует длительность импульсов, что упрощает работу программной части и ускоряет скорость работы.
5. Программная реализация.
Для программирования микроконтроллера написана программа, эмулирующая протокол SPI. Используются D2XX драйвера от FTDI, предназначенные для работы с микросхемой напрямую, а не с виртуальным COM портом. Код программы написан на Delphi, библиотека D2XX для Delphi взята с сайта FTDIchip.com. Обмен данными реализуются с помощью режима bitbang микросхемы FT245B.
5.3. Использование драйвера D2XX.
Для начала работы с устройствами FTDI необходимо получить их список. Для этого служит функция
procedure TMainFrm.GetDeviceList();
var
Result: FT_Result;
i: integer;
begin
DeviceList.Clear;
Result := GetFTDeviceCount;
if (Result = FT_OK) then
begin
for i := 0 to FT_Device_Count-1 do
begin
GetFTDeviceDescription(i);
DeviceList.Items.Add(
end;
end;
end;
5.2. Bitbang.
Важно не путать bitbang режим FT245B и bitbang режим COM порта. FT242BM может быть переведена в специальный режим, который переопределяет функции нормальной работы микросхемы. Этот режим преобразует 8 информационных линий в 8-мибитную двунаправленную шину. Первоначально такой режим был разработан для программирования FPGA устройств, однако может применяться и для взаимодействия с EEPROM или микроконтроллерами.
Каждая ножка может быть настроена на ввод либо на вывод. Любые данные, которые записываются в микросхему, автоматически тактируются и появляются на ножках, настроенных на вывод, с указанной частотой.
В FT245B реализован только асинхронный bitbang, потому данные читаются постоянно, опять же с заданной частотой. Более новые микросхемы имеют синхронный bitbang режим, в котором данные читаются только при записи, а в некоторых также присутствует Multi-Protocol Synchronous Serial Engine – режим, в котором уже реализованы наиболее популярные протоколы, такие как SPI, I2C и JTAG.
Для работы в режиме bitbang необходимо использовать две функции: FT_SetBaudRate и .
FT_STATUS FT_SetBaudRate (FT_HANDLE ftHandle, DWORD dwBaudRate)
Параметры функции: ftHandle – указатель на устройство (далее аналогично); dwBaudRate – необходимая скорость передачи.
Данная функция устанавливает скорость передачи и приема байт данных. Для bitbang режима необходимая частота передачи умножается на 16, т.е. для передачи на скорости 9600 Мбит/c необходимо выполнить функцию FT_SetBaudRate с параметром dwBaudRate, равным 153600 (16*9600).
FT_STATUS FT_SetBitmode (FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucMode)
Параметры функции: ucMask – маска bitbang режима, устанавливает, какие ножки должны быть вводами, а какие – выводами; ucMode – режим работы bitbang.
Данная функция позволяет задать направление работы каждой информационно ножки микросхемы, а также включить или отключить bitbang режим. Параметр ucMask является бит-маской – бит, установленный в ноль соответствует чтению с линии, установленный в единицу – записи на линию. Например, при параметре ucMask равному 00000101b, ножки D7-D3 и D1 будут вводами, а D2 и D0 – выводами.
Значения, которые может принимать параметр ucMode, приведены в таблице 2.
Таблица 2. Значения параметра ucMode
Значение |
Описание |
Устройства |
0x0 |
Отключение bitbang |
Все |
0х1 |
Асинхронный bitbang |
Все |
0x2 |
MPSSE |
FT2232, FT2232H, FT4232H и FT232H |
0х4 |
Синхронный bitbang |
FT232R, FT245R, FT2232, FT2232H, FT4232H и FT232H |
0х8 |
MCU Host Bus Emulation |
FT2232, FT2232H, FT4232H и FT232H |
0х10 |
Fast Opto-Isolated Serial |
FT2232, FT2232H, FT4232H и FT232H |
0х20 |
CBUS bitbang |
FT232R и FT232H |
0х40 |
Режим синхронного FIFO |
FT2232H и FT232H |

- USB термометр
- Using visual material in teaching Past tenses in 4th form
- Uzbek and American cinematography
- Uzņēmuma vadība atkarība no tās organizācionāla attīstības posma
- Uznemuma X komercdarbibas organizacija
- Uzņēmuma “X” saimnieciskās darbības vērtējums
- Uосударственноt регулирования товарного обращения
- Tехнико-экономическое создание мини-завода по производству многослойного стекла
- UEFI – новый шаг развития BIOS
- Ukraine and Turkish relationships
- UML язык программа: домофон
- UN House and Common Services Assistant
- Usage of idioms in the modern English language
- Usage of lexical and grammatical transformations in translation