Як вибрати платформу MCU? [зачинено]


43

Є безліч платформ MCU, і коли хтось звик до однієї, вони, як правило, неохоче переходять на іншу платформу.

Моє запитання: Якщо хтось почав використовувати MCU для завдань загального призначення, як би ви вирішили вибрати його? Які унікальні точки продажу різних платформ?


2
Повідомте нас про проекти та обсяги, які ви маєте на увазі, і це допоможе нам відповісти на питання.
Rocketmagnet

3
Загальне призначення набагато занадто широке. Мало сенсу використовувати один і той же ЦК для миготіння світлодіодного світлодіода та для RTOS з кольоровим РК-дисплеєм з високою роздільною здатністю.
Wouter van Ooijen

1
Так, ви в ідеалі маєте кілька чіпів, з якими ви знайомі для різних проблем із розміром - і будьте готові забрати нову, якщо вона однозначно підходить для виконання завдання.
Кріс Страттон

2
@WoutervanOoijen Ідея цього питання полягала в наступному: є багато завдань, з якими будь-яка платформа може легко впоратися (тобто завдання загального призначення). Тоді можна повністю вільно вибирати між платформами. У цьому випадку домінуючими стають "м'які фактори", наприклад, простота використання, кількість зовнішніх компонентів тощо. - Я хотів з’ясувати, які різні платформи роблять добре / погано порівняно з іншими.
ARF

7
РЕЛІГІЯ
vicatcu

Відповіді:


30

Пройшов рік, я говорив на тему вибору мікроконтролерів (на це пішло близько 1,5 годин). Аудиторію представляли програмісти та виробники програмного забезпечення високого рівня. Більшість глядачів не мали досвіду попереднього μC, решта грала лише з Arduino. Кількість керівників в аудиторії становила близько 30. Отже, це було багатоадресне, на відміну від клініки один на один.

Ключовим слайдом у розмові було таке:

Розміри

для порівняння мікроконтролерів. Список складається у порядку зменшення.

  • Середовище розробки (ланцюжок інструментів)
    • Середовище розвитку
    • Я згадав середовище розвитку?
  • Підтримка
    • Примітки до програми
    • Підтримка однолітків: племінні знання, друзі, форуми, коди [sic]
  • Особливості
    • Пам'ять
    • Периферія
    • Досвід обчислень
  • Споживання енергії
  • Вартість

пс

Я мушу визначити сферу, до якої ця моя відповідь обмежена. Я бачу це питання вибору платформи через два типи об'єктивів. Перший - прототип. Другий - це розробник професійного обладнання з цінами на вулиці близько 3 тис. Доларів і кількість у сотні. Об'єктив для любителів теж не за горами. У цих випадках додаткова вартість мікроконтролера невелика, порівняно з витратами на розробку або з витратами на професійне обладнання, в яке йде мікроконтролер.

Звичайно, існує зовсім інша перспектива масового виробництва. Коли хтось обере мікроконтролер для дешевого пристрою, який буде вироблятися у великих кількостях (іграшки в основному - хороший приклад), він буде залежати від витрат на обладнання. Скромна економія витрат на обладнання, помножена на великий обсяг виробництва (у сотні тисяч і більше), може виправдати біль використання невмілого середовища розробки та вигідного мікроконтролера з підтримкою медіохри.


Ви орієнтуєтесь на середовище розвитку. Має сенс для мене. Які були ваші висновки?
ARF

@ArikRaffaelFunke Ну, ці кулі в моєму вище посту - це висновки. Недостатньо переконливий? Моєю метою бесіди було: (1) Надати мінімальний перелік питань, які потрібно задавати під час відбору. (2) Покажіть, де і як шукати відповіді. Я спеціально уникав робити жорсткі висновки: сім'я X хороша, якщо ..., сім'я Y - це добре, якщо ...
Нік Алексєєв

1
Для невеликих обсягів і типових вимог, так. Але іноді доводиться вибирати найкращу технологію. Або якщо обсяг величезний, досить великий головний біль у розвитку може бути виправданий, якщо він заощаджує кілька центів за віджет - включаючи тестування рішень на основі тестованих конкуруючих частин та готових до переходу.
Кріс Страттон

1
@ChrisStratton Споживання електроенергії - інша річ (на додаток до високих ефектів обсягу виробництва), яка може виправдати іноді головний біль. Маленький може зробити це, якщо він хоче дуже низьку потужність, і UC (який він вибрав) не може його підтримати.
Нік Алексєєв

9
Зосередження уваги на середовищі розробників абсолютно правильне. Ви можете мати найкращу фішку у світі, але якщо ви не можете програмувати та відладжувати прокляту річ, це також може бути цеглою. Я чув хороші речі про NXP, але прямого досвіду немає. Я думав, що Freescale є бідним, але потім я спробував TI (MSP, а потім DM36x) і тепер Freescale - це яскравий маяк блиску в моїх очах. Найкращі поради щодо будь-якого середовища розробки: Створіть / встановіть його у віртуальній машині та зберігайте резервну копію її у повноправному стані, щоб вона не ламалася під час переміщення комп’ютерів / оновлення ОС тощо ...
Джон U

25

Оскільки це запитання не дуже спричинило порівняння платформи, на яке я сподівався, я спробував створити один, вивчаючи літературу, а також інші відповіді. Можливо, це може допомогти комусь іншому в майбутньому.

Будь ласка, дайте мені знати, чи є якісь помилки чи є інформація, яку я можу додати.


Порівняння платформи

Примітки щодо порівняння:

  • IDE: коментарі стосуються безкоштовної версії

PIC:

  • набагато найдешевші фішки початкового рівня
  • у багатьох є внутрішні регулятори напруги
  • за даної ціни, як правило, мають більше та кращі периферійні пристрої
  • квазі галузевий стандарт: дуже хороші бібліотеки та підтримка розробників
  • IDE: видатний на основі NetBeans, що включає повне офлайн-моделювання та налагодження
  • сторонні налагоджувачі: близько 25 доларів
  • дуже широкий асортимент пакетів
  • унікальні точки продажу: 1. XLP = доступні пристрої надмірної потужності; 2. У багатьох сучасних мікросхемах є ємний модуль зондування для сенсорних кнопок тощо.

AVR:

  • Взагалі AVR відстає від шифрування периферійних пристроїв і трохи дорожче. Однак в цілому AVR за функціональністю та ціною дуже схожий на PIC.
  • 8-бітні мікросхеми AVR швидші, ніж 8-бітні мікросхеми PIC
  • сторонні емулятори: близько 20 доларів
  • дуже широкий асортимент пакетів

Рука Cortex-M:

  • сучасна архітектура процесорів: відсутність банківської пам'яті, хороша багатозадачність
  • на сьогоднішній день найдешевші 32-бітні пристрої
  • досить легко пересуватися між різними чіпами та різними виробниками
  • пристрої зазвичай вимагають більше зовнішніх компонентів, ніж PIC
  • дуже дешеві USB-пристрої з завантажувачем ROM: NXP LPC1342 / LPC1343
  • розумна підтримка бібліотеки
  • IDE: розумне, без моделювання в режимі офлайн
  • SWD-інтерфейс дозволяє вбудувати системне програмування, налагодження та відстеження за допомогою простого вбудованого обладнання (
  • недорогі NXP-мікросхеми поставляються лише в упаковках невеликого розміру або без штифтів
  • точки продажу: 1. найдешевша 32-бітна платформа; 2. найдешевша платформа з завантажувачем USB ROM

PSoc: (з відповіді Rocketmagnet)

  • король, коли мова йде про аналогових периферійних пристроях: даний мікросхем може бути переконфігурований внутрішньо для надання різних аналогових та цифрових периферійних пристроїв
  • значно дорожче, ніж ПІК
  • IDE: відмінна
  • $ 88 програміст (чи дозволяє це налагодження?)
  • лише пакети SMD

Пропелер: (з відповіді Rocketmagnet)

  • багатоядерний MCU: різні ядра можуть симулювати роботу над різними завданнями
  • виключає / зменшує (?) потребу в традиційних перериваннях
  • кілька апаратних периферійних пристроїв, повинні бути чітко кодовані для роботи на одному з ядер, забезпечує неймовірну гнучкість
  • слабкий, коли мова йде про аналогову периферію
  • IDE: відмінна
  • Доступний пакет DIP

Порівняння по застосуванню

USB:

"Легенда" для списку нижче:

  • bootloader = попередньо запрограмований завантажувач USB
  • регулятор напруги = може живитись від шини без зовнішнього регулятора
  • підтягування = немає необхідності у зовнішньому підтягуванні
  • імпедансний збіг = відсутність необхідності у зовнішніх резисторах
  • прецизійний осцилятор = відсутність необхідності у зовнішньому кристалі

Властивості найменш дорогого пристрою: (приблизно в ціні)

  • PIC: 8-бітний, низько- та повношвидкісний регулятор напруги, підтягувачі, відповідність імпедансу, захист від ОУР
  • NXP: 32-бітний, завантажувач, тільки на повній швидкості, захист від ОУР
  • Freescale: 8-бітний, низькошвидкісний, регулятор напруги, імпеданс, захист ESD
  • Atmel: 8-бітний, завантажувач, тільки швидкісний, регулятор напруги, підтяжка, захист від ОУР
  • STM: 32-бітний, завантажувач, тільки на повній швидкості, підтягування, відповідність імпедансу, захист від ОУР
  • Кремнієві лабораторії: 8-бітний, низько- та повношвидкісний, регулятор напруги, підтягувачі, відповідність імпедансу, прецизійний генератор
  • TI: 32-бітний, завантажувач, низько- та повношвидкісний, інші властивості невідомі
  • PSoc: настроюється як модуль, інші властивості невідомі
  • Пропелер: 32 біт, лише бітбанг

Ethernet:

  • PIC: найдешевший пристрій із вбудованою PHY

1
Тут є кілька зауважень: Propeller взагалі не має перерв, і в офіційному IDE немає підтримки для налагодження. Натомість кращим механізмом налагодження, здається, є підключення речі до телевізора та використання наданої бібліотеки, яка відображає змінні на екрані. Крім того, наскільки я знаю, немає завершення коду, немає тренажера, немає інтеграції з системами управління кодом, незвична реалізація включає ... Також немає апаратних периферійних пристроїв, крім двох лічильників на ядро.
AndrejaKo

2
Зауважте про гвинтокрило - він не має переривань. Зовсім . Якщо вам потрібно щось, що нагадує традиційне переривання, ви закрутите додаткове ядро ​​процесора і змусите його зачекати.
Коннор Вольф

4
Такий перелік майже неминуче безглуздий і застарілий. Всі виробники весь час конкурують між собою і більшість намагаються запропонувати щось у кожній категорії - ви проводите опитування, коли у вас є потреба, вибираєте рішення, і якщо воно працює, ви працюєте з ним, поки у вас немає потреби. для якого є краще рішення.
Кріс Страттон

2
Для чого це варто, ви можете включити сюди лінійку MSP430, а також для її наднизької енергоспоживання
бортбит

2
"Вбудовані системи / окремі мікропроцесори" мають подібну інформацію про те, як вибрати процесор, який подібним чином можна редагувати, щоб (сподіваємось) підтримувати його оновленим та відносно нейтральним.
davidcary

7

Ваш вибір MCU багато в чому залежить від типу проектів, над якими ви будете працювати. Ви робите високооб'ємні, наддешеві та прості пристрої, такі як миготливі вогні велосипеда? Ви розробляєте складні прототипи-роботів, які мають справу з численними химерними пристроями вводу-виводу та датчиками?

Я здебільшого працюю над останнім. Основна проблема для мене - це пошук мікроконтролерів, які мають необхідний периферійний набір. Це дуже складно, оскільки наші вимоги не здаються основними. Ми хочемо, щоб такі речі, як 5 ШІМ-каналів, 5 квадратурних декодерів, 2 нестандартні порти SPI та UART з заперечним IO.

Єдині MCU, які я бачив, які можуть з легкістю впоратися з такими вимогами, це PSoC і Propeller.

Пропелерні мікросхеми

Пропелер - це в основному вісім 32-бітних MCU в одному чіпі. Якщо ви хочете певного типу периферійних пристроїв, ви просто запрограмуєте один з MCU для виконання цієї роботи. Таким чином, ви можете мати все, що завгодно.

PSoC

PSoC мають два аромати, 3 і 5. 3 - це серцевина 8051, а 5 - кора АРМ М3. На мікросхемі також включені повторно налаштовані цифрові та аналогові блоки, які можна перетворити на широкий спектр периферійних пристроїв: АЦП, фільтри, підсилювачі, ЦАП, SPI, UART, квадратурний декодер, генератор CRC тощо.

Середовище розвитку - фантастичне. У вас є звичайне редагування вихідного коду типового IDE, але у вас є також схематичний редактор. Ви можете буквально підключити будь-яку цифрову схему, яка вам подобається, з'єднавши периферійні пристрої з воротами, крилами і т. Д. Потрібно 5 ШІМ? Легко, просто покладіть їх на схему, з'єднайте їх, і ви їдете далі. Ви навіть можете написати власні периферійні пристрої у Verilog, якщо вам потрібно щось, що не передбачено. Велика частина вашої програми може бути просто реалізована в цьому апараті.

Справжня вигода полягає в тому, що ви можете дотримуватися однієї мікросхеми, знаючи, що вона може вирішити велику кількість проектів, які ви хочете робити в майбутньому. Те, що мені дратувало PIC, постійно перебирало десятки пристроїв, шукаючи той, який мав певний периферійний набір, який мені потрібен. Зараз у мене немає такої проблеми.


Пропелер - цікаве поняття. Я мушу трохи подумати над цим. Щодо PSoC: я вважав, що це було в минулому через неймовірну гнучкість, але потреба у програмі 250 доларів зробила це для мене майже не стартером.
ARF

@ArikRaffaelFunke - Програміст коштує лише $ 88 , що менше половини ціни на ICD3 .
Rocketmagnet

@ArikRaffaelFunke - ще один розгляд - упаковка. Якщо ви плануєте будувати власні прототипи, працювати з пакетами DIP набагато простіше. Більшість PIC і ATmel AVR поставляються у DIP, як і у пропелера. PSoC 3 і 5 цього не роблять.
tcrosley

3
schmartboard має простий у використанні smt для
закапування

1
@ quantum231: Я вважав це, але: 1) FPGA, здавалося, як правило, є більшими та дорожчими, ніж мікроконтролери (а роботам часто відчайдушно бракує місця). І 2) Я не маю багато досвіду роботи з FPGA, і це завжди клопот, щоб навчитися зовсім іншому набору інструментів і способу мислення лише для незначного застосування.
Rocketmagnet

3

Для мене найважливішою вимогою було те, якщо пристрій / IDE добре підтримується на моєму ПК, який не є Windows (Linux). Виявилось, що для мене Atmel AVR мав кращу підтримку (з відкритим кодом), ніж PIC.


3

Гаразд використовувати більше однієї платформи. Вибір найкращого для кожної роботи, а також наявність коду та прикладів, пов’язаних із завданням.

Більшість з них мають хороші інструменти для розробки, arduino має візуальну студію, pic має чудовий інструмент, а також інші. Отже, для мене це те, наскільки швидко і легко я можу добре виконати роботу, + скільки людей з відкритим кодом працюють на одній справі?


Але як можна знайти таку інформацію, не будучи введеною в оману маркетинговим безладом. Я маю на увазі, ми повинні знайти людей, які використовували обладнання та ланцюжок інструментів, щоб отримати всю цю інформацію. Як ви знаходите такі спільноти на своїй роботі? Або ви покладаєтесь на те, що говорить вам інженер програм?
Quantum231

Ви можете задавати питання на різних форумах, таких як цей. Поясніть свою заяву та попросіть допомоги
Visual Micro

2

Мікроконтролери - це швидко мінливий світ, є багато переваг навчання на поточних мікросхемах "in", а найпопулярніший IDE - найпомітніший - отримання допомоги від громади. Як людина з PIC, я б сказав, що Aduino, мабуть, має найкращі плати IDE та розробку для новачків на даний момент, і ви можете багато додати до базової дошки aduino, не торкаючись паяльника.

Кожен, хто використовує адуїно для реального життя, може незабаром продовжити, але до цього часу ви дізнаєтесь багато основної цифрової електроніки та хороший підмножина С, щоб легко використовувати щось більш підходяще.

Оскільки хтось згадав, що ви вибираєте чіп для свого проекту, я бачив декілька проектів, що використовують чіпи ARM як прості датчики температури або AD-перетворювачі, так само, як я бачив aduinos та PIC 16, підштовхують їх до межі, щоб генерувати гру загарбників, FPGA Ви перебуваєте в прямому ефірі і добре розуміти HDL, якщо ви серйозно займаєтесь дизайном електроніки. Але, на жаль, в реальному світі не так багато проектів, де вам потрібно буде використовувати одну більшість робочих місць - це низький обсяг, швидкий дизайн та обмежена ціна. саме тут панує 8-бітний uC


Я бачу, які обмеження у Arduino мають те, що людина змусить людину вийти за межі них? Чи має ARM більше процесорної потужності, ніж PIC та Arduino, чи не має периферійних пристроїв PIC та Arduino, чи її ланцюжок інструментів перевершує те, що існує для PIC та Arduino? Чому так багато шуму щодо мікросхем на основі ARM. Я знаю, що вони мають дуже низьке енергоспоживання, але чому б ще ARM обирали для "серйозних" проектів?
Quantum231

1

Оскільки багато опублікованих відповідей орієнтовано на використання хобістів, тут подаються різні рекомендації, спрямовані лише на професійних розробників.

Мінімальні вимоги
Якщо MCU не відповідає усім цим, його не слід використовувати.

  • Був у виробництві не менше 1 року.
  • Кремнієві еррати доступні і були переглянуті хоча б один раз.
  • Внутрішня сторожова собака.
  • Внутрішнє низьковольтне / коричневе виявлення.
  • Вбудована флеш-пам'ять.
  • Захист ОУР.
  • JTAG / SWD або якийсь одножильний інтерфейс налагодження.
  • Ядро використовує 8 бітових байтів та 2 підписи доповнення.
  • Зразки та дошки для оцінювання легко доступні.
  • Має чуйну технічну підтримку безпосередньо від виробника.

Попереджувальні знаки - обладнання MCU
Це речі, на які не варто витрачати час у 2019 році.

  • Неясні режими адресації, якими повинен керувати програміст. У тому числі використання неясних, нестандартних ключових слів для доступу до даних ROM.
  • Суворі обмеження пам'яті стека або глибина стека.
  • 16 біт int, що в свою чергу поставляється з усіма прихованими небезпеками цілочисельних акцій мови C.
  • Не вдається виконати 16 або 32 бітну арифметику, не починаючи кипіти.
  • Не потрапляє в пастку, якщо ви виконуєте код у розділах даних.
  • Немає буфера сліду інструкцій
  • Поставляється з екзотичними апаратними пристроями, якими ви не користуєтесь.

