Kinetis vs STM32


8

Je suis à la recherche d'une nouvelle application de contrôle industriel, et à partir de mes recherches, je l'ai réduite à 2 microcontrôleurs qui semblent bien s'adapter à l'application. Le STM32 et le Kinetis. Ils semblent tous deux très capables de faire le travail et j'ai déjà utilisé le STM32 dans une autre application quelque peu indépendante. J'aime la famille STM32 car il existe une telle sélection de configurations qui sont pour la plupart compatibles avec les broches. Le Kinetis semble cependant être un peu plus pour le processeur buck / mémoire.

Donc, mes questions à quiconque ayant un peu plus d'expérience avec ces derniers est ... Quels sont certains des avantages et des inconvénients de chaque famille?

Je suis à peu près sûr qu'il n'y a pas vraiment de mauvais choix ici pour ma candidature, mais j'aimerais avoir plus de détails de quelqu'un d'autre que Freescale et ST. Je me rends compte que les détails de mon application peuvent être un facteur ici, mais c'est une application très large en termes de fonctionnalité. Notre plus grande limite qui nous a poussés à passer à un autre contrôleur est la mémoire (~ 16k RAM 256k flash).

Toutes les idées seraient grandement appréciées. Merci


Le STM32F4 possède un Cortex-M4 avec virgule flottante et DSP, et jusqu'à 1 Mo de mémoire flash et 192 Ko de RAM. Une carte bon marché est disponible avec plusieurs périphériques intéressants.
Leon Heller

Configurations (même brochage mémoire et puissance de traitement différentes) et maturité .. STM32 est le chemin à parcourir ..
Ktc

Deux entrent ... un part.
joeforker

Réponses:


6

Du STM32 (ST Microelectronics) et de la famille Kinetis (Freescale), je n'ai travaillé que sur la famille de processeurs STM32 et donc, je pourrai détailler mon expérience avec le STM32 et espérer que quelqu'un d'autre puisse faire de même pour le Kinetis, vous pouvez donc contraster les deux. Cette liste n'est peut-être pas complète et est simplement basée sur mon expérience.

AVANTAGES:

  1. ST fournit un ensemble massif de bibliothèques pour chacun de leurs processeurs que vous obtenez gratuitement. Ces bibliothèques contiennent une liste massive de fonctions nécessaires pour effectuer la plupart de l'interface de bas niveau avec le matériel et peuvent vous simplifier la vie.

    par exemple, vide GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Ceci initialise le périphérique GPIOx en fonction des paramètres spécifiés dans GPIO_InitStruct.

    Remplissez simplement la structure GPIO (et il existe des exemples de projets pour vous guider dans ce processus) et appelez la fonction GPIO_init. Cela vous évite d'avoir à rechercher au moins 4 à 5 registres et à déterminer ce que chaque bit doit être.

  2. Leurs microcontrôleurs ont la fonctionnalité de protection en lecture, qui peut vous aider à protéger votre IP dans une certaine mesure, sinon complètement. Il y a des tonnes de microcontrôleurs là-bas, qui ne font pas vraiment très bien cela.

  3. Ils ont une famille de microcontrôleurs basse consommation, leur série L1, qui ont différents niveaux de fonctionnalités d'économie d'énergie qui peuvent être activés / désactivés si nécessaire.

  4. Bien que de nombreux fabricants utilisent actuellement leurs versions des cœurs ARM CM3, les puces de la série F de ST ont subi quelques révisions et bien qu'elles ne soient pas complètement exemptes de bogues, elles sont maintenant assez matures.

  5. Presque toutes les variantes sur lesquelles j'ai travaillé ont des tonnes de minuteries et d'autres périphériques et vous n'en aurez jamais assez. :)

  6. Pour vous aider à démarrer, ils ont quelques exemples de projets qui peuvent être programmés dans leurs tableaux d'évaluation, ils vous donnent presque toujours gratuitement. Bien que je pense que la plupart des autres fabricants feraient de même.

