Недавно я получил письмо с embedded.com о новом микроконтроллере MSPM0C1104. Судя по фотографии из презентации производителя, возможное применение — умные кольца. Конечно, это не главный компонент в таких гаджетах, но один из важных. При этом цена на LCSC всего 0.84 $ в розницу.

Краткие характеристики
Ядро CPU: Arm Cortex-M0+
Частота: 24 МГц
Флэш-память: 16 Кбайт
ОЗУ (RAM): 1 Кбайт
Тип АЦП: 12-разрядный SAR, 1.5 Msps
Количество каналов АЦП: 3
Количество линий GPIO: 6
UART: 1 интерфейс, поддержка LIN, irDA, DALI, Manchester, Smart Card
Количество I²C: 1 интерфейс, 1 Mbps
SPI: 1 интерфейс, 12 Mbps
Напряжение питания: 1.62...3.6 В
Диапазон рабочих температур: от −40 до +125 °C

Что ещё интересно: не требует внешнего кварца — есть два встроенных генератора на 24 МГц (–2%…+1,2%) и на 32 кГц. Есть и DMA, что для такого крошечного МК довольно необычно. На каждом выводе до шести альтернативных функций. Встроен температурный датчик и измеритель собственного напряжения питания. Отладка идёт через обычный двухпроводной интерфейс SWD. Реализован мощный механизм защиты от чтения содержимого Flash и RAM.

Потребление
RUN: 87 µA/MHz
STOP: 609 µA на 4 MHz, 311 µA на 32 kHz
STANDBY: 5 µA с сохранением SRAM
SHUTDOWN: 200 nA
Энергопотребление у него не рекордно низкое — есть микроконтроллеры с более низким током потребления. Этот чип скорее рассчитан на работу под управлением главного микроконтроллера или как узел в сети из нескольких микроконтроллеров. На это указывают высокие скорости его интерфейсов: потребление драйверов физических шин в реальном устройстве легко может превысить собственное потребление этого микроконтроллера.
Что на этом можно сделать

