Site Loader

Простой внутрисхемный программатор ARM микроконтроллеров серии LPC своими руками. Схемотехника. Часть первая / Хабр

progchip666

Программирование микроконтроллеров *Схемотехника *

Из песочницы

В последнее время, как среди профессиональных разработчиков, так и в рядах начинающих электронщиков широкое распространение получили ARM микроконтроллеры. Очень большой популярностью пользуются разработки фирмы NXP. Эта фирма производит огромный спектр изделий – от дешёвых и малопотребляющих до высокопроизводительных, поддерживающих такие интерфейсы как USB и Ethernet.

Хочу предложить вниманию читателей свою разработку, которой лично я пользуюсь, пожалуй, чаще всего. Это простой внутрисхемный программатор, который легко можно изготовить собственными руками. Программатор предназначен для программирования широкораспространённых ARM микроконтроллеров фирмы NXP серии LPC2xxx.

Это микроконтроллеры с ядрами ARM7, Cortex-M0 и Cortex-M3. Кроме этого, с его помощью можно программировать недорогие 8-битные микроконтроллеры из серии LPC9xx, за исключением самых простейших из серии LPC901.
Подробнее со списком можно ознакомиться здесь.
www.ru.nxp.com/products/microcontrollers
Программатор подключается к порту USB и не требует дополнительного питания. Он собран всего на двух микросхемах и одном транзисторе.
Устройство может использоваться не только для программирования платы с микроконтроллером, но и для связи с ней по эмулируемому последовательному порту.


Рис. 1. Схема принципиальная электрическая, часть первая.

Программатор собран на основе микросхемы фирмы FTDI – FT232RL

www.ftdichip.com/Products/ICs/FT232R.htm
Для успешного программирования не забудьте скачать и установить драйвер микросхемы, который подходит для применяемой Вами операционной системы.
Ищите его здесь:
www.ftdichip. com/FTDrivers.htm
Фильтр L1 можно заменить на резистор сопротивлением 10 … 22 Ом.
Светодиоды VD1, VD3, сопротивления R3, R4 можно исключить, если не требуется индикация передачи и приёма пакетов данных по USB.

Рис. 2. Схема принципиальная электрическая, часть вторая.

Для программирования микроконтроллеров серии LPC2000 используется разъём X3, для программирования LPC900 X1.


Рис. 3. Схема принципиальная электрическая, часть вторая для программирования микроконтроллеров только серии LPC2000.

Микроконтроллеры серии LPC900 используются не часто, если Вам требуется программировать только ARMы LPC2000 вторую часть схемы можно очень сильно упростить. Упрощённая часть показана на рисунке 3.

Рис.4. Монтажная схема.

Рис.5. Внешний вид программатора.
В качестве светодиодов можно применить как SMD, так и выводные.
В качестве транзистора подойдёт практически любой, прямой проводимости, подходящий по цоколёвке.

Список используемых деталей, схема и трассировки платы в формате PCAD 2006, расположены в прилагаемом архиве.
docs.google.com/open?id=0B8EEcNDjnzhhUUZJbjc2cEx3NHM
Программирование можно производить с помощью бесплатно распространяемой программы Flash Magic
www.flashmagictool.com
Подробнее о подключении разных микроконтроллеров к программатору и процессе внутрисхемного программирования я расскажу в следующем посте.

Теги:

  • Электроника для начинающих*
  • Программинг микроконтроллеров*

Хабы:

  • Программирование микроконтроллеров
  • Схемотехника

Всего голосов 11: ↑10 и ↓1 +9

Просмотры

70K

Комментарии 3

Шульгин Олег Анатольевич @progchip666

Разработка электронных устройств. ИП

Хабр Карьера Skype

Комментарии Комментарии 3

Программаторы для микроконтроллеров в Екатеринбурге

Каталог

Программаторы для микроконтроллеров Программатор Vertyanov SUCCESSOR для мультиконтроллеров NUVOTON, ITE, ENE, MEC

8200

