LPC1102 и тёплый ламповый индикатор



Написать этот текст меня заставила статья – «Freescale уменьшила размеры самого маленького в мире микроконтроллера на архитектуре ARM». За три дня до публикации этой статьи я закончил свой маленький проект, в котором был использован контроллер NXP LPC1102, — это прямой конкурент описанного в статье Freescale KL02 и возможно нового KL03. Далее будет сравнение двух микроконтроллеров от NXP (Филипс) и Freescale (Моторола), и мой проект на LPC1102.

Сравнение

На данный момент документация на KL03 не доступна (только анонсирован) поэтому он участвовать в сравнении не будет, собственно не сильно и хотелось, новый KL03 мало отличается от прошлогоднего KL02. Вот главные отличия:
  • уменьшены габариты на целых 0.33мм, у KL02 1.99x1.94мм, у нового KL03 — 1.99 x 1.61мм;
  • добавлено 8 кБайт ПЗУ в которой располагается заводской загрузчик.
  • уменьшен размер ОЗУ с 4кБайт у KL02 до 2кБайт у KL03.

Урезание в два раза самого ценного ресурса – ОЗУ не самая гениальная идея, но очевидно такова цена добавления 8 кБайт ПЗУ и уменьшения размеров корпуса. Ведь корпусом здесь, по сути, является сам кремниевый чип.

Итак, сравнивать будем два наиболее близких представителя.

<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
</style>


LPC1102UK MKL02Z32CAF4R
Размеры 2.17 х 2.32 мм 1.99 х 1.94 мм
Шаг выводов 0.5 мм 0.4 мм.
Количество выводов 16 20
Архитектура ARM Cortex-M0 ARM Cortex-M0+
Напряжение питания 1.8 – 3.6 В 1.71-3.6 В
Рабочая температура -40-85 °С -40-85 °С
Частота ядра 50 МГц 48Мгц
ППЗУ 32К 32К
ОЗУ
ПЗУ 16К -
АЦП 10бит 12бит
ЦАП - 6бит
SPI 1 1
I2C 1 2
UART 1 1
Таймеры 2-32бит, 2-16бит 3-16бит
Отладка SWD SWD

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

Шаг выводов, 0.4 у Моторолы против 0.5 у Филипса, с точки зрения разработки печатной платы выбор очевиден в пользу последнего. Столь мелкий шаг неизбежное следствие миниатюризации корпуса. Маленький шаг позволил добавить ещё один ряд выводов, у KL02 их 20, у LPC — 16.

Добавить “+” к названию архитектуры, несомненно, стоило, основной и неоспоримый плюс этого плюса это экстремально низкое энергопотребление. В оправдание LPC1102 можно сказать, что он старше, чем архитектура ARM Cortex M0+.
Учитывая разницу в архитектуре, сравнивать производительность, опираясь на тактовую частоту просто не корректно, я затрудняюсь сказать, что лучше/выше/быстрее/ производительнее. 50 и 48 МГц это очень много для тех задач, где может потребоваться такая миниатюризация, в большинстве случаев частота будет снижена для снижения энергопотребления. Поэтому тактовая частота будет одним из последних критериев при выборе того или иного.

32Кбайта флеш памяти “под программу” для такой крошки более чем достаточно, да и ещё свой загрузчик поместиться, тут вопросов нет. А вот с оперативной памятью вопросы есть. NXP постарался и впихнул невпихуемое целых 8 килобайт в таком крохотном корпусе. У Freescale в два раза меньше — 4 килобайта, пожалуй, это минус, но если подумать, 4К не так уж и мало учитывая габариты и количество выводов, но хотелось бы больше. Всегда будет хотеться больше.

ПЗУ постоянное запоминающее устройство, т.е. память без возможности перепрограммирования. В этой памяти располагается заводской (прошитый при изготовлении чипа) загрузчик позволяющий прошить пользовательскую программу в новый чип. Прошивка осуществляется по одному из доступных интерфейсов, например UART. И такой заводской загрузчик есть только в LPC1102, в KL02 подобного просто нет. Согласно анонсу заводской загрузчик появится в KL03.

Последовательный интерфейс SPI наличествует в обоих контроллерах, однако, в контроллере от NXP этот интерфейс гораздо более функционален, чего стоит только буфер FIFO на 8 фреймов (у Freescale – 1 фрейм) и ещё много фишек которых нет в KL02. Но есть один существенный минус — вывод SPI_CLK совмещён с SWD_CLK. Это означает, что не получится отлаживать работу SPI с помощью JTAG/SWD адаптера. Выход есть, на период отладки запаять LPC1104 вместо LPC1102, там эти сигналы разнесены на разные выводы.

