Анонс уроков по LPCXpresso
Хочу представить вам небольшой курс по LPCXpresso на базе LPC1343. Замечание: Изложенный материал является "устаревшим". Так для версии среды 4.0 уже изменены и имена библиотек и пути. Текущее руководство следует использовать как "образец", не обязательно всё будет соответствовать с точностью до символа. Однако, среда версии 3.5 и библотека CMSIS версии 1.3 по прежнему доступны для загрузки с оффициального сайта. Если вы делаете свои первые шаги в программировании, рекомендую использовать именно их.
Зачем это надо
Цель, преследуемая мной, показать, что осваивать АРМ ни чуть не сложнее чем AVR или PIC. Меня до сих пор удивляет, когда народ, начинающий изучение электроники, говорит что "Начну вот с 8-битных, они проще". Ну не правда это.
Если сравнить средства разработки, доступные обыденному любителю решившему заняться изучением контроллеров, то явное лидерство на данный момент у STM и LPC. Посмотрите сами. Что бы освоить AVR вам надо либо собрать программатор самостоятельно, либо потратить на готовый порядка 1000 рублей. А если речь идет об отладке, то всё гораздо плачевнее. В аппозиции находится STM8, STM32 и LPC1xxx которые выбросили на рынок бюджетные отладочные платы. За 400-1000 рублей вы получаете не просто программатор, но и внутрисхемный отладчик (позволяет проводить проверку в собранном устройстве).
Огромным минусом, препятствующим распространению LPC и STM среди любителей, является отсутствие бесплатных средств разработки. А лицензия просит порядка $500+.
Но хочу обратить ваше внимание на отладочную плату LPCXpresso. Её отличительная особенность состоит в том, что при покупке вы так же получаете лицензионный ключ, позволяющий использовать IDE LPCXpresso от CodeRed с ограничением 128кБайт кода, чего для нас более чем достаточно.
На кого рассчитаны эти уроки
В первую очередь для новичков, желающих изучить АРМ. Знание электроники приветствуется, но надеюсь, не является обязательным. Знание программирования желательно, но материал постараюсь дать доходчиво и для первого знакомства.
Средства
Изучение будет проходить на базе отладочной платы LPCXpresso с установленным контроллером LPC1343 в среде от CodeRed. Если у вас в наличии имеется другой модуль (например, довольно много интересных модулей с распаянной периферией и подключенными дисплеями доступно на eBay), то это не моя проблема. Я не стану усложнять материал, делая кучу условных компиляций для всех видов платформ. Если вы считаете, что ваших знаний достаточно для использования другого модуля, то портировать пример сможете и сами.
Поскольку на LPCXpresso кроме контроллера практически ничего нет, нам понадобится ещё некоторое количество рассыпухи: кнопка, потенциометр, пара резисторов и провода.
По той же причине отсутствия распаянной периферии, уроки будут "бедными". Я постараюсь использовать как можно меньше дополнительных компонентов. Это будет либо легкодоступные недорогие компоненты, либо наверняка имеющиеся у вас. Но ни кто не застрахован от неожиданностей.
Приведу список того, что вам потребуется:
- тактовая кнопка [1-4] (для изучения портов ввода/вывода)
- потенциометр на 1к - 100к (для изучения АЦП)
- USB папа - как на флешке, переключатель, резистор на 1.5к (для изучения USB)
- Дисплей от Nokia 3310 (для изучения SPI)
- SD/MMC карта памяти [+разъем] (для изучения/закрепления USB и SPI)
- микросхема термометра LM75 (для изучения шины I2C) - материал сложный для начинания
- MAX3232 и 6 конденсаторов на 1мк, либо FTDI с обвязкой (для изучения UART)
- провод, олово, флюс и т.д. для пайки
Список как видите небольшой. Всё кроме дисплея и платы можете приобрести, например, где и я в Чип-НН (Огромное спасибо магазину за низкие цены и качественное обслуживание). Дисплей приобретался в магазине "Профи". К сожалению плата в Чип-НН более не продается, прийдется искать в других местах.
Так же рекомендую заказать и напаять на плату PLS/BLS для того что бы при измерении схемы можно было обойтись без паяльника, а простым переключением проводов. Так же полезной окажется беспаечная макетная плата (на любителя).
Да. И не забудьте про шнурок USB mini-A для подключения самой платы к компьютеру. В комплектацию он, к сожалению, не входит. А в прочем у меня он и так был, и мне не пришлось за него переплачивать.
Копирастам
Хочу обратить отдельное внимание для ошивающихся здесь владельцев/модераторов/прочих с других сайтов/форумов/прочих. Свободно разрешается только публикация ссылок на статьи. Сами статьи и их части, без предварительного согласия, копировать запрещено.
Для всех же хочу сообщить. Весь код, приведённый в моих уроках, изначально был под BSD-style лицензией (при условии применения с микроконтроллерами LPC) и я не возражаю, если вы его будете использовать в своих проектах (в том числе и коммерческих), с оговоркой, что я не несу за него ответственности. Ссылки на исходные материалы предоставлю ниже отдельно.
Отказ от ответственности
Весь приведённый материал распространяется что говорится "AS IS". Вы можете использовать его на свой страх и риск. Ни я, ни владелец сайта/хостинг, на котором опубликован материал, ни несёт ответственности за возможный причиненный ущерб. Паяйте, проверяйте, перепроверяйте и всё у вас будет хорошо.
Планы на будущее
После прочтения хотя бы пары статей можете оставить пожелания "что бы вы хотели видеть рассмотренным в данном курсе". Предложения "а напиши для моей платы", "а можно видео вот этого мигания" сразу не рассматриваются. Будьте добры, не утруждайте себя и не тратьте мое время.
Список материала
Здесь опубликован список статей. Для уроков опубликованных будут ссылки, для уроков запланированных просто название.
- Изучаем примеры. Введение в среду разработки. [важный]
- Создание проекта. Классика моргания светодиодом. [важный]
- Повторное использование кода. Подключаем библиотеку. [важный]
- Systick. Использование таймера для отсчета времени.
- GPIO input. Подключаем кнопку.
- Semihosting. Использование printf в отладке. [важный]
- АЦП. Измеряем напряжение.
- SPI. Подключаем дисплей от Nokia 3310.
- USB-bootloader. Прошиваем контроллер подручными средствами.
- USB-MSC. Разбираем пример.
- USB+SPI. Делаем картридер. [повтор]
- UART. Взаимодействуем с компьютером.
- Debug. Погружаемся в отладку на примере UART. [важный]
- PWM. Синхронный ШИМ на таймере.
- I2C. Работа с термометром LM75.
Ссылки
Много примеров по контроллеру и плате. Аппноуты NXP - http://www.nxp.com/#/page/content=[f=/dynamic/applicationnotes/tid-50809_sid-56890/data.xml] [English]
Отличная библиотека под BSD лицензией. Является библиотекой от NXP, но несколько доведённой до ума и дополненной. LPC1343 Code Base - http://www.microbuilder.eu/Projects/LPC1343ReferenceDesign/LPC1343CodeBase.aspx [English]
Документация и примеры по библиотеке LPC1343 Code Base - http://www.microbuilder.eu/Projects/LPC1343ReferenceDesign/CodeBaseDocumentation.aspx [English]
Знакомство с LPCXpresso на английском - LPCXpresso Getting Started.pdf
Информация по LPCXpresso от NXP (+видеоуроки) - http://ics.nxp.com/lpcxpresso/ [English]
Среда разработки для LPCXpresso (скачать после регистрации) - http://lpcxpresso.code-red-tech.com/LPCXpresso/ [English]
Пример AN10986 USB-загрузчик (ISP) - http://www.nxp.com/documents/application_note/AN10986.pdf (Код: http://www.nxp.com/documents/application_note/AN10986_-_USB_In-system_programming_with_the_LPC1300.zip)
etc...
Ссылки на статьи
Курс изначально опубликован и написано в сообществе EE
На случай пресловутой 503, или прочих даунов сообщества так же был размещен на форуме http://petro-ewlab.com/viewforum.php?f=123. Материал подредактирован в плане ошибок и доступности вложений, за что спасибо тов. petro-ew.
Ну и дабы не зависить от кого-либо другого (того же сообщества) расположился и на народе
Линк рекомендуется к сохранению.