в магазин

Программаторы для микроконтроллеров ST-LINK V2 программатор STM32 STM8

952

1050

в магазин

Программаторы для микроконтроллеров Программатор 51 AVR USB ISP ASP Atmega programmer

448

в магазин

Программаторы для микроконтроллеров Программатор Ch441A для FLASH и EEPROM

350

в магазин

Программаторы для микроконтроллеров Программатор ST-Link V2 для STM32 и STM8

790

в магазин

Программаторы для микроконтроллеров Программатор AVR USBASP

353

в магазин

Программаторы для микроконтроллеров Программатор AVR USBASP USBISP

440

в магазин

Программаторы для микроконтроллеров USB программатор для ESP8266 ESP-01

190

в магазин

Программаторы для микроконтроллеров Адаптер пружинный для микросхем в корпусе SOP8

340

в магазин

Программаторы для микроконтроллеров Программатор FLASH и EEPROM на Ch441A

330

в магазин

Программаторы для микроконтроллеров Программатор AVR USBISP в корпусе

376

в магазин

Программаторы для микроконтроллеров Программатор AVR USBASP USBISP в алюминиевом корпусе

440

в магазин

Программаторы для микроконтроллеров Кроватка для программатора PICkit 3

234

в магазин

Программаторы для микроконтроллеров Программатор ST-LINK V2

600

в магазин

Программаторы для микроконтроллеров Преобразователь USB-TTL PL2303

220

в магазин

Программаторы для микроконтроллеров Программатор CP2102 USB 2. 0 — TTL UART 6Pin

440

в магазин

Внутрисхемные программаторы, эмуляторы, отладчики Olimex PIC-KIT3, Программатор-отладчик для PIC-микроконтроллеров

10930

в магазин

Внутрисхемные программаторы, эмуляторы, отладчики Microchip MPLAB Snap, Программатор/отладчик для микроконтроллеров PIC, dsPIC, AVR и SAM

9780

в магазин

USB-программатор TL866II Plus EEPROM, флеш-BIOS, NAND, сжигание + 10X, аксессуары для ATMEL AVR ATMEGA AT90 PIC GAL SRAM

4255

6545

в магазин

Внутрисхемные программаторы, эмуляторы, отладчики Microchip MPLAB PICkit 4, Внутрисхемный отладчик/программатор для PIC и dcPIC флеш микроконтроллеров

25130

в магазин

USB Программатор USBISP для микроконтроллеров Atmel, AVR

1235

в магазин

ISP программатор STK500 AVRISP для микроконтроллеров AVR

1719

в магазин

Китай Программатор USBASP | ISP для микроконтроллеров ATmega, ATtiny

500

в магазин

Отладчик/эмулятор/программатор MPLAB ICD3 (DV164035)

72115

в магазин

WCH-Link программатор-отладчик для RISC-V/ARM микроконтроллеров и SoC с интерфейсом Type-C и SWD TTL

330

в магазин

Arduino usb Программатор USBISP для микроконтроллеров Atmel, AVR

1235

в магазин

WCH-Link программатор-отладчик для RISC-V/ARM микроконтроллеров и SoC с интерфейсом Type-C и SWD TTL

330

в магазин

USB программатор для AVR (Tiny AVR ISP на базе ATtiny44)

499

в магазин

ISP программатор STK500 AVRISP для микроконтроллеров AVR

1719

в магазин

Набор для программирования Sinkr PIC PICKIT3.

5 совместимый программатор микроконтроллера PIC и встроенный отладчик для почти микроконтроллера PIC

2636

4393

в магазин

Внутрисхемные программаторы, эмуляторы, отладчики Microchip MPLAB ICD 4, Быстрый внутрисхемный отладчик/программатор PIC и dcPIC микроконтроллеров

92340

в магазин

USB-программатор TL866II Plus EEPROM, флеш-BIOS, NAND, сжигание + 10X, аксессуары для ATMEL AVR ATMEGA AT90 PIC GAL SRAM