I2C ничем не примечателен, но у KL02 два таких интерфейса, у LPC1102 один. Зачем два лично мне не понятно, интерфейс шинного типа, т.е. к одному интерфейсу можно подключить множество устройств, так зачем два?… ну да ладно, пусть будет, вроде не мешает.

С таймерами и их разрядностью у LPC1102 богаче, чем у конкурента. Есть 32хразрядные и больше выходов захвата/сравнения. Сторонников NXP это не может не радовать.

В обоих контроллерах имеется интерфейсc SWD для отладки и программирования. Кто не в курсе это двухпроводный интерфейс, не считая общего провода. Очень удобно в отличие от JTAGа с его множественными сигналами.

В копилку плюсов контроллера от Freescale хочу ещё добавить наличие в каждом чипе уникального 80 битного идентификатора, порой очень полезная вещь.

Как итог скажу, что в свой проект при прочих равных я бы выбрал контроллер фирмы Филипс (NXP), тупо из-за 8К ОЗУ, ну и ближе он как-то и родней что ли. Хотя конечно всё зависит от задачи.

Проект на LPC1102, тёплый ламповый светодиодный индикатор.

Hard

Бороздил интернет, уж не помню в поисках чего, и тут на глаза попалось вот такое чудо.


Индикатор HDSP-2001 производства HP

Миниатюрный светодиодный графический индикатор размером в стандартный корпус DIP12. Позолоченные выводы, керамический корпус, стеклянная крышка (продавец утверждал, что сапфировое стекло…) — просто восторг, сейчас таких не делают. Индикатор имеет четыре знакоместа, 7х5 пикселей каждое. Способ управления виден из структурной схемы — сдвиговый регистр 4*7бит плюс пять входов перебора столбцов. Также имеется выход сдвигового регистра, что позволяет легко наращивать разрядность.


Структурная схема индикатора HDPS-2001

Заказал. Приехали. Нужно срочно включить, посмотреть как работает. Для этого берём, нет, не Arduino, не RasberryPi, не какой-нибудь старт кит коих хватает, и даже не STM32xxx, и даже не AVR, храни его господь, а берём LPC1102, который пылится в шуфлядке уже очень давно.


Подарок от NXP

Нет ну, а что гулять так гулять нужно ведь ознакомиться с функциональными возможностями перспективного микроконтроллера. Опять-таки господам из NXP приятно, что не зря прислали, абсолютно безвозмездно, между прочим. Сказано – сделано!


Вид сверу


Вид низу


Ещё не залитый эпоксидной смолой LPC1102

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

А видно следующее:
  • макетная плата
  • стандартный 20 пин разъём JTAG;
  • линейный стабилизатор напряжения на 3.3В;
  • два индикатора HDSP-2001 вставленные в разъём.
  • микроконтроллер LPC1102 распаянный для удобства вместо кристалла в какой-то ДИП микросхеме.
  • с обратной стороны ключи для зажигания столбцов.


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

Soft

Софт был написан на Си в среде IAR. Ставил целью сделать простенькую бегущую строку. Первым делом “буфер экрана” – двумерный массив 8x5 байт; 8-знакомест, в каждом знакоместе 5 столбцов, каждый столбец 7 бит. Прерывание системного таймера 2мс. В прерывании выключаем предыдущий столбец, загружает в сдвиговые регистры из “буфера экрана” данные следующих 8и столбцов и зажигаем их, и так далее каждые 2мс. Внимательный читатель помнит, что сигналы SWD_CLK и SPI_CLK совмещены на одном выводе, поэтому SPI программный, 7битный. Самое сложное сделано!
Далее пишем свой putchar который будет работать с нашим “буфером экрана”, потребуется шрифт 5х7. Шрифт не сложно сделать самому но я взял готовый(ссылка ниже). Пишем функцию SetPos – для указания в какое знакоместо выводить. Ну, а стандартный printf подхватит наш переопределённый putchar. Дальше каждые 200мс выводить строку в новое место — бегущая строка готова.



Заключение

Всё описанное было сделано за три вечера, больше всего времени ушло на “разваривание” LPC1102 внутри какой-то микросхемы – тема достойная отдельного поста. Имея опыт, готовый и настроенный инструментарий, местами прямые руки и самое главное непреодолимое желание, это реально. Проект не имеет практического применения, просто хотел, мог, сделал.

