Це один із тих предметів, про які можна дуже обговорити. Існує так багато різних точок зору, і різні речі важливі для різних людей. Я спробую дати вичерпну відповідь, але розумію, що завжди знайдеться хтось, хто не погоджується. Просто зрозумійте, що ті, хто не погоджується зі мною, помиляються. (Просто шуткую.)
Короткий підсумок:
Ця відповідь буде довгою, тому дозвольте підсумувати це наперед. Для переважної більшості людей остання врожай мікросхем ARM Cortex-M0 / M3 / M4 пропонує найкраще рішення, найкращі характеристики за вартістю. Це навіть вірно, порівнюючи ці 32-бітні MCU з їх 8 та 16-бітовими предками, такими як PIC та MSP430. M0 можна придбати за менше ніж 1 долар США / кожен, а M4 - менше, ніж 2 долари США / кожен, тому, за винятком дуже чутливих до ціни програм, рішення ARM дуже приємні. M0 мають дуже низьку потужність і повинні бути досить хорошими для більшості людей. Для тих, хто дуже чутливий до потужності, MSP430 можуть все-таки бути кращим вибором, але M0 варто розглянути навіть для цих програм.
Якщо вас зацікавив більш глибокий аналіз, тоді читайте далі, інакше ви можете перестати читати зараз.
Зараз я розгляну кожну область та порівняю різні MCU:
Швидкість виконання
Звичайно, 32-бітні MCU будуть швидшими. Вони, як правило, мають більш високу тактову частоту, але також роблять більше роботи для кожного з цих годин. MCU, такі як ARM Cortex-M4, включають інструкції з обробки DSP і навіть можуть мати технічну підтримку з плаваючою комою. 8 і 16 бітні процесори можуть працювати на 32-бітних номерах, але це не ефективно в цьому. Це дозволить швидко споживати регістри процесора, тактові цикли процесора та флеш-пам’ять для зберігання програми.
Простота розвитку
На мою думку, це найцінніша причина використання сучасних 32-бітних MCU - але також і найдорожча. Дозвольте спочатку порівняти це з 8-бітними PIC. Це найгірше порівняння, але також найкраще для ілюстрації моїх точок.
Менші PIC-програми в основному вимагають, щоб програмування було виконано мовою складання. Правда, є навіть компілятори C, доступні навіть для 8-бітних ПІК, але ці компілятори є безкоштовними або хорошими. Ви не можете отримати компілятор, який є і хорошим, і безкоштовним. Безкоштовна версія компілятора покалічена тим, що її оптимізація не така хороша, як версія "Pro". Версія Pro становить приблизно 1000 доларів США і підтримує лише одне сімейство чіпів PIC (8, 16 або 32 бітових чіпів). Якщо ви хочете використовувати більше однієї родини, тоді вам доведеться придбати іншу копію ще на 1000 доларів США. "Стандартна" версія компілятора робить середній рівень оптимізації і коштує близько 500 доларів США для кожної сім'ї чіпів. 8-бітні PIC-карти повільні за сучасними стандартами і потребують хорошої оптимізації.
Для порівняння, існує багато хороших компіляторів С для ARM MCU, які є безкоштовними. Якщо є обмеження, ці обмеження зазвичай є на максимальному розмірі підтримуваної Flash-пам'яті. На інструментах Freescale Codewarrior ця межа становить 128 Кбайт. Для більшості людей на цьому форумі це достатньо.
Перевага використання компілятора C полягає в тому, що вам не доведеться турбуватися (настільки сильно) з деталями низького рівня карти пам'яті процесора. Пейджинг на ПІК особливо болючий і його краще уникати, якщо це можливо. Ще одна перевага полягає в тому, що вам не доведеться турбуватися з безладом передачі 16 і 32 бітових чисел на 8-бітний MCU (або 32 бітові числа на 16-бітному MCU). Хоча це не складно зробити це мовою складання, болі в тилу і схильні до помилок.
Є й інші компілятори, що не належать до ARM, які добре працюють. Здається, компілятор MSP430 робить розумну роботу. Інструменти Cypress PSoC (особливо PSoC1) є помилковими.
Модель з плоскою пам'яттю
MCU, який запрограмував оперативну пам'ять / регістри / Flash, просто дурний. Так, я кажу про 8-бітові фотокамери. Тупий, німий, німий. Це настільки відключило мене від ПІК, що я навіть не потрудився подивитися на їх новіші речі. (Відмова: це означає, що нові PIC можуть бути вдосконалені, і я просто не знаю цього.)
За допомогою 8-бітного MCU важко (але не неможливо) отримати доступ до структур даних розміром понад 256 байт. З 16-бітним MCU, який збільшується до 64 кбайт або kwords. З 32-бітними процесорами, розміром до 4 гігабайт.
Хороший компілятор C може приховати багато цього від програміста (він же), але навіть тоді він впливає на розмір програми та швидкість виконання програми.
Існує багато програм MCU, для яких це не буде проблемою, але, звичайно, є багато інших, які матимуть проблеми з цим. Це здебільшого питання про те, скільки потрібних вам даних (масивів та структур) в оперативній пам'яті або Flash. Звичайно, у міру збільшення швидкості процесора збільшуються шанси на використання великих структур даних!
Розмір упаковки
Деякі з невеликих ПІК та інші 8-бітні MCU доступні в дійсно невеликих пакетах. 6 і 8 шпильок! В даний час найменший ARM Cortex-M0, про який я знаю, знаходиться в QFN-28. Хоча QFN-28 достатньо малий для більшості, він недостатньо малий для всіх.
Вартість
Найдешевший PIC становить приблизно третину ціни найдешевшого ARM Cortex-M0. Але це дійсно 0,32 долара США проти 0,85 долара США. Так, різниця в ціні має значення для деяких. Але я вважаю, що більшість людей на цьому веб-сайті не переймаються такою незначною вартістю.
Аналогічно, при порівнянні більш спроможних MCU з ARM Cortex-M0 / M3 / M4 зазвичай ARM Cortex виходить «приблизно рівним» або зверху. Якщо враховувати інші речі (простота розробки, витрати на компілятор тощо), ARM дуже привабливі.
Друге резюме
Я думаю, що справжнє питання: Чому б ви НЕ використовували ARM Cortex-M0 / M3 / M4? Коли абсолютна вартість надзвичайно важлива. Коли надзвичайно низьке енергоспоживання є критичним. Коли потрібен найменший розмір упаковки. Коли швидкість не важлива. Але для переважної більшості застосувань жодне з них не застосовується, і ARM в даний час є найкращим рішенням.
Враховуючи низьку вартість, якщо немає вагомих причин не використовувати ARM Cortex, то є сенс використовувати його. Це дозволить швидше і простіше розробити час з меншими головними болями та більшими запасами конструкції, ніж більшість інших MCU.
Доступні й інші 32-бітні MCU, що не є ARM Cortex, але я не бачу жодної переваги для них. Зі стандартною архітектурою процесора є багато переваг, включаючи кращі інструменти розробки та більш швидкі інновації технології.
Звичайно, все може і змінитися. Те, що я кажу, є дійсним сьогодні, але може бути недійсним через рік чи навіть місяць. Зробіть власні домашні завдання.