Кинетис против СТМ32

8

Я смотрю на новое приложение промышленного управления, и из своих поисков я сузил его до 2-х микроконтроллеров, которые выглядят хорошо для приложения. STM32 и Kinetis. Кажется, они оба способны выполнять эту работу, и я уже использовал STM32 в другом, несколько не связанном приложении. Мне нравится семейство STM32, поскольку существует такой широкий выбор конфигураций, которые по большей части совместимы по выводам. Тем не менее, Kinetis выглядит немного лучше для процессора и памяти.

Итак, мои вопросы к любому, у кого есть немного больше опыта в этом вопросе ... Каковы некоторые преимущества и недостатки каждой семьи?

Я почти уверен, что для моего приложения здесь не совсем правильный выбор, но я хотел бы получить более подробную информацию от кого-то, кроме Freescale и ST. Я понимаю, что детали моего приложения могут быть здесь фактором, но это очень широкое приложение с точки зрения функциональности. Наш самый большой предел, который подтолкнул нас к переходу на другой контроллер, - это память (~ 16k RAM, 256k flash).

Любая идея будет принята с благодарностью. Спасибо

radix07
источник
STM32F4 имеет Cortex-M4 с плавающей точкой и DSP, до 1 МБ флэш-памяти и 192 КБ ОЗУ. Доступна дешевая плата с несколькими интересными периферийными устройствами.
Леон Хеллер
Конфигурации (одни и те же распределяют различную память и вычислительную мощность) и зрелость .. STM32 - это путь.
Ktc
Двое входят ... один уходит.
Joeforker

Ответы:

6

Из STM32 (ST Microelectronics) и семейства Kinetis (Freescale) я работал только с семейством процессоров STM32, и поэтому я смогу подробно рассказать о своем опыте с STM32 и надеюсь, что кто-то другой может сделать то же самое для Кинетис, так что вы можете сравнить два. Этот список может быть неполным, и он просто основан на моем опыте.

ПЛЮСЫ:

  1. ST предоставляет огромный набор библиотек для каждого из своих процессоров, которые вы получаете бесплатно. Эти библиотеки содержат огромный список функций, необходимых для выполнения большинства базовых низкоуровневых интерфейсов с оборудованием, и могут значительно упростить вашу жизнь.

    например, void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Это инициализирует периферийное устройство GPIOx в соответствии с указанными параметрами в GPIO_InitStruct.

    Просто заполните структуру GPIO (и есть примеры проектов, которые помогут вам в этом процессе) и вызовите функцию GPIO_init. Это избавляет вас от необходимости искать по крайней мере 4-5 регистров и определять, каким должен быть каждый бит.

  2. Их микроконтроллеры имеют функцию защиты от чтения, которая может помочь вам в некоторой степени защитить ваш IP, если не полностью. Есть тонны микроконтроллеров, которые на самом деле не очень хорошо это делают.

  3. Они имеют семейство микроконтроллеров с низким энергопотреблением, их серии L1, которые имеют различные уровни функций энергосбережения, которые можно включать / выключать при необходимости.

  4. Хотя есть много производителей, которые в настоящее время делают свои версии ядер ARM CM3, чипы серии ST серии F имели несколько ревизий и, хотя они не являются полностью свободными от ошибок, сейчас они достаточно зрелые.

  5. Почти во всех вариантах, над которыми я работал, есть множество таймеров и других периферийных устройств, и вам никогда не хватит их. :)

  6. Для начала у них есть несколько примеров проектов, которые можно запрограммировать в своих оценочных комиссиях, они почти всегда дают вам бесплатно. Хотя я думаю, что большинство других производителей сделали бы то же самое.

МИНУСЫ:

  1. Хотя вышеупомянутые библиотеки определенно очень помогают, однако некоторые имена функций не являются интуитивно понятными, и требуется некоторое время, чтобы разобраться в их соглашениях об именах. Это не относится ко всей библиотеке, но есть довольно много кода, который не очень хорошо прокомментирован, и вам действительно придется прочитать его, чтобы понять, что он делает.

  2. Если вы используете их библиотеки и хотите включить проверку MISRA для своего проекта, вы получите тонны ошибок / предупреждений, поскольку их код не соответствует требованиям MISRA. Вам нужно будет найти способ исключить их библиотеки из проверки MISRA. Есть способы обойти это, но они требуют немного работы для этого.

  3. Документация ST для процессоров, над которыми я работал, немного скудна. Их таблицы не очень хорошо написаны. Информация не в одном центральном / основном документе. Там есть то, что они называют справочным руководством, тоннами примечаний по применению и, по крайней мере, одной таблицей данных. Вы должны действительно просматривать эти документы иногда, чтобы найти информацию, которую вы ищете.

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

Это все, что я могу думать на данный момент, надеюсь, это даст вам представление о продуктах STM32. Я добавлю больше, если я могу думать о чем-нибудь еще.

Было бы предложено получить оценочную плату для обоих типов микроконтроллеров (Kinetis one и STM32), которые имеют периферийные устройства, которые вам нужны, и поиграть с ними.

Это даст вам действительно хорошее чувство, для которого лучше всего соответствует вашим потребностям.

IntelliChick
источник
1
Я хотел бы, чтобы производители воздерживались от того, чтобы их библиотеки определяли и использовали свои собственные идентификаторы для всего. Настройка порта GPIO требует просмотра всех регистров функций в руководстве, чтобы узнать, что означают все различные режимы; возможность писать код, используя эту информацию напрямую, была бы более полезной, чем необходимость изучать библиотеку и ее документацию, чтобы увидеть, как она определяет вещи.
суперкат
@supercat Посмотрите на ДЭЙВ Infineon. Вы в основном добавляете то, что они называют «приложениями», через графический интерфейс, и DAVE позаботится о генерации кода для вас.
Chi
3

К70 имеет очень глючный кремний. Часто описанные вами периферийные устройства имеют только облегченную функциональность; Например, хорошо использовать кэш с внешней памятью, но если вы используете эту память с DMA, вам нужно будет очистить кэш вручную. K70 имеет контроллер ЖК-дисплея, но почти невозможно получить разрешение лучше, чем 480x272, что не лучше, чем можно добиться с помощью стандартных MCU. K70 имеет генератор тактового генератора, но только несколько периферийных устройств могут использовать его вместо шинных часов.
Самое главное, я обнаружил, что сложное управление с низким энергопотреблением просто не работает!

Витторио Иованнелли
источник
2

Я предполагаю, что вы сравниваете Kinetis с процессорами STM32F4 Cortex-M4. Я на самом деле тоже не использовал, но искал их для возможного использования в предстоящем проекте. Есть также семейства устройств M4, доступные от TI-Stellaris и анонсированные Atmel и NXP, многие из которых включают процессор с плавающей запятой, множество последовательных портов и таймеры.

Поддержка с точки зрения программного обеспечения для процессоров (Freescale и ST) выглядит хорошо, поскольку Freescale предоставляет библиотеку интерфейсов и бесплатную ОСРВ для их частей. ST предоставляет набор интерфейсных библиотек, которые позволяют конфигурировать и использовать их процессоры и периферийные устройства.

Похоже, что ST-устройства выигрывают войну за скорость обработки данных с заявленной частотой 168 МГц, используя (IIRC) широкую шину памяти для прошивки программы. Это может или не может быть важно для вас.

Части Kinetis являются более зрелыми, они были доступны в течение почти года. В результате в настоящее время выпускается довольно большое семейство устройств с широким спектром интерфейсов и периферийных устройств. Части ST были выпущены только в течение месяца, хотя они выпустили несколько частей одновременно с объявлением о семье. Ассортимент их частей увеличится почти так же, как и их семейство Cortex-M3.

uɐɪ
источник
STM32 доступен в течение 2+ лет. Только F4 отсутствует в течение нескольких месяцев, но F1 / F2 существует более 2 лет. Мы используем его ...
Ktc
Мне хорошо известно, что процессоры на базе STM32 M3 существуют уже давно. Вопрос основан на деталях Kinetis (на базе M4), поэтому я сравнивал доступные семейства процессоров M4.
uɐɪ
Действительно ... Но если вы сравните M4 с M3, разница между остальными блоками будет очень мала, что придает мне уверенности. В любом случае ARM - это рука, не имеет значения, какая версия будет проверена самим ARM
Ktc
2

Мой опыт работы с STM32 и Kinetis K70 сводится к запуску uClinux на этих процессорах (подробная информация об этих портах uClinux доступна здесь ).

Если вы намереваетесь использовать внешнее ОЗУ в своем приложении, на мой взгляд, K70 будет лучшим выбором.

владимир хусаинов
источник
Более подробно о моем посте выше, K70 имеет два кэша по 8 КБ, один для шины I / D (который по существу предназначен для областей памяти, которые могут использоваться для запуска кода из), другой для системной шины (предназначается для памяти без кода) ). Из того, что мы видим в контекстах uClinux, кеши помогают повысить общую производительность системы довольно серьезным образом.
Владимир Хусаинов
1

Недавно я отвечал на запрос клиента, тесно связанный с этой веткой. Надеюсь, эти комментарии будут полезны.

+++++++++++

Чтобы подчеркнуть различия между 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 более производительный, вообще говоря.

+++++++++++

владимир хусаинов
источник
K7x имеет 16-битный АЦП с PGA, в то время как не STM32 имеет это.
Мехмет Фиде