Дальнейший разбор буду вести с точки зрения DIY-разработчика, не пытаясь охватить все возможные варианты применения.
Конвертеры протоколов
Первое очевидное применение — конвертеры протоколов. Многие интересные датчики и периферийные устройства имеют специфичные интерфейсы: однопроводные протоколы (1-Wire, DHT), последовательные с нестандартными параметрами, или вовсе аналоговые сигналы со сложной логикой обработки. Такой компактный чип может выступать мостом-адаптером, гармонизируя все эти разнородные интерфейсы в единую шину I²C или SPI для главного контроллера системы.
Например, можно подключить несколько таких чипов к одной шине I²C и управлять через них длинными гирляндами адресных светодиодов WS2812 для создания недорогого RGB-дисплея. Главный контроллер при этом работает только с одной шиной, не заботясь о специфике протокола WS2812.
Умные органы управления
Отдельно интересно применение в умных органах управления — кнопках и ручных энкодерах с RGB-подсветкой и звуковой индикацией. Один такой чип может:
обрабатывать дребезг контактов и логику нажатий (короткое, длинное, двойное, вращение энкодера);
управлять анимированной RGB-подсветкой;
формировать звуковые сигналы на пьезоизлучателе;
обмениваться с главным контроллером по I²C или SPI как готовое «умное» устройство.
Умные кабели и разъёмы
Миниатюрные размеры (корпус 1.5×1.5 мм) позволяют встраивать микроконтроллер непосредственно в разъёмы кабелей, добавляя им дополнительные функции:
USB-кабели с измерителем мощности:
Чип размещается в корпусе разъёма USB-A или USB-C и подключается к линиям питания через токоизмерительный шунт. Для реализации достаточно 5 выводов чипа:
2 вывода для измерения напряжения на VBUS и падения напряжения на шунте (каналы АЦП)
2 вывода для UART (TX/RX) или I²C (SDA/SCL) для передачи данных
1 вывод GPIO для управления индикаторным светодиодом
Встроенный АЦП измеряет напряжение и ток, чип вычисляет мощность и энергию, а встроенная Flash хранит статистику. Информация передаётся через UART на недорогой OLED-дисплей в корпусе разъёма или по I²C в головное устройство.
Кабели с диагностикой контактов:
Для диагностики используются 3-4 вывода:
1-2 канала АЦП для измерения падения напряжения на контактах (контроль сопротивления)
1 встроенный температурный датчик (без дополнительных выводов)
1 вывод GPIO для светодиодной индикации состояния (зелёный — норма, красный — проблема)
Чип периодически измеряет сопротивление цепи, сравнивает с эталонным значением и детектирует деградацию контактов. При превышении порога сопротивления или температуры активируется предупреждение.
Остающиеся 2 свободных вывода могут использоваться для кнопки сброса статистики или дополнительного интерфейса.
Удалённые АЦП
Интересно применение этих чипов как «удалённых» АЦП на гальванически изолированной стороне мощных преобразователей энергии. Высокая частота семплирования и привязка к внешнему триггеру делают их неплохим решением для синхронных измерений в системе с высокочастотным ШИМ. Дополнительно доступно аппаратное усреднение до 128 отсчётов, что разгружает главный контроллер от лишней обработки.
Даже без гальванической изоляции удалённые АЦП значительно упрощают топологию платы — аналоговую землю можно фрагментировать, размещая чип с АЦП непосредственно возле точки измерения. Цифровой интерфейс I²C или SPI гораздо менее критичен к помехам, чем аналоговые сигналы, что особенно важно в силовой электронике и многофазных счётчиках электроэнергии.
Теги идентификации
Дешевизна и малые размеры чипа делают его применение интересным в качестве «тегов» для различных компонентов в системе. Например, каждая плата, мотор или кнопка могут иметь такой чип с защищённым протоколом по I²C для идентификации, учёта ресурса использования и передачи сигналов перегрева или других событий.
Внутренняя Flash может работать как EEPROM для хранения конфигурационных данных и счётчиков. MSPM0 SDK включает готовые библиотеки эмуляции EEPROM двух типов: Type A для хранения больших блоков данных и Type B для работы с отдельными переменными. Это избавляет от необходимости использовать внешнюю EEPROM, экономя выводы и стоимость.
Средства разработки
Поддерживаемые компиляторы
MSPM0C1104 основан на ядре Arm Cortex-M0+, что обеспечивает широкую поддержку инструментов разработки. Поддержка компилятора означает наличие готового startup-файла (код инициализации после сброса) для конкретного микроконтроллера. В MSPM0 SDK присутствуют startup-файлы для всех следующих компиляторов:
TI Arm Clang Compiler — официальный компилятор от Texas Instruments (startup_mspm0c110x_ticlang.c)
GCC (arm-none-eabi-gcc) — открытый компилятор GNU (startup_mspm0c110x_gcc.c)
IAR Embedded Workbench for Arm — коммерческий компилятор (startup_mspm0c110x_iar.c)
Keil MDK (Arm Compiler 6) — профессиональная среда разработки (startup_mspm0c110x_uvision.s)
Среды разработки (IDE)
Code Composer Studio (CCS) — бесплатная IDE от TI с полной поддержкой MSPM0, встроенным отладчиком и графическим конфигуратором SysConfig
IAR Embedded Workbench — коммерческая IDE с мощными инструментами анализа и отладки
Keil µVision — популярная среда для разработки на Arm
Visual Studio Code с расширениями для embedded-разработки
Инструменты конфигурации
SysConfig — графический инструмент от TI для настройки микроконтроллера:
Конфигурация тактирования
Настройка GPIO и периферии
Автоматическая генерация инициализационного кода
Проверка конфликтов ресурсов
Интеграция с CCS, IAR и командной строкой
SDK и библиотеки
MSPM0 SDK включает:
DriverLib — библиотека драйверов периферии
Примеры кода для всех модулей
CMSIS — стандартный интерфейс для Cortex-M
Документацию и руководства по применению
Отладка и программирование
Для программирования и отладки используется стандартный двухпроводной интерфейс SWD. Поддерживаемые отладчики:
XDS110 — встроенный отладчик на отладочных платах TI LaunchPad
J-Link от Segger
ST-Link (с ограничениями)
Любые CMSIS-DAP совместимые отладчики
Все инструменты и SDK доступны бесплатно на сайте Texas Instruments.
MSP Zero Code Studio

MSP Zero Code Studio — веб-интерфейс для визуального программирования микроконтроллеров MSPM0 без написания кода.
Основные возможности:
Создание приложений путём перетаскивания и соединения функциональных блоков на диаграмме
Готовые блоки для цифровых и аналоговых периферийных устройств, последовательных интерфейсов и обработки данных
Автоматическая генерация исходного кода и компиляция проекта
Загрузка прошивки в микроконтроллер или экспорт проекта для доработки в IDE
Доступен через браузер на платформе TI Developer Zone.
Как запрограммировать чип
Чип MSPM0C1104 программируется через штатный протокол и интерфейс SWD. Встроенного загрузчика (ROM bootloader) в этой модели нет, поэтому для первоначальной прошивки обязательно требуется SWD-программатор.
Если нужна возможность обновления прошивки непосредственно на плате без программатора, придётся самостоятельно реализовать загрузчик во Flash. Классический подход:
Загрузчик размещается в начале Flash и всегда активируется при запуске
Проверяет команду на обновление (по UART или I²C от главного контроллера)
При наличии команды принимает новую прошивку и записывает её в основную область Flash
После успешной записи передаёт управление основной программе специальной командой перехода
Это добавляет сложности в разработке, но позволяет обновлять прошивку под управлением главного микроконтроллера системы без внешнего программатора.