LES INCONVÉNIENTS:

  1. Bien que les bibliothèques mentionnées ci-dessus aident certainement beaucoup, cependant certains des noms de fonction ne sont pas intuitifs et il faut un certain temps pour se familiariser avec leurs conventions de dénomination. Ce n'est pas vrai pour la bibliothèque entière, mais il y a pas mal de code, qui n'est pas bien commenté, et vous devrez vraiment le lire pour comprendre ce qu'il fait.

  2. Si vous utilisez leurs bibliothèques et que vous souhaitez activer la vérification MISRA pour votre projet, vous obtiendrez des tonnes d'erreurs / avertissements car leur code ne semble pas être conforme à MISRA. Vous devrez trouver un moyen d'exclure leurs bibliothèques de votre vérification MISRA. Il existe des moyens de contourner cela, mais ils nécessitent un peu de travail pour le faire.

  3. La documentation de ST pour les processeurs sur lesquels j'ai travaillé est un peu pauvre. Leurs fiches techniques ne sont pas très bien écrites. Les informations ne se trouvent pas dans un document central / principal. Il y a ce qu'ils appellent un manuel de référence, des tonnes de notes d'application et au moins une fiche technique. Vous devez parfois parcourir ces documents pour trouver les informations que vous recherchez.

    Ils décrivent souvent les ports GPIO, et un paramètre recommandé pour l'un des bits
    peut être décrit 50 pages plus tard.

C'est tout ce à quoi je peux penser en ce moment, j'espère que cela vous donne une idée des produits STM32. J'ajouterai plus, si je peux penser à autre chose.

Une suggestion serait d'obtenir une carte d'évaluation pour les deux types de microcontrôleurs (un Kinetis et un STM32), qui ont les périphériques que vous recherchez et qui jouent avec eux.

Cela vous donnera une très bonne idée de celle qui convient le mieux à vos besoins.


1
Je souhaite que les fabricants s'abstiennent de voir leurs bibliothèques définir et utiliser leurs propres identifiants pour tout. La configuration d'un port GPIO nécessite de rechercher tous les registres de fonctions dans le manuel pour savoir ce que signifient tous les différents modes; être capable d'écrire du code en utilisant directement ces informations serait plus utile que d'avoir à examiner ensuite la bibliothèque et sa documentation pour voir comment elle définissait les choses.
supercat

@supercat Jetez un œil au DAVE IDE d'Infineon. Vous ajoutez essentiellement ce qu'ils appellent des "APP" via une interface graphique et le machin DAVE s'occupe de la génération de code pour vous.
Chi

3

K70 a du silicium très buggy. Souvent, les périphériques que vous avez décrits n'ont que des fonctionnalités légères; par exemple, il est bon d'utiliser le cache avec de la mémoire externe, mais si vous utilisez cette mémoire avec DMA, vous devrez vider le cache manuellement. Le K70 possède un contrôleur LCD, mais il est presque impossible d'obtenir une résolution meilleure que 480x272, ce qui n'est pas mieux que ce qui peut être obtenu avec les MCU standard. Le K70 possède un générateur d'horloge monstre, mais seuls quelques périphériques peuvent l'utiliser à la place de l'horloge de bus.
La chose la plus importante est que j'ai trouvé que la gestion compliquée de la basse consommation ne fonctionne tout simplement pas!


2

Je suppose que vous comparez le Kinetis avec les processeurs STM32F4 Cortex-M4. Je n'ai pas réellement utilisé non plus, mais je les ai examinés pour une utilisation possible dans un projet à venir. TI-Stellaris propose également des familles d'appareils M4 et annoncées par Atmel et NXP, dont beaucoup incluent le processeur à virgule flottante, de nombreux ports série et des minuteries.

Le support en termes de logiciel pour les processeurs (Freescale et ST) semble bon avec Freescale fournissant une bibliothèque d'interface et un RTOS libre de droits pour leurs pièces. ST fournit un ensemble de bibliothèques d'interfaces qui permettent la configuration et l'utilisation de leurs processeurs et périphériques.

Les appareils ST semblent gagner la guerre de la vitesse de traitement avec une vitesse indiquée de 168 MHz en utilisant (IIRC) un large bus mémoire pour le programme flash. Cela peut ou non être important pour vous.

Les pièces Kinetis sont les plus matures, disponibles depuis près d'un an. En conséquence, il existe maintenant une assez grande famille d'appareils en production avec une large gamme d'interfaces et d'ensembles de périphériques. Les pièces ST ne sont sorties que depuis environ un mois, bien qu'elles aient sorti un certain nombre de pièces en même temps que l'annonce de la famille. Leur gamme de pièces augmentera à peu près de la même manière que leur famille Cortex-M3.


STM32 est disponible depuis plus de 2 ans .. Seul F4 est sorti depuis quelques mois mais F1 / F2 est là depuis plus de 2 ans .. Nous l'utilisons ..
Ktc

Je suis bien conscient que les processeurs basés sur STM32 M3 existent depuis longtemps. La question est basée sur les pièces Kinetis (basées sur M4), donc je comparais les familles de processeurs M4 disponibles.
u

En effet .. Mais si vous comparez M4 à M3, il y a très peu de différence en termes de reste des blocs ce qui me donne confiance. l'ARM est armé de toute façon, peu importe la version car il sera vérifié par ARM lui
Ktc

2

Mon expérience avec STM32 et Kinetis K70 se résume à exécuter uClinux sur ces processeurs (des informations détaillées sur ces ports uClinux sont disponibles ici ).

Si vous avez l'intention d'utiliser de la RAM externe dans votre application, le K70 serait à mon avis un meilleur choix.


Pour approfondir mon article ci-dessus, K70 a deux caches de 8 Ko, un pour le bus I / D (qui cible essentiellement les régions de mémoire qui pourraient être utilisées pour exécuter du code à partir de), un autre pour le bus système (cible les mémoires "non-code" ). D'après ce que nous voyons dans les contextes uClinux, les caches aident à améliorer les performances globales du système de manière quelque peu sérieuse.
vladimir khusainov

1

Je répondais récemment à une question d'un client étroitement liée à ce fil. Espérons que ces commentaires seront utiles.

+++++++++++

Pour mettre en évidence les différences entre K70 et STM32F2:

  • K70 est Cortex-M4 tandis que STM32F2 est Cortex-M3. En d'autres termes, K70 fournit des unités matérielles FPU et DSP sur puce.

  • K70 peut exécuter le noyau Cortex-M à 150 MHz (bien que les appareils actuellement disponibles soient limités à 120 MHz). STM32F2 est limité à 120 MHz.

  • Le K70 fournit des interfaces DDR et NAND Flash intégrées, permettant des densités très élevées pour les périphériques de mémoire externe.

  • Le K70 dispose d'un cache sur puce (2 caches de 8 Ko distincts pour les bus I / D et système). Cela démarre vraiment les performances des mémoires externes de manière très sérieuse.

  • K70 fournit divers mécanismes de sécurité pour garantir que les logiciels ne peuvent pas être copiés à l'aide d'outils externes (débogueurs JTAG, etc.).

  • Le K70 a un contrôleur LCD intégré ainsi qu'une interface tactile intégrée.

  • ensemble similaire d'interfaces d'E / S mais cela doit être mesuré par rapport aux exigences d'une application spécifique.

Dans l'ensemble, si vous utilisez de la mémoire externe dans vos applications et / ou avez besoin d'une interface graphique, K70 serait un gagnant évident. De plus, K70 est plus performant, d'une manière générale.

+++++++++++


K7x a un ADC 16 bits avec PGA alors que non STM32 en a.
Mehmet Fide
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.