Я смотрю на новое приложение промышленного управления, и из своих поисков я сузил его до 2-х микроконтроллеров, которые выглядят хорошо для приложения. STM32 и Kinetis. Кажется, они оба способны выполнять эту работу, и я уже использовал STM32 в другом, несколько не связанном приложении. Мне нравится семейство STM32, поскольку существует такой широкий выбор конфигураций, которые по большей части совместимы по выводам. Тем не менее, Kinetis выглядит немного лучше для процессора и памяти.
Итак, мои вопросы к любому, у кого есть немного больше опыта в этом вопросе ... Каковы некоторые преимущества и недостатки каждой семьи?
Я почти уверен, что для моего приложения здесь не совсем правильный выбор, но я хотел бы получить более подробную информацию от кого-то, кроме Freescale и ST. Я понимаю, что детали моего приложения могут быть здесь фактором, но это очень широкое приложение с точки зрения функциональности. Наш самый большой предел, который подтолкнул нас к переходу на другой контроллер, - это память (~ 16k RAM, 256k flash).
Любая идея будет принята с благодарностью. Спасибо
источник
Ответы:
Из STM32 (ST Microelectronics) и семейства Kinetis (Freescale) я работал только с семейством процессоров STM32, и поэтому я смогу подробно рассказать о своем опыте с STM32 и надеюсь, что кто-то другой может сделать то же самое для Кинетис, так что вы можете сравнить два. Этот список может быть неполным, и он просто основан на моем опыте.
ПЛЮСЫ:
ST предоставляет огромный набор библиотек для каждого из своих процессоров, которые вы получаете бесплатно. Эти библиотеки содержат огромный список функций, необходимых для выполнения большинства базовых низкоуровневых интерфейсов с оборудованием, и могут значительно упростить вашу жизнь.
например, void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Это инициализирует периферийное устройство GPIOx в соответствии с указанными параметрами в GPIO_InitStruct.
Просто заполните структуру GPIO (и есть примеры проектов, которые помогут вам в этом процессе) и вызовите функцию GPIO_init. Это избавляет вас от необходимости искать по крайней мере 4-5 регистров и определять, каким должен быть каждый бит.
Их микроконтроллеры имеют функцию защиты от чтения, которая может помочь вам в некоторой степени защитить ваш IP, если не полностью. Есть тонны микроконтроллеров, которые на самом деле не очень хорошо это делают.
Они имеют семейство микроконтроллеров с низким энергопотреблением, их серии L1, которые имеют различные уровни функций энергосбережения, которые можно включать / выключать при необходимости.
Хотя есть много производителей, которые в настоящее время делают свои версии ядер ARM CM3, чипы серии ST серии F имели несколько ревизий и, хотя они не являются полностью свободными от ошибок, сейчас они достаточно зрелые.
Почти во всех вариантах, над которыми я работал, есть множество таймеров и других периферийных устройств, и вам никогда не хватит их. :)
Для начала у них есть несколько примеров проектов, которые можно запрограммировать в своих оценочных комиссиях, они почти всегда дают вам бесплатно. Хотя я думаю, что большинство других производителей сделали бы то же самое.
МИНУСЫ:
Хотя вышеупомянутые библиотеки определенно очень помогают, однако некоторые имена функций не являются интуитивно понятными, и требуется некоторое время, чтобы разобраться в их соглашениях об именах. Это не относится ко всей библиотеке, но есть довольно много кода, который не очень хорошо прокомментирован, и вам действительно придется прочитать его, чтобы понять, что он делает.
Если вы используете их библиотеки и хотите включить проверку MISRA для своего проекта, вы получите тонны ошибок / предупреждений, поскольку их код не соответствует требованиям MISRA. Вам нужно будет найти способ исключить их библиотеки из проверки MISRA. Есть способы обойти это, но они требуют немного работы для этого.
Документация ST для процессоров, над которыми я работал, немного скудна. Их таблицы не очень хорошо написаны. Информация не в одном центральном / основном документе. Там есть то, что они называют справочным руководством, тоннами примечаний по применению и, по крайней мере, одной таблицей данных. Вы должны действительно просматривать эти документы иногда, чтобы найти информацию, которую вы ищете.
Они часто описывают порты GPIO, и рекомендуемая настройка для одного из битов
может быть описана 50 страницами позже.
Это все, что я могу думать на данный момент, надеюсь, это даст вам представление о продуктах STM32. Я добавлю больше, если я могу думать о чем-нибудь еще.
Было бы предложено получить оценочную плату для обоих типов микроконтроллеров (Kinetis one и STM32), которые имеют периферийные устройства, которые вам нужны, и поиграть с ними.
Это даст вам действительно хорошее чувство, для которого лучше всего соответствует вашим потребностям.
источник
К70 имеет очень глючный кремний. Часто описанные вами периферийные устройства имеют только облегченную функциональность; Например, хорошо использовать кэш с внешней памятью, но если вы используете эту память с DMA, вам нужно будет очистить кэш вручную. K70 имеет контроллер ЖК-дисплея, но почти невозможно получить разрешение лучше, чем 480x272, что не лучше, чем можно добиться с помощью стандартных MCU. K70 имеет генератор тактового генератора, но только несколько периферийных устройств могут использовать его вместо шинных часов.
Самое главное, я обнаружил, что сложное управление с низким энергопотреблением просто не работает!
источник
Я предполагаю, что вы сравниваете Kinetis с процессорами STM32F4 Cortex-M4. Я на самом деле тоже не использовал, но искал их для возможного использования в предстоящем проекте. Есть также семейства устройств M4, доступные от TI-Stellaris и анонсированные Atmel и NXP, многие из которых включают процессор с плавающей запятой, множество последовательных портов и таймеры.
Поддержка с точки зрения программного обеспечения для процессоров (Freescale и ST) выглядит хорошо, поскольку Freescale предоставляет библиотеку интерфейсов и бесплатную ОСРВ для их частей. ST предоставляет набор интерфейсных библиотек, которые позволяют конфигурировать и использовать их процессоры и периферийные устройства.
Похоже, что ST-устройства выигрывают войну за скорость обработки данных с заявленной частотой 168 МГц, используя (IIRC) широкую шину памяти для прошивки программы. Это может или не может быть важно для вас.
Части Kinetis являются более зрелыми, они были доступны в течение почти года. В результате в настоящее время выпускается довольно большое семейство устройств с широким спектром интерфейсов и периферийных устройств. Части ST были выпущены только в течение месяца, хотя они выпустили несколько частей одновременно с объявлением о семье. Ассортимент их частей увеличится почти так же, как и их семейство Cortex-M3.
источник
Мой опыт работы с STM32 и Kinetis K70 сводится к запуску uClinux на этих процессорах (подробная информация об этих портах uClinux доступна здесь ).
Если вы намереваетесь использовать внешнее ОЗУ в своем приложении, на мой взгляд, K70 будет лучшим выбором.
источник
Недавно я отвечал на запрос клиента, тесно связанный с этой веткой. Надеюсь, эти комментарии будут полезны.
+++++++++++
Чтобы подчеркнуть различия между K70 и STM32F2:
K70 - это Cortex-M4, а STM32F2 - это Cortex-M3. Другими словами, K70 предоставляет встроенные аппаратные блоки FPU и DSP.
K70 может работать с ядром Cortex-M на частоте 150 МГц (хотя доступные в настоящее время устройства ограничены частотой 120 МГц). STM32F2 ограничен до 120 МГц.
K70 предоставляет встроенные интерфейсы DDR и NAND Flash, что обеспечивает очень высокую плотность для внешних устройств памяти.
K70 имеет встроенную кэш-память (2 отдельных кеша по 8 КБ для I / D и системной шины). Это действительно сильно загружает внешние воспоминания.
K70 предоставляет различные механизмы безопасности, чтобы гарантировать невозможность копирования программного обеспечения с использованием внешних инструментов (отладчики JTAG и т. Д.).
K70 имеет встроенный контроллер LCD, а также встроенный сенсорный интерфейс.
подобный набор интерфейсов ввода / вывода, но это должно быть измерено в соответствии с требованиями конкретного приложения.
В целом, если вы используете внешнюю память в своих приложениях и / или вам нужен интерфейс с графическим интерфейсом, K70 будет явным победителем. Кроме того, K70 более производительный, вообще говоря.
+++++++++++
источник