3783

6523

в магазин

Набор для сборки Программатор Willem Programmer ver 4.5 DIY Kit Programmer

4058

в магазин

Внутрисхемные программаторы, эмуляторы, отладчики Texas Instruments MSP-FET, Высокоскоростной программатор/отладчик для всех микроконтроллеров MSP430

34880

в магазин

Программатор Nu-Link для микроконтроллеров NuMicro

1539

в магазин

USB-программатор TL866II Plus EEPROM, флеш-BIOS, NAND, сжигание + 10X, аксессуары для ATMEL AVR ATMEGA AT90 PIC GAL SRAM

4602

7671

в магазин

WCH-Link USB программатор-отладчик для RISC-V/ARM микроконтроллеров и SoC с интерфейсом SWD TTL

460

в магазин

Программатор PICKIT3, универсальный PIC ICD2 Pickit 2 PICKIT 3, адаптер для программирования сиденья

1671

2785

в магазин

Программатор ручной ICDHP для декодоров ICD

164725

в магазин

Программатор USB ISP на Atmega8A для микроконтроллера AVR с поддержкой Windows, MacOS, Linux (У)

477

в магазин

AVR-ISP500, Внутрисистемный программатор с USB интерфейсом для микроконтроллеров серии Atmel AVR Flash Olimex

4825

в магазин

Программатор PICKIT3 PIC KIT3 PICKIT 3, программирование в автономном режиме, Монополия микроконтроллера PIC + переходник для программирования PIC

1600

в магазин

Sinkr PIC Programming Kit PICKIT3 совместимый программатор микроконтроллеров PIC и внутрисхемный отладчик для почти PIC MCU

1874

2811

в магазин

embedded — Зачем микроконтроллерам нужен программатор?

\$\начало группы\$

То есть, если бинарный код уже сгенерирован ПК, нельзя ли просто взять этот бинарный код, перенести его в определенное место во флеш-памяти по определенной шине, например Serial Wire, и все заработает?

Почему для встроенной цепочки инструментов обычно требуется программист?

  • встроенный
  • программирование

\$\конечная группа\$

4

\$\начало группы\$

Это то, что делает программист.

Он получает двоичный вывод от компилятора и сохраняет его во флэш-СППЗУ микроконтроллера, обычно через последовательную шину.

Флэш-СППЗУ требует наличия алгоритма программирования для сохранения в нем данных с предварительным стиранием. Программист выполняет этот алгоритм. Это не похоже на запись данных в оперативную память. Это очень хорошо задокументировано и объяснено в Интернете.

\$\конечная группа\$

8

\$\начало группы\$

Программатор осуществляет «по конкретной шине». Некоторые устройства имеют встроенные загрузчики (могут быть аппаратными, программными или микропрограммными), которые позволяют использовать какой-либо порт для загрузки кода.

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

\$\конечная группа\$

1

\$\начало группы\$

передать его в определенное место во флэш-памяти по определенной шине

Это именно то, что делают флеш-программаторы. Они просто не используют что-то медленное и архаичное вроде RS232, а вместо этого в настоящее время обычно используют JTAG/SWD. Часто переводится на/с USB.

Высокоскоростная шина, такая как JTAG, необходима для двух вещей:

  • До некоторой степени точная отладка в реальном времени, включая такие вещи, как «краже циклов», трассировка инструкций и другие подобные приемы, которые могут использовать отладчики.
  • Во избежание длительного времени программирования.

Например, в темные века, когда все создавалось с нуля, я вспоминаю такие вещи, как загрузчик RS-232 со скоростью 9600 бит/с и квитированием, а также время программирования EPROM. Программирование одного микроконтроллера может занять до 20 минут.

До начала 2000-х почти каждое семейство микроконтроллеров имело свой собственный специальный интерфейс программирования «снежинка», который был далек от стандартизации. Это были ужасные, ужасные вещи. Затем появились различные проприетарные однопроводные интерфейсы отладчика и, наконец, JTAG/SWD, которые стали отраслевым стандартом с появлением PowerPC и ARM.

