Недавно я получил письмо с 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
После успешной записи передаёт управление основной программе специальной командой перехода
Это добавляет сложности в разработке, но позволяет обновлять прошивку под управлением главного микроконтроллера системы без внешнего программатора.
Комментарии (35)

Arhammon
26.11.2025 03:16с точки зрения DIY-разработчика
С точки зрения большинства - DSBGA плохо сочетается с DIY, поскольку как минимум требует нормальную компрессорную воздушку...
Пардон, оно в размере между 0402 и 0201 - это вообще нифига с DIY не сочетается ни при какой воздушке.

Albert2009Zi
26.11.2025 03:16Ладно воздушка. Для программирования и дебага нужна какая-то плата адаптер, т.е. придется сидеть разводить - заказывать - паять. В воздушку умеют многие, а в "альтиум - jlcpcb" уже поменьше...

BigBeaver
26.11.2025 03:16Зачем для swd плата адаптер? Любой J-link подойдет. А для jlcpcb есть EasyEDA. Она хоть и дурацкая, но десяток-то пинов сделать Альтиум точно не нужен.

Albert2009Zi
26.11.2025 03:16Альтиум я привел, как некий "CAD Editor в сферическом вакууме", EasyEDA или KiCad, да пожалуйста.
Где я писал про способ программирования, причем тут J-Link? Вы к этой фитюле напрямую навесными проводами прямо к шарам цепляться собрались? Мда, тут без комментариев...

BigBeaver
26.11.2025 03:16В смысле? А если бы был другой корпус, то вы бы "напрямую навесными проводами" цеплялись? Потом же она в плату в любом случае ставится - оставляешь два пяточка и щупом программируешь, как и любой другой контроллер.

Albert2009Zi
26.11.2025 03:16Смотрите, я ответил на комментарий выше. Как я его понял: DIY для меня всегда сначала поиск, проба, т.е. я использую evaluation board от производителя или, если дорого, то делаю свою.
А вы, как я понял, говорите уже о конечном проекте, т.е. все равно о готовой плате, которую вы сделаете, не важно в каком редакторе и также распаяете этот чип и подведете разъем или пятачки для программирования. Т.е. делаете тоже самое, о чем я говорил в своем первом комменте, к которому вы прицепились. В чем ваша критика тогда?

8street
26.11.2025 03:16т.е. придется сидеть разводить - заказывать - паять
Вот я уже лет 10 таким не занимался. Готовые платы с микроконтроллерами с Али по 200-500р перекрывают все DIY хотелки.

Albert2009Zi
26.11.2025 03:16Да, я только за. Вы абсолютно правы. На али не ходил. Но в пересчете на рубли, действительно эти платы стоят 600-700 руб на digikey и т.п. Надо было бы, тоже воспользовался бы готовой.

Arhammon
26.11.2025 03:16Как раз нормальную воздушку имеет, мне кажется, намного меньше количество людей, чем уверенных пользователей КАДов. Огромные вещи типа SO8 и воздушкой с вентилятором паяются, а мелочь - сорян, вентилятор мало дуть не может...

Albert2009Zi
26.11.2025 03:16ну это вам с ремонтниками надо спорить, у которых в сервисе вплоть до lykey 702 используются и при этом они и Aplle и весь остальной Samsung нормально ремонтировать умудряются, т.е. паяют ведь вплоть до 0201, маньяки :)
Лично я то только за топовое оборудование и материалы.

Arhammon
26.11.2025 03:16Кто сидят с 702 обычно всю компонентку носят на аутсорс, где есть и фен нормальный и термопро и умение их применять... просто элементарно прыгая между заменой, дисплеев, разъемов, батареек на 100500 видов аппаратов даже знаний толком не набрать...

shlmzl
26.11.2025 03:16С точки зрения большинства - DSBGA плохо сочетается с DIY
Если DSBGA много рядов, то плохо сочетается с DIY, а если всего 2 ряда по 4 пина, то под микроскопом на эти пины с 0.3 мм шага наверное можно припаять провод 0.05 мм. Если проект изначально без печатной платы, то почему нет? К примеру адресный светоизлучающий элемент.

BigBeaver
26.11.2025 03:16Без 5V питания и толерантности портов почти все описанные примеры становятся нерелевантными. Посыл статьи не понятен, как и ЦА... вообще на нейронку похоже

S-trace
26.11.2025 03:16Чип размещается в корпусе разъёма USB-A или USB-C и подключается к линиям питания через токоизмерительный шунт.
А без шунта никак?
К примеру, почему нельзя линию CC на стороне заряжаемого устройства замкнуть на VCC (у них даже имена друг другу соответствуют!), а на стороне зарядки измерять напряжение между этими линиями (то есть, на шунте из самой жилы VCC)?
Или даже лучше CC на GND замкнуть, чтобы не было большого напряжения и можно было низковольтными выводами измерять.
Реально не понятно, зачем добавлять доп.сопротивление в кабель. По идее, это же можно реализовать на кабеле с двумя подобными чипами (один замыкает кратковременно CC на GND, второй измеряет)? Но наверное придётся в этот момент CC от разъёма отключать с обоих сторон. Или зарядка от такого сбросится?

BigBeaver
26.11.2025 03:16Это сработает только, если вы сами делаете подключаемое устройство. А в таком случае вообще не понятно, зачем вам измерительный шнур.
А в реальности 90% китайских девайсов реализуют двупроводное подключение, вообще никак не задействуя ничего кроме линий питания, и СС просто в воздухе висит.

S-trace
26.11.2025 03:16в таком случае вообще не понятно, зачем вам измерительный шнур.
Иногда было бы удобно иметь такой.
Сейчас у меня есть Type-C тестер, но он добавляет два разъёма и свой шунт (что не добавляет стабильности). Это не очень удобно, зато даёт прекрасную возможность выломать разъём. Вот хороший мощный измерительный кабель с минимальным сопротивлением (и возможно с размыкателем линий данных) я бы взял.
А про двухпроводное подключение - это да, боль. Его подключаешь, и ничего не происходит. И идёшь искать Type-A порт. Кнопочка включающая подтяжку CC (и тем самым запускающая зарядник Type-C PD на дефолтных 5 вольтах) тоже была бы приятным бонусом.

BigBeaver
26.11.2025 03:16Просто запаятьтуда кабель вместо штатного разъма.
Ну а вообще, если в измерительный кабель добавить экран, то все плюсы обсуждаемого супер-нано-микроконроллера исчезают. Автор хоть и пишет про "Информация передаётся через UART на недорогой OLED-дисплей в корпусе разъёма" но че-то я таких не видел. Всё больше веет нейронкой.

Arhammon
26.11.2025 03:16Боль - не только 2х проводное подключение, даже если китайцы СС разведут, с большой вероятностью захотят сэкономить 0,01 ценовый резистор и поставят только один и замкнут оба СС... с предсказуемым результатом...

nixtonixto
26.11.2025 03:16К примеру, почему нельзя линию CC на стороне заряжаемого устройства замкнуть на VCC (у них даже имена друг другу соответствуют!), а на стороне зарядки измерять напряжение между этими линиями (то есть, на шунте из самой жилы VCC)?
Потому что сопротивление малогабаритных ключей - на уровне сопротивления жилы или даже выше, и плавает в зависимости от температуры, напряжения и производителя клона ключа. Поэтому, чтобы была какая-то точность - нужно замыкать на шунт с сопротивлением в десятки...сотни раз больше сопротивления ключа.

Dima_Sharihin
26.11.2025 03:16А что, TI снова официально продает продукцию в России?

BigBeaver
26.11.2025 03:16Официально или по факту?

Dima_Sharihin
26.11.2025 03:16Скажем хотя бы в том же режиме публичности (московский офис, официальные представители у клиентов), что был до февраля 2022 года
Если надо покупать микрухи через три прослойки и везти контрабандой - ну такое, проще китайцев купить

andi123
26.11.2025 03:16Да, хорошая заявка на "умную пыль". Сразу хочется кластер в виде жилетки как у Вассермана, чтобы в каждой 5мм клетке был такой МК. И развлекаться распределением вычислений по карманам.
В общем хочу транспьютерное полотно, чтобы можно было ножницами кроить.

CrashLogger
26.11.2025 03:16А как оно питается в умном кольце ? Для аккумулятора там места как будто нет. Интересно, можно ли сделать питание от термопары, работающей на разнице температур между внутренней и внешней повехностью кольца ?

xSVPx
26.11.2025 03:16Скорее всего нет, слишком маленькая разница. Пока вы эту температуру как-то в одну точку приведете она вся одинаковая будет уже.
Помнится были вечные настольные часы в которых газ расширялся и сужался за счет суточных циклов температурных, но если его носить не снимая. Да и маловато места для газа.
Яб скорее в часовой итп подзавод смотрел, руками всё-таки люди машут огого. Но прискорбно мало места, дешево не получится.

Luboff_sky
Не, ну совсем неплохо.