Как перепрограммировать NXP LPC1768 в старой плате FPrint 55ПТК по свои проекты.
Берем старую ненужную плату от принтера и на ней изучаем контроллеры LPC
Статья будет завершаться готовым для скачивания проектом USB-HID устройства (Клавиатура, мышка , виртуальный COM портв - на ваш выбор).
Segger Embedded Studio
Для программирования мы выбираем среду разработки Embedded Studio.
Главное на наш взгляд достоинство Segger Embedded Studio, что у них представлена Не коммерческая версия , которая имеет полный функционал без ограничений.
А также компания SEGGER поставляет популярный программатор JLink , который подходит к большому количеству микроконтроллеров ARM (стоит на Алиэкспрессе 700р.) .
Им мы и будет прошивать и отлаживать плату.
Немного о минусах Embedded Studio
Главный минус - это отсутствие большого количества примеров для разных контроллеров (в отличии например от среды Keil).
У Segger есть пример на их плату разработчиков с контроллером MK66F18 (это тоже NXP). Изучаем там код.
В нашем случае для создания ведомого USB устройства под LPC1768 качаем с сайта segger.com поддержку нашего контроллера (называется ESPRO).
И далее создаем свой проект под LPC 1768 с нуля по аналогии с MK66F18 подкидывая туда все нужные файлы *.h,*.c .
Получается полностью автономный проект (без внешних зависимостей), который можно скачать по ссылке :
Самое приятное в Embedded Studio, что далее можно легко реализовывать любое USB-HID устройство внося минимальные изменения в код.
Поскольку программный код любого USB устройства является очень объемным мы не будем здесь приводить его частично или полностью, проще смотреть готовый работающий проект.
Отметим приятные возможности Embedded Studio , с которыми мы столкнулись:
Отладка
Отладка JLink-ом идет по всем функциям , в том числе и по тем , что в Keil невозможно (например SystemClock_Config()).
Трассировка
Для трассировки по SWO Segger использует свой набор файлов, смотрите ветку проекта SEGGER. В любом месте проекта вы может вставить инструкцию типа:
SEGGER_RTT_printf(0, "This is my message\n");
и сообщение попадет в окно отладки.
Также туда попадают штатные сообщения от USB обмена, настраивается это инструкциями :
USB_SetWarnFilter(0xFFFFFFFFF);
USBD_SetLogFilter(0XFFFFFFFFF)
операционная система EmbOS
Да-Да, именно операционная система в контроллерах ARM.
Не надо самому мучатся с созданием нескольких одновременно выполняющихся задач. Например одновременно управляем USB , Ethernet каналами , microSD , flash-ой и т.д.
Все гораздо проще - используйте embOS от Segger (она по умолчанию встроена во все примеры Segger-а).
Для этого у SEGGER есть своя библиотека и процесс создания сложных устройств становится намного приятнее.
Просто невероятная скорость компиляции
По сравнению с Keil5 раз в 20 быстрее полная пересборка проекта! Лично убедился на Win10-64 и Win7-64.
Вот так-то и можно будет быстро создавать свои решения.
Не забывайте про лицензионное соглашение Segger
Помните, что для использования всех возможностей БЕСПЛАТНО надо принять лицензионное соглашение о некоммерческом использовании продукта.
То есть для создания проектов для себя лично, для обучения программированию контроллеров пожалуйста пользуйтесь на здоровье.
Проект также выложен на github-е
https://github.com/PavelDorofeev/USB-Device-LPC-1768-Segger-Embedded-Studio
Если у вас появились вопросы , задавайте , будем решать вместе.