Вы, , можете , конечно, по-прежнему использовать загрузчики через USB, CAN, UART и т. д., и многие микроконтроллеры даже имеют встроенную аппаратную поддержку для этого. Но они предназначены для использования в специализированных случаях, а не для серийного программирования.

\$\конечная группа\$

5

\$\начало группы\$

Способность к самопрограммированию имеет ряд затрат, и, как правило, этих затрат можно избежать, исключив эту возможность:

  1. Самопрограммирующийся MCU может сам себя заблокировать. Ой…
  2. Безопасность: может быть добавлен путь, по которому хакер сможет удаленно модифицировать прошивку устройства.
  3. В любом случае, чтобы получить начальную программу, у вас должен быть внешний программный интерфейс (хотя он встроен в некоторые микроконтроллеры).
  4. Необходимость написать программное обеспечение для поддержки самопрограммирования.
  5. Коммуникационный интерфейс для получения новой программы, память для буферизации новой программы, резервный аккумулятор, чтобы питание не пропадало в процессе перезаписи флэш-памяти, любые специальные напряжения, схема записи, опять же, программное обеспечение для поддержки всего этого. .. См. ответ @Russell McMahon.
  6. Скорость программирования: использование внешнего программатора может значительно ускорить процесс программирования, особенно если единственный обычно доступный коммуникационный интерфейс медленный.

\$\конечная группа\$

\$\начало группы\$

Другие ответы в целом были хорошими, но не обязательно все четко излагали ИМХО.

  1. Чтобы загрузить скомпилированную программу в микроконтроллер, ПК, содержащий скомпилированную программу, должен быть подключен непосредственно к микроконтроллеру каким-либо способом, обеспечивающим метод двунаправленной связи. Это одна из задач программирующего устройства: обеспечить этот канал связи.

  2. Некоторые микроконтроллеры, но не все, требуют для программирования высокого напряжения. Под высоким напряжением я подразумеваю выше, чем Vcc. Обеспечение этого напряжения является еще одной важной функцией программирующего устройства.

Каждый микроконтроллер, с которым я имел дело, позволяет запрограммировать его с помощью так называемого загрузчика. При включении питания (или сбросе) загрузчик ищет по одному или нескольким определенным каналам связи кого-то, кто пытается заменить существующую прошивку новой. Если он обнаружит, что это так, и все проверено с точки зрения безопасности, то загрузчик принимает новую прошивку и помещает ее вместо старой программы. Это очень часто делается с коммерческими продуктами, которые позволяют пользователю обновлять прошивку. Обратите внимание, что для этого требуется, чтобы загрузчик уже был загружен во флэш-память «обычными» методами. Так что мы до сих пор не решили проблему программирования свежего чипа.

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

При этом некоторые микроконтроллеры можно программировать без специального напряжения. Серия AVR является хорошим примером. Им все еще нужно какое-то оборудование для подключения программного обеспечения на вашем компьютере к цифровым контактам на вашем микроконтроллере (и, очевидно, программное обеспечение на ПК, чтобы заставить его работать). Вы можете получить все в Интернете, чтобы превратить нелюбимый Arduino в программатор. для чипов AVR. Это соответствует требованию (1) выше, и, поскольку чипы AVR не имеют требования (2), Боб — ваш дядя.

Интересно, что однажды я построил инструмент, которым управлял Raspberry Pi. Оказалось, что RPI не может предоставить определенные сигналы, которые мне нужны, с адекватными временными требованиями. Я искал существующую микросхему, которая могла бы делать то, что мне нужно, но ничего не нашел. Итак, я использовал ATtiny85. Я написал некоторое простое программное обеспечение, чтобы превратить его в чип моей мечты, и запрограммировал его непосредственно через цифровой GPIO RPI. Программист не требуется. Это оказалось и легко, и весело. Но проектирование схем и программирование микроконтроллеров всегда доставляло мне удовольствие

