Поиски среды разработки USB для LPC1768 ...

Традиционно сначала начинаем пытаться программировать / отлаживать LPC 1768 в Keil5.

Под STM32 в Keil5 у меня был положительный опыт разработки. Но тут задача освоить USB на примере именно LPC1768.

Облом в Keil выяснился практически сразу. MDK-Plus это предложение купить софт на 3800$.

фотка 1

IDE на основе Eclipse пока не рассматириваем

Это LpcExpresso от NXP, CooCox и т.д.

Продолжаем искать бесплатные свободные IDE для LPC 1768.

Выбор среды Embedded Studio подсказал программатор JLink - больно уж он удобен : подходит ко всем контроллерам (по крайней мере какие я знаю - stm32, lpc...).

Отладка у него идет без проблем практически всегда. Частота трасировка по SWO у него определяется автоматом при помощи спец. утилиты.

У JLink (SEGGER) оказывается есть своя IDE - Embedded Studio.

сразу находим Баннер на сайте:

Бесплатная среда разработки ARM с полным фукционалом без ограничений ДЛЯ НЕ КОММЕРЧЕСКОГО ИСПОЛЬЗОВАНИЯ!

Среда реализована на закрытых библиотеках, так что исходники не посмотреть.

Примечание: через 1.5 недели изучения примеров emUSB-Device взлетел USB-HID на LPC1768.

Теперь обо всем по порядку:

На www.segger.com нет примеров USB для контроллеров NXP LPC Cortex-M3.

Качаем с сайта SEGGER https://www.segger.com/downloads/emusb-device их примеры для Cortex-M4 контроллера MK66F18.

Проблема начального уровня в том , что на www.segger.com нет примеров USB для контроллеров NXP LPC Cortex-M3. На форуме ответили , что пакета для LPC1768 у них нет (переросли ребята этот уровень).

Примеры Usb у SEGGER под их плату разработки и используется там HS USB (USB3.0), а у нас FS (Full Speed т.е. USB2.0).

Примеры от www.segger.com для USB разарботки NXP LPC MK66F18 Cortex-M4

Все легко скачивается с раздела emUSB-Device, он под их отладочную плату.

Там несколько примеров под LPC :
emUSB-Device Audio под отладочную плату emPower
SmartMSD тоже под отладочную плату emPower
и все похоже....

Мы используем свою плату с LPC1768 от принтера чеков FPrint 55ПТК (из ненужного хлама).

Не выкидывать же ее. Кстати платы для разработчиков с LPC Cortex-M3 3-4 тысячи , да и ждать не хочется. Если кому надо обращайтесь...

фотка 2

Сначала подтягивам D+ разъема USB к питанию

У нас для этого на плате надо на P3.25 подать 1 (настроен на выход).

Иначе никакого обмена по USB вообще не начнется.

Надо как-то изменить их примеры с MK66F18 на наш LCP1768

Просто тупо открываем первый попавшийся под руку пример Trial_emPower_WebUSB_190125 (или SeggerEval_emPower_emUSBD_Audio_SES_180424) , они оба компилируются нормально. Но привязаны он к плате
NXP MK66FN2MB.

У нас два пути :

1. Взять готовый проект - выкинуть все лишнее и добавить поддержку своего контролера.
2. Взять пустой проект и добавить все нужное по аналогии с другим проектом.

На самом деле на практике пришлось идти одновременно обоими путями.

Далее скачиваем с SEGGER-а User Manual на USB CDC и спокойно не торопясь вчитываемся....
Более приятного чтения я давно испытывал. Написано для дураков , что взять и куда добавить в проекте.

Сокращения для понимания, которые так или иначе мне пришлось узнать (вспомнить)

ветка проекта BSP (Board support package)
ветка USBD (USB Driver )
FPU - Float Point Unit , добавлено в Cortex M4
EABI - embedded application binary interface
ISR - Interrupt Service Routine (Обработчик прерывания - функция обработки прерывания)
APB - Advanced Peripheral Bus
PLL (Phase-Locked Loop) - генератор
NVIC - Контроллер вложенных прерываний (NVIC)
CCO - Current Controlled Oscillators
SC - System Control
PCONP - Peripheral power consumption ( PCUSB: USB interface power/clock enable ..|=0x80000000U)
аббревиатуры в файлах:
..._dp_... debug profile

ядро Cortex-M0 архитектура ARMv6-M, набор команд Thumb
ядро Cortex-M3 архитектура ARMv7-M , наборы команд Thumb и Thumb2
ядро Cortex-M4 архитектура ARMv7-M

В итоге берем создаем новый проект

Качаем поддержку LPC1768 (оказывается она есть - называется ESPRO)

Не помню где на segger.com качается это , но в результате у вас в каталоге pakages появится папка ESPRO :
(у меня) C:\Users\p\AppData\Local\SEGGER\SEGGER Embedded Studio\v3\packages\ESPRO .

Именно здесь и будем собирать *.h (заголовочные) , *.с (исходники) и *.a (библиотеки) файлы и по одному добавлять в наш новый проект.
Кстати *.a - это архивы файлов *.o и там есть файл с описанием содержания.

Добавляем в проект usb.h и начинаем раскручивать зависимости с USB.h .

Продолжение на соседней странице - выложен по этапный процесс программирования USB-HID.

Примечание: В 2020г. выяснили , что есть полностью открытая и бесплатная среда разработки LPC контроллеров MCUXpresso от производителя этих же контроллеров фирмы NXP.