Ссылки

[1] www.nxp.com/products/microcontrollers/cortex_m0_m0/lpc1100/LPC1102UK.html#documentation — LPC1102
[2] www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KL02&fpsp=1&tab=Documentation_Tab – KL02
[3] www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KL03&fpsp=1&tab=Documentation_Tab – KL03
[4] electronix.ru/forum/lofiversion/index.php/t44983.html — Шрифт 5х7, спасибо пользователю с ником “AHTOXA”
[5] www.hparchive.com/PARTS/HP-Displays-HDSP-2010.pdf — Техническая документация на индикатор
Поделиться публикацией

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

    +6
    Пока не увидел распайку lpc1102, был вопрос: как же вы его запаяли (и до конца надеялся, что не так).
    А вот индикаторы классные, где брали?
      0
      Индикаторы брал на allegro.pl (для меня логистика простая), а вообще на aliexpress.com есть, искать «HDSP-2000».
      0
      Здорово! У меня тоже такая LPC-шка где-то валяется, есть повод поиграть!
      А где вы такой индикатор заказывали? Опередили.
        0
        Аналогично. Пару лет лежала в кошельке, но куда то потерялась…
          0
          Нашла своё место, теперь кошелек у вас электронный и с мозгами.
        +1
        Индикаторы классные. Не видел таких раньше!
          0
          А мне подобные индикаторы уже попадались, причем советские:
          we.easyelectronics.ru/part/svetodiodnyy-matrichnyy-indikator-ipv70a.html
          Выглядят они действительно красиво. Между прочим, в московских автобусах в турникетах стоят похожие или такие же индикаторы.
            –3
            Скорей всего у них из российского только маркировка.
              +2
              ИПВ70А точно в Союзе производились — они упоминались в советских справочниках. Иностранные вроде как делаются на темной керамике, советские делались на светлой.
                –3
                ВМ80 тоже в союзе производились, как и многие другие микросхемы которые являлись копиями с зарубежных.
          +7
          «Тонкая, однако, работа»

          image

          =)
            0
            А стереомикроскопы для чего придумали?
            Еще бы микропаяльник с механизмом микропривода…

            А так в принципе не ново, блоху ведь как-то подковали, а этот чип по сравнению с блохой просто огромный.
            0
            Брутальная запайка. Какой-то фильм напоминает…
              0
              Даже такая пайка удивляет. Блин, 2х2 мм! Автор, сколько ты её паял, если не секрет?
                +3
                Долго ли умеючи. Время не засекал, сама по себе пайка быстро, чего там ткнул паяльником и готово. Долго подготовка, провода нарезать залудить, и т.д.
              0
              Еще бы место сдать где на родине можно приобрести таких по незаоблачной цене.
              Помню, советские были такие DIP-14 но одна 5x7 голая матрица.

              И кажется мне, что это индикаторы не простые а для проекционных приспособлений.
                0
                Отфрезеровали Zilogовскую микросхему, судя по остаткам логотипа? ) Или ошибся?
                  0
                  В творческом порыве взял первую попавшуюся из «помойки», даже не задумался что за она.
                    +1
                    Вот мне тоже Z80 сразу вспомнился
                      +1
                      Тут 28 ног, у Z80 40 :-)
                        0
                        Это я в курсе, он у меня лежит в ящике на расстоянии вытянутой руки :) Кусок эмблемы сразу вызвал ассоциацию.
                    +9
                    не имеет практического применения, просто хотел, мог, сделал

                    После этой фразы сразу поставил плюс
                    Спасибо за статью
                      0
                      А что за музыка на видео? Даже Shazam не берет.
                        +1
                        Huma-Huma — Not Too Cray
                        0
                        хм… А 12-выводная — это разве не DIP-12?
                          0
                          Вы правы, ошибочка.
                          0
                          Очень круто!!! Тоже заглядывался на эти индикаторы :)

                          Если говорит о энергопотреблении Cortex M0 и M0+, то у М0+ оно действительно меньше, но это все крохи в сравнении с потреблением шины и системы в целом — решают периферия и тех процесс. Основной плюс это доступ к IO портам за 1 такт(мимо APB/AHB по своей выделенной шине). У фрискейловского чипа основным преимуществом будет действительно малое энергопотребление и больше режимов сна, более автономная периферия.
                            0
                            А что это за черный провод такой? На ПЭЛ не похож, неужто изоляция резиновая?

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое