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