Попереджувальні знаки - ланцюг інструментів

  • Покладається на програмні тренажери в ПК або якийсь спосіб завантажувача, замість того, щоб миготіти всім MCU і використовувати на мікросхемі виконання / налагодження.
  • Не постачається з попередньо виготовленими драйверами / прикладами / бібліотеками, написаними професіоналами. Покладається на розробників, які переосмислили колесо, або на Інтернет-форумах / з відкритим кодом.
  • CRT для компілятора C не відповідає переліченим тут вимогам .
  • Компілятор C постачається з довгим списком стандартних функцій C, які не підтримуються.
  • Компілятор C все ще не підтримує C11 (незалежно від того, чи плануєте ви його використовувати чи ні).
  • IDE вказує на вас декілька дивних помилок лінкера під час першої спроби програми "привіт світ".
  • Зустрічаючи багато помилок IDE або компілятора протягом перших тижнів використання.

Це надмірно догматично. Ви повністю опустили вартість, параметри упаковки (з відкритим кодом! = Непрофесійні), якість периферійних пристроїв тощо. Я взагалі не погоджуюся з більшою частиною цього, але такі речі, як "обмеження [...] обмеження", просто значить, вам потрібно знати торгівлю, яка призвела до цих обмежень.
awjlogan

@awjlogan Варіанти витрат і упаковки дуже специфічні для проекту, тому не має сенсу звертатися сюди. Я не казав, що відкритий код непрофесійний, але компанія, яка передає свою ланцюжок інструментів на відкритий код, і їх підтримка на таких сайтах, як SO, не є професійною. Хоча проекти з відкритим кодом із занадто малою кількістю дописувачів також не є професійними, як ми бачимо з портами компілятора з відкритим кодом для різних екзотичних MCU. Не повинно бути жодних причин для вибору MCU з обмеженим стеком у 2019 році.
Лундін,

Звичайно, вони конкретні для проекту, але ви збільшили базову вартість відразу, вказавши 16/32 біт лише у своєму списку (швидке сканування Digikey), і я останнім часом не бачив 6-контактний M0. Якщо вам щось не потрібно (включаючи час), не витрачайте на це зайвих грошей, це рішення, які ви повинні приймати як професіонал. Але, так, хороший інструментарій настільки важливий, що не можу погодитися більше.
awjlogan

@awjlogan LPC81X існує вже більше 5 років. Нещодавно я дізнався про Cypress PSoC4, який виглядає цікаво. І так далі. Кількість штифтів не часто є аргументом, просто розмір та тип упаковки. Якщо ви можете терпіти QFN або BGA, ви можете отримати дуже маленькі фішки.
Лундін

погодившись з цим, ваш вибір звужується на невеликих розмірах (однаково для будь-якої архітектури). Моя загальна думка полягає в тому, що, хоча всі речі у вашому списку бажані, ви також повинні бути чітко зафіксовані, щоб знати, коли їх порушувати.
awjlogan

0

Якщо ви збираєтеся виконати завдання загального призначення, які можуть мати аналогову та цифрову обробку, то я б віддав перевагу PSoC для його IDE, налагоджувача та великої кількості речей, які ви можете зробити з ними.

Я використовував PSoC3 в коледжі для своїх проектів, і освоїти його досить просто. Єдине, якщо вам потрібні чіпи для продуктивності, вам все одно доведеться діставати їх окремо. Він має досить хороші порти. Тож якщо ви шукаєте якісь чіпи для продуктивності разом із комплектом для розробки, краще знайдіть окремі компоненти.


1
Можливо, варто додати трохи більше інформації про PSoC, щоб зробити це більш корисним, пара інших відповідей вже охоплює це.
PeterJ

@PeterJ: Я хотів дати це як коментар до відповіді Rocketmagnet, але я не маю репутації, щоб коментувати.
ganesh737

Чи є причина, що ви не зверталися до дизайну на основі програмного забезпечення, наприклад, використовуйте Nios II на Altera FPGA або microblaze / picoblaze на Xilinx FPGA? Вони можуть бути використані для отримання того ж ефекту, що і PSoC, і я можу стверджувати, що багато в чому є найкращим вибором.
Quantum231

1
@ quantum231: Я б це прийняв, але головним обмеженням для мене на той час був бюджет, і це було доступне безкоштовно у нашому відділі електроніки.
ganesh737
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.