Похоже, сегодня вышел Arduino Due (32-битная, 84 МГц, SAM3X8E на базе ARM-Cortex-M3).
Кроме того, очевидно, что существует множество процессоров в этой категории (32-разрядные / 48-96 МГц / ARM), а также соответствующие платы для создания прототипов:
- NXP LPC1768 / mBed
- STM32 / Discovery
- PIC32 / ChipKit
- PIC32 / Параллакс Пропеллер
- LM4F120 / TI Launchpad
- и т.п.
Я пытаюсь понять привлекательность этих «промежуточных» микропроцессоров, которые, как мне кажется, лежат между младшим AVR / MSP430 / и т. Д. (плюсы: недорогой, маломощный, компактный) и высокопроизводительный ARM7 / etc (профи: способный выполнять намного больше команд в секунду).
В каких ситуациях или способах подходят 32-битные / 48-96 МГц / ARM-микропроцессоры? В частности, мне интересно, в каких приложениях или в каких параметрах они будут выбирать лучший выбор при разработке, как для низкоуровневых 8-разрядных микроконтроллеров, так и для процессоров ARM7 самого высокого класса.
Ответы:
Это одна из тех тем, которые могут стать предметом споров. Есть так много разных точек зрения, и разные вещи важны для разных людей. Я постараюсь дать исчерпывающий ответ, но понимаю, что всегда найдется тот, кто не согласен. Просто поймите, что те, кто не согласен со мной, ошибаются. (Просто шучу.)
Краткое резюме:
Этот ответ будет длинным, поэтому позвольте мне подвести итог. Для подавляющего большинства людей новейшие чипы 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, но я также не вижу в них никакого преимущества. Использование стандартной архитектуры ЦП имеет много преимуществ, в том числе более совершенные средства разработки и более быстрое внедрение технологий.
Конечно, все может измениться. То, что я говорю, действует сегодня, но может быть недействительным через год или даже месяц. Сделай свою домашнюю работу.
источник
Дэвид Кесснер прав. Я хотел бы добавить следующее.
Я согласен, что в наши дни нет особых причин не использовать 32-битные микроконтроллеры. Я бы использовал их [8-битные микроконтроллеры] только по двум причинам: мне нравится простота пакета PDIP (пайка не требуется); Мне часто не нужно больше мощности / сложности, чем может предложить 8-битный MCU.
Разрушитель сделки - действительно доступные инструменты.
источник
Мы используем относительно немодный Freescale MCF52259, 32-битный MCU с поддержкой 80 МГц.
Причины / мыслительный процесс для выбора были:
В наши дни более выгодно (и целесообразно) чрезмерно специфицировать / расширять возможности аппаратного обеспечения (хранение, скорость, ввод-вывод и т. Д.), Чем тратить ценное время на оптимизацию кода, чтобы втиснуть его в более дешевый / меньший MCU, если только не будет места или Власть это большие проблемы.
В нашем случае устройство было вдвое дешевле, чем у M.Core, за полцены. Переход на более дешевый MCU позволил бы сэкономить только копейки за плату, но стоил бы много времени на разработку и ограничил потенциал для дальнейшей разработки без повторной замены MCU.
Если бы мы строили миллион плат, то стоило бы выполнить расчёт затрат, чтобы разобраться в этом, но на самом деле это не стоит времени на разработку.
источник