\$\конечная группа\$

\$\начало группы\$

Не все микроконтроллеры нуждаются в программировании через протоколы и соединения, предназначенные для отладочного зонда или программатора.

Например, микроконтроллер STM32F446RE имеет два контакта загрузки, которые определяют, выполняет ли микроконтроллер программу, хранящуюся в его (основной) флэш-памяти, загружается ли он из своего статического ОЗУ или загружает ли он программу из своей так называемой «системной памяти». Память». Эта программа перезаписывает основное содержимое флэш-памяти новой основной программой полезной нагрузки, передаваемой через UART, CAN или SPI (где порты и контакты, которые должны использоваться в каждом случае, фиксированы и могут быть найдены в документации). Таким образом, микроконтроллер можно запрограммировать с помощью стандартного устройства USB-to-UART, через CAN-шину и так далее.

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

\$\конечная группа\$

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

ручных программаторов микроконтроллеров PIC для производственных и полевых обновлений.

Портативный USB-программатор PIC Starter Kit

USB Starter Kit для ручного PIC-программатора
Ручной программатор PIC с интерфейсом USB для ПК и программным обеспечением. Загрузите ручной программатор PIC с ПК с помощью USB-загрузчика и простого программного обеспечения, после чего ПК вам не понадобится…

Код заказа
PIC-HH0110

Комплект

Добавить в корзину

Стартовый комплект 8-канального ручного программатора PIC

Стартовый комплект USB для 8-канального ручного программатора PIC
Простой в использовании портативный программатор PIC, который поддерживает до 8 различных программ, с одной кнопкой для целевого программирования и простого выбора слота…

Код заказа
PIC-HH0810

Цена: 188,10 €

8-way Портативный программатор PIC Starter Kit

Добавить в корзину

Ручной USB программатор PIC

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

Order Code
PIC-HH0120

Price: €161.10

USB Handheld PIC Programmer

Add to Cart

USB 8-Way PIC Handheld Programmer

USB 8-Way Handheld Программатор PIC
Мультипрограммная версия популярного портативного полевого и производственного программатора Kanda с 2 МБ памяти. Просто загрузите программатор…

Код заказа
PIC-HH0820

Цена: € 179.10

USB 8-боковой картинки каркасной программы

Добавить в корзину

Programmer Pic Programmer


Автономный портативный программатор — это новая более адаптируемая версия давно зарекомендовавшего себя портативного программатора Kanda. Он имеет 31 программный слот, которые загружаются с ПК и выбираются с помощью клавиатуры

Код заказа
PIC-PP0110

Цена: € 269.10

Стандартный портативный PIC Programmer

Добавить в корзину

8-way ate Pic Programer Starerm Версия ATE (Automated Test Equipment) 8-позиционного портативного программатора PIC с USB-интерфейсом для ПК и программным обеспечением.

Он оснащен интерфейсом ATE для автономной работы…

Код заказа
PIC-HH081ATE

Price: €170.10

8-way ATE PIC Programmer Starter Kit

Add to Cart

USB Dongle2 for Handheld PIC Programmer

USB Interface for Handheld PIC Programmer
Интерфейс USB ПК для микроконтроллера Kanda PIC Ручной программатор PIC. Обновляет старые программаторы LPT на USB…

Код заказа
PIC-HH-USB

Цена: 27,00 €

USB-ключ2 для ручного программатора PIC

Запасной продукт

10-контактный адаптер на RJ11

10-контактный адаптер на RJ11
Адаптер для преобразования целевого интерфейса ручных программаторов PIC и брелоков в соединение RJ11. Этот тип соединения используется Microchip ICD2.

Код заказа
10RJ11

Цена: 10,80 €

10-контактный адаптер на RJ11

В корзину

10-6-контактный адаптер SIL

10-6-контактный адаптер SIL для программаторов PIC
Адаптер для конца 10-контактного кабеля для программирования, который преобразуется в 6-контактный разъем SIL (Single In Line).

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *