Как выбрать микроконтроллер ARM Cortex M3?

Основываясь на моих приблизительных требованиях: работа в диапазоне от 36 до 72 МГц, наличие 16 КБ+ SRAM, 128 КБ+ флэш-памяти, возможность программирования на C, я решил, что для своего приложения я хочу использовать микроконтроллер ARM Cortex M3.

Вопрос в том, по каким критериям люди выбирают версию M3? Есть много возможных поставщиков, таких как TI, ST, NXP, Freescale и т. д. и т. д.

Основным отличием с моей точки зрения будет простота программирования. В идеале я тестирую его на плате для прорыва / разработки, а затем внедряю в свою собственную печатную плату.

Это полезный вопрос, пожалуйста, не закрывайте его, так как он в основном основан на мнении .
Выбор поставщика чипов — это только часть проблемы. Думали ли вы о том, какую цепочку инструментов разработки вы собираетесь использовать?
Я бы сказал, что важность выбора чипа UC в такой ситуации сильно переоценена. Подойдут все чипы, отвечающие основным требованиям. Я придерживаюсь C или C++ и не нуждаюсь в причудливых периферийных устройствах, которые вы даже можете переключить позже без особых усилий. Я бы основывал свой выбор на объеме поддержки, которую вы можете получить от www, поставщиков, групп (пользователей), списков, форумов и т. д., к которым у вас есть легкий доступ.
независимо от ценности этого вопроса (которую я никоим образом не оспариваю, поскольку это очень полезный вопрос), это по - прежнему в первую очередь вопрос, основанный на мнении , поскольку здесь нельзя дать жесткой ссылки, и мы в основном спрашивая людей "что вы думаете?" - AFAIR, такой вопрос не подходит для сайтов SE ... кроме того, в настоящее время все ответы основаны на мнениях.
NB, я не отмечаю это только потому, что на этот вопрос можно ответить не-POB, но я очень сомневаюсь, что это когда-либо произойдет. Во всяком случае, этот вопрос был "мысленно помечен" мной.
Разве это не должно быть не по теме, поскольку он ищет рекомендации для конкретных продуктов?
В общем, я думаю, что выбор компонентов — это основная часть работы EE. Однако основной вопрос о «простоте программирования» делает это мнение обоснованным.
«Есть дюжина производителей одного и того же ядра. На что обращают внимание люди, чтобы выбрать одного?» мне кажется, хороший вопрос.
Это самый результативный вопрос в списке 250 самых новых, с тремя любимыми ярлыками. С этой статистикой, если это ОТ, мы могли бы спросить, почему. Я думаю, довольно ясно, что постер считает «простоту программирования» ОДНИМ из критериев, которые он использует в настоящее время, и он просит большего. Из четырех ответов только один дает четкую рекомендацию контролеру, а все остальные обсуждают, по каким критериям они делают выбор. Я сделал небольшое редактирование, которое должно сделать вопрос более актуальным, но до редактирования мне это казалось довольно ясным.
Ранее в другой теме я писал свой список критериев выбора . Это настолько широкое и агностическое, насколько я мог это сделать.
Забавно, как эти штуки срабатывают! Только на этой неделе я обнаружил, что получить сублицензию VID от STM для небольших серий USB-устройств проблематично. Никогда не было такой проблемы с Microchip.

Ответы (4)

Я думаю, что @markt, безусловно, находится в нужном месте: набор инструментов, периферийные устройства, пакеты, наборы для разработки.

Добавлю несколько, а может и уберу. Toolchain, безусловно, важен, но БЕСПЛАТНО может быть, а может и не быть. Иногда работа без реальной поддержки может быть дороже, чем вы думаете, и использование разумного коммерческого пакета может оказаться оправданным в данной ситуации. Иногда также важна возможность пройти тщательный аудит лицензии, а использование бесплатного инструмента с ограничительной лицензией может позже вас укусить.

Для меня обязательна хорошая библиотека CMSIS для поддержки микроконтроллера. CMSIS -- Стандарт программного интерфейса микроконтроллера Cortex -- arm.com/products/processors/cortex-m/… -- это уровень аппаратной абстракции для микроконтроллеров серии Cortex-M. Теоретически, если библиотека совместима с CMSIS, она независима от поставщика, и ее проще менять местами между различными семействами, и вам не нужно заново изучать среду с нуля, чтобы иметь возможность использовать библиотеку. Одним из привлекательных аспектов среды ARM Cortex является возможность смены платформы без особых усилий. Если вы выберете платформу, которая не поддерживает структуру CMSIS, вы не сможете так удобно перемещаться.

Для меня недорогие и удобные платы для разработки являются обязательными, но это может быть или не быть столь же важным, как некоторые другие вещи (я думаю, что в серии STM32 есть потрясающие доски для разработки). Если у семьи есть очень удобные и дешевые доски разработчиков, то вы, скорее всего, найдете помощь от более широкой базы пользователей, если она вам понадобится. Кроме того, эти микросхемы, как правило, находятся в корпусах SMT. Когда вы неизбежно взрываете микросхему, или порт на микросхеме, или бит порта на микросхеме, замена микросхемы — это PITA, связанная с доработкой SMD. Если вы можете купить две или три платы по 10-15 долларов каждая и заменять их по мере поломки, вы даже не ПОДУМАЕТЕ о переделке SMD!

Вспомните «Дополнительно». Вам может понадобиться что-то помимо того, что считается «периферией». Например, может быть, у вас большие потребности в Bluetooth, и вы можете выбрать Nordic Semiconductor для такой поддержки. Вы можете рассмотреть некоторые другие вещи, например, насколько легко загружается и т. д.

Подумайте о документации. Я был немного менее чем впечатлен тем, как сложно может быть продираться через часть документации STM.

+1 Полностью согласен. В прошлом году я начал работать с ARM Cortex-M3/M4, используя STM32. Я почти завершил разработку STM32F207, когда мы перешли на STM32F407, исходя из цены/доступности. Это было простое аппаратное обеспечение, а изменения программного обеспечения были тривиальными. Из-за документации и сложности изучение было немного болезненным, но дизайн надежный и стоит затраченных усилий. Я использую компилятор GCC (бесплатно) для написания тестового кода и бесплатную пробную версию Keil с ограниченным размером кода для написания/тестирования образцов драйверов. У нашего программиста есть лицензия на полный компилятор Keil. Оба кажутся солидными.
Не могли бы вы подробнее рассказать о том, что такое CMSIS и что он из себя представляет/делает, что позволяет вам легче перемещаться между процессорами? Насколько я понимаю, это похоже на очень низкоуровневую библиотеку прошивки, которая обеспечивает некоторую форму аппаратной абстракции?
@NickHalden, «ARM» лицензирует ядро ​​ARM производителям микросхем, которые упаковывают их и добавляют периферийные устройства. CMSIS -- Стандарт программного интерфейса микроконтроллера Cortex -- arm.com/products/processors/cortex-m/… -- это уровень аппаратной абстракции для микроконтроллеров серии Cortex-M. Теоретически, если библиотека совместима с CMSIS, она независима от поставщика, и ее проще менять местами между различными семействами, и вам не нужно заново изучать среду с нуля, чтобы иметь возможность использовать библиотеку.
Спасибо. На самом деле мы немного рассмотрели серию STM32. Даже в этом - я не могу выбрать между сериями F1-F4, лол. Ну, я могу исключить F4 только потому, что он относительно дорогой. Но скажем, F1 против F3 - если предположить, что оба достаточно способны, должен ли я просто выбрать более дешевый?
@ScottSeidman Я говорю «бесплатный набор инструментов», потому что я думаю, что цена, которую, например, взимает Keil, комична. У меня есть лицензия Keil на работе, и я использую Coocox для дома/учебы; У Keil (в основном) более приятная IDE, но Coocox бесплатен и имеет 95% того, за что Keil берет 11 тысяч австралийских долларов. Да, и я полностью согласен с STM32 — отличные устройства, отличные платы для разработчиков, надоедливая документация.
@YoungMoney Выбирайте самое дешевое, которое даст вам как минимум в два раза больше ресурсов, чем, по вашему мнению, вам понадобится.
Развивайтесь по-крупному, просто чтобы не застрять. Как только вы поймете, какие ресурсы вам нужны, сокращайте их.
@YoungMoney, F4 - это Cortex M4, дополненный некоторыми возможностями DSP, такими как накопление и сложение за один такт, процессор с плавающей запятой одинарной точности (для чего это стоит) и некоторые изящные инструменты адресации. Хорошая вещь, но вы платите за нее.
Бесплатные наборы инструментов важны в профессиональном контексте не из-за стоимости, а из-за безопасности доступа — используйте заблокированный набор инструментов, и ваша способность поддерживать проект будет поставлена ​​под угрозу из-за лицензий, срок действия которых может истечь, или которые могут быть недоступны для вашего портативного компьютера. или коллеги, ключи, которые могут потеряться, серверы лицензий, которые можно отключить через несколько лет, и т. д. Срок службы большинства встраиваемых систем намного превышает срок службы настольного оборудования и версий операционной системы, используемых для их разработки, и возможность воскресить исходный инструменты в будущем важно!
  1. Ищите бесплатный набор инструментов, RTOS и недорогую поддержку JTAG/SWD.
  2. Подумайте, с какими пакетами вы можете/готовы работать. Если DIP обязателен, исключите поставщиков микросхем, которые не предлагают пакеты DIP.
  3. Посмотрите, какие периферийные устройства предлагаются и что вам может понадобиться.
  4. Ищите выгоду — используйте один или несколько веб-сайтов крупных поставщиков электроники, чтобы сравнить яблоки с яблоками.

Учитывая ваше стремление к доскам разработки, подумайте, что там доступно.

Если вы переходите с другой платформы (PIC, Atmel и т. д.), смиритесь с тем, что при переходе на ARM во многих областях придется пройти обучение, но оно того стоит.

Да, бесплатные наборы инструментов важны для безопасности будущего/альтернативного компьютера/доступа альтернативного инженера к набору инструментов больше, чем для стоимости. Для частей Cortex цепочки инструментов довольно универсальны, поэтому лучше знать, что вы можете запрограммировать их с помощью простого в работе интерфейсного устройства SWD, которое будет доступно или может быть создано повторно и может управляться из вашей настоящей (и будущей) ОС. выбор.

Если у вас нет явных предпочтений (например, цена, размер, мощность, плюс то, что перечислено другими), то я бы подумал, кто вас поддерживает. Если производитель не отвечает на ваши вопросы, это может быть проблемой. Или у них есть местный дистрибьютор с FAE (инженером по эксплуатации), о котором вы можете спросить? Это особенно важно для небольших компаний и любителей.

Некоторые детали могут быть недоступны в небольших количествах. Например, те, у которых в одной упаковке есть DRAM, рассчитаны на крупных покупателей (> 10 тыс. штук).

Вероятно, STM32L151VBT6 соответствует вашим требованиям. Даже мы использовали его в нашей компании, он имеет умеренную стоимость и хорош с точки зрения энергопотребления. также вы получите большую часть ресурсов по дизайну на http://www.st.com .

Основные характеристики микроконтроллера STM32L151VB:

Платформа со сверхнизким энергопотреблением Блок питания от 1,65 В до 3,6 В

Диапазон температур от -40°C до 85°C/105°C

0,3 мкА Режим ожидания (3 контакта пробуждения)

0,9 мкА Режим ожидания + RTC

0,57 мкА Режим остановки (16 линий пробуждения)

1,2 мкА Режим остановки + RTC

9 мкА Режим работы с низким энергопотреблением

214 мкА/МГц в рабочем режиме

Сверхнизкая утечка ввода/вывода 10 нА

< 8 мкс время пробуждения

Ядро: 32-разрядный процессор ARM®Cortex™-M3

От 32 кГц до 32 МГц макс.

Пик 33,3 DMIPS (Dhrystone 2.1)

Блок защиты памяти

Сброс и управление питанием

Сверхбезопасный маломощный BOR (сброс при снижении напряжения) с 5 выбираемыми пороговыми значениями

POR/PDR со сверхнизким энергопотреблением

Программируемый детектор напряжения (PVD)

Источники часов

Кварцевый генератор от 1 до 24 МГц

Генератор 32 кГц для RTC с калибровкой

Высокоскоростной внутренний 16 МГц RC с заводской подстройкой (+/- 1%)

Внутренний маломощный 37 кГц RC

Внутренняя многоскоростная маломощная от 65 кГц до 4,2 МГц

PLL для тактовой частоты процессора и USB (48 МГц)

Запрограммированный загрузчик

USART поддерживается

Поддержка развития

Поддерживается последовательная проводная отладка

JTAG и трассировка поддерживаются

До 83 быстрых операций ввода-вывода (73 операции ввода-вывода с допустимым напряжением 5 В), все они могут быть сопоставлены с 16 внешними векторами прерываний

Воспоминания:

До 128 КБ флэш-памяти с ECC

До 16 КБ ОЗУ

До 4 КБ настоящего EEPROM с ECC

80-байтовый резервный регистр

ЖК-драйвер до 8x40 сегментов

Поддержка регулировки контрастности

Поддержка мигающего режима

Повышающий преобразователь на борту

Богатая аналоговая периферия (до 1,8 В)

12-разрядный АЦП 1 Мбит/с до 24 каналов

12-битный ЦАП 2 канала с выходными буферами

2 компаратора со сверхнизким энергопотреблением (оконный режим и возможность пробуждения)

DMA-контроллер 7x каналов

8-кратный периферийный интерфейс связи

1x USB 2.0 (внутренний PLL 48 МГц)

3x USART (ISO 7816, ИК-порт)

2x SPI 16 Мбит/с

2x I2C (SMBus/PMBus)

10 таймеров: 6 16-разрядных с 4 каналами IC/OC/PWM, 2 16-разрядных базовых таймера, 2 сторожевых таймера (независимых и оконных)

До 20 емкостных сенсорных каналов, поддерживающих сенсорные кнопки, линейные и поворотные сенсорные датчики Блок вычисления CRC, 96-битный уникальный идентификатор