Comment choisir une plateforme MCU? [fermé]


43

Il existe de nombreuses plates-formes MCU et une fois que quelqu'un s'y est habitué, il est généralement peu disposé à passer à une autre plate-forme.

Ma question est la suivante: si on commençait à utiliser un MCU pour des tâches d'usage général aujourd'hui, comment procéder pour en choisir un? Quels sont les points de vente uniques des différentes plates-formes?


2
Faites-nous savoir le genre de projets et les volumes que vous avez en tête, et cela nous aidera à répondre à la question.
Rocketmagnet

3
Le but général est beaucoup trop large. Il n’a pas de sens d’utiliser le même uC pour le clignotement d’une LED de vélo et pour un RTOS avec un écran LCD couleur tactile haute résolution.
Wouter van Ooijen

1
Oui, idéalement, vous avez plusieurs puces que vous connaissez bien pour des problèmes de tailles différentes - et vous êtes prêt à en prendre une nouvelle si elle convient parfaitement à une tâche.
Chris Stratton

2
@WoutervanOoijen L'idée de cette question était la suivante: il existe de nombreuses tâches que toutes les plates-formes peuvent gérer facilement (tâches à usage général). On est alors totalement libre de choisir entre les plateformes. Dans ce cas, les "facteurs indirects", tels que la facilité d'utilisation, le nombre de composants externes, etc. deviennent dominants. - Je voulais savoir ce que les différentes plateformes font bien / mal comparé aux autres.
ARF

7
RELIGION
vicatcu

Réponses:


30

Un an plus tard, j'ai donné une conférence sur le choix des microcontrôleurs (cela a pris environ une heure et demie). Le public était constitué de programmeurs et de concepteurs de logiciels de haut niveau. La majorité du public n'avait pas d'expérience préalable en μC, le reste n'a joué qu'avec Arduino. Le nombre de personnes dans l'auditoire était d'environ 30 personnes. Il s'agissait donc d'une multidiffusion, par opposition à une clinique individuelle.

La diapositive clé dans la conversation était la suivante:

Dimensions

pour comparer des microcontrôleurs. La liste est dans l'ordre décroissant.

  • Environnement de développement (chaîne d'outils)
    • Environnement de développement
    • Ai-je mentionné l'environnement de développement?
  • Soutien
    • Notes d'application
    • Soutien par les pairs: connaissances tribales, amis, forums, codes [sic]
  • traits
    • Mémoire
    • Les périphériques
    • Prouesse de calcul
  • Consommation d'énergie
  • Coût

ps

Je devrais définir le champ d’application de ma réponse. Je vois cette question de sélection de plate-forme à travers deux types de lentilles. Le premier est un prototypeur. Le second est un développeur d’équipements professionnels avec des prix de vente de l’ordre de 3 000 dollars et des quantités exprimées en centaines de dollars par an. L’objectif amateur n’est pas loin non plus. Dans ces cas, le coût différentiel du microcontrôleur est faible, comparé au coût de développement, ou au coût de l'équipement professionnel dans lequel le microcontrôleur va.

Il y a bien sûr une perspective très différente de la production de masse. Lorsque quelqu'un choisit un microcontrôleur pour un appareil bon marché qui sera produit en grande quantité (les jouets grand public en sont un bon exemple), il sera motivé par le coût du matériel. Une économie modeste sur le coût du matériel multiplié par un volume de production important (en centaines de milliers ou plus) peut justifier la peine d'utiliser un environnement de développement difficile à manier et un microcontrôleur à prix avantageux doté d'un support médiocre.


Vous vous concentrez sur l'environnement de développement. Cela a du sens pour moi. Quelles ont été vos conclusions?
ARF

@ArikRaffaelFunke Eh bien, ces points dans mon post ci-dessus sont les conclusions. Pas assez concluant? Mon objectif pour la conférence était de: (1) Fournir une liste minimale des questions à poser lors du processus de sélection. (2) Montrer où et comment chercher des réponses. J'ai particulièrement évité de tirer des conclusions difficiles: la famille X, c'est bien si ..., la famille Y, c'est bien si ...
Nick Alexeev

1
Oui, pour les petits volumes et les exigences types. Mais parfois, il faut choisir la meilleure technologie. Ou, si le volume est énorme, des problèmes assez importants en développement peuvent être justifiés si vous économisez quelques centimes par widget, notamment en ayant des solutions basées sur des composants concurrents testés et prêts à l'emploi.
Chris Stratton

1
@ChrisStratton La consommation d'énergie est une autre chose [en plus d'effets de volume de production élevés], ce qui peut parfois justifier des maux de tête. Le petit peut faire s’il veut un fonctionnement à très basse puissance et l’uC (qu’il a choisi) ne peut le supporter.
Nick Alexeev

9
L'accent mis sur l'environnement de développement est absolument correct. Vous pourriez avoir la meilleure puce au monde, mais si vous ne pouvez pas programmer et déboguer cette fichue chose, il pourrait tout aussi bien s'agir d'une brique. J'ai entendu de bonnes choses à propos de NXP, mais pas d'expérience directe. Je pensais que Freescale était pauvre, mais j'ai ensuite essayé TI (MSP, puis DM36x) et maintenant, Freescale est un phare brillant qui brille dans mes yeux. Meilleur conseil pour tout environnement dev: construisez / installez-le sur une machine virtuelle et conservez-en une copie de sauvegarde en état de marche afin qu'il ne soit pas endommagé lors du déplacement d'ordinateurs / de la mise à niveau du système d'exploitation, etc.
John U

25

Comme cette question n’a pas encore produit la comparaison de plate-forme que j’espérais, j’ai moi-même tenté d’en créer une en étudiant la littérature ainsi que les autres réponses. Peut-être que cela pourra aider quelqu'un d'autre à l'avenir.

S'il vous plaît laissez-moi savoir s'il y a des erreurs ou s'il y a des informations que je peux ajouter.


Comparaison de plate-forme

Notes concernant la comparaison:

  • IDE: les commentaires concernent la version gratuite

PIC:

  • de loin les puces d'entrée de gamme les moins chères
  • beaucoup ont des régulateurs de tension internes
  • à un prix donné, ont généralement plus et de meilleurs périphériques
  • quasi standard de l'industrie: très bonnes bibliothèques et support aux développeurs
  • IDE: une simulation et un débogage hors ligne complets, basés sur NetBeans, exceptionnels
  • débogueurs tiers: environ 25 $
  • très large gamme de forfaits
  • arguments de vente uniques: 1. XLP = appareils à très basse consommation disponibles; 2. Beaucoup de puces modernes ont le module de détection capacitif pour les boutons tactiles, etc.

AVR:

  • AVR est généralement en retard sur les périphériques en régression et est légèrement plus cher. Dans l’ensemble, cependant, AVR est très similaire aux PIC en termes de fonctionnalité et de prix.
  • Les puces AVR 8 bits sont plus rapides que les puces PIC 8 bits
  • émulateurs tiers: environ 20 $
  • très large gamme de forfaits

Bras Cortex-M:

  • architecture de processeur moderne: pas de mémoire, bon fonctionnement multitâche
  • de loin les appareils 32 bits les moins chers
  • assez facile à déplacer entre différents puces et différents fabricants
  • les périphériques nécessitent généralement plus de composants externes que les PIC
  • Périphériques USB très bon marché avec chargeur de démarrage ROM: NXP LPC1342 / LPC1343
  • support de bibliothèque raisonnable
  • IDE: raisonnable, pas de simulation hors ligne
  • L’interface SWD permet la programmation, le débogage et le traçage dans le système avec un matériel facile à construire (
  • les puces NXP peu coûteuses ne sont disponibles qu'en paquets à petit pas ou sans broches
  • Points de vente: 1. Plate-forme 32 bits la moins chère; 2. plate-forme la moins chère avec chargeur de démarrage ROM USB

PSoc: (extrait de la réponse de Rocketmagnet)

  • Le roi des périphériques analogiques: une puce donnée peut être reconfigurée en interne pour fournir différents périphériques analogiques et numériques
  • nettement plus cher que les PIC
  • IDE: excellent
  • Programmeur à 88 $ (permet-il le débogage?)
  • uniquement les packages SMD

Hélice: (d'après la réponse de Rocketmagnet)

  • MCU multi-cœur: différents cœurs peuvent fonctionner de manière simulée sur différentes tâches
  • élimine / réduit (?) le besoin d'interruptions traditionnelles
  • peu de périphériques matériels, doivent être explicitement codés pour fonctionner sur l'un des cœurs, offre une incroyable flexibilité
  • faible en ce qui concerne les périphériques analogiques
  • IDE: excellent
  • Forfait DIP disponible

Comparaison par application

USB:

"Légende" pour la liste ci-dessous:

  • chargeur de démarrage = chargeur de démarrage USB préprogrammé
  • régulateur de tension = peut être alimenté par bus sans régulateur externe
  • tractions = pas besoin de tractions externes
  • adaptation d'impédance = pas besoin de résistances d'adaptation externes
  • oscillateur de précision = pas besoin de cristal externe

Propriétés de l'appareil le moins cher: (en ordre de prix approximatif)

  • PIC: 8 bits, basse vitesse et pleine vitesse, régulateur de tension, tractions, adaptation d'impédance, protection ESD
  • NXP: 32 bits, chargeur de démarrage, vitesse maximale uniquement, protection ESD
  • Freescale: 8 bits, basse vitesse uniquement, régulateur de tension, adaptation d'impédance, protection ESD
  • Atmel: 8 bits, chargeur de démarrage, vitesse maximale uniquement, régulateur de tension, alimentation, protection ESD
  • STM: 32 bits, chargeur de démarrage, vitesse maximale uniquement, extraction, adaptation d'impédance, protection ESD
  • Silicon Laboratories: 8 bits, basse et pleine vitesse, régulateur de tension, tractions, adaptation d'impédance, oscillateur de précision
  • TI: 32 bits, chargeur de démarrage, basse et pleine vitesse, autres propriétés inconnues
  • PSoc: configurable en tant que module, autres propriétés inconnues
  • Hélice: 32 bits, bitbanging seulement

Ethernet:

  • PIC: appareil le moins cher avec PHY intégré

1
Quelques notes ici: Propeller n'a pas du tout d'interruption et il n'y a pas de support pour le débogage dans l'IDE officiel. Au lieu de cela, le mécanisme de débogage préféré semble être de connecter l’élément à un téléviseur et d’utiliser une bibliothèque fournie qui affiche des variables à l’écran. En outre, il n'y a pas de complétion de code, pas de simulateur, pas d'intégration avec les systèmes de gestion de code, une implémentation inhabituelle d'inclus ... De plus, il n'y a pas de périphériques matériels à l'exception des deux compteurs par cœur, à ma connaissance.
AndrejaKo

2
Remarque à propos de l'hélice - Il n'y a PAS d'interruption. Du tout . Si vous avez besoin de quelque chose qui ressemble à une interruption classique, vous créez un noyau de processeur supplémentaire et vous le faites tourner.
Connor Wolf

4
Une telle liste est presque inévitablement inutile et obsolète. Tous les fabricants sont en concurrence les uns avec les autres tout le temps et la plupart essaient de proposer quelque chose dans chaque catégorie - vous faites une enquête lorsque vous avez un besoin, choisissez une solution, et si cela fonctionne, vous pouvez l'exécuter jusqu'à ce que vous ayez un besoin. pour lequel il existe une meilleure solution.
Chris Stratton

2
Pour ce que ça vaut, vous pourriez inclure la ligne MSP430 ici aussi pour sa consommation d'énergie ultra-basse consommation
boardbite

2
"Embedded Systems / Microprocessors" contient des informations similaires sur la manière de choisir un processeur, sur lequel il est également possible de modifier (espérons-le) le maintenir à jour et relativement neutre.
davidcary

7

Votre choix de MCU dépend beaucoup du type de projet sur lequel vous allez travailler. Fabriquez-vous des appareils simples, tels que des feux de vélo clignotants? Développez-vous des prototypes de robots complexes devant traiter de nombreux périphériques et capteurs bizarres?

Je travaille surtout sur ce dernier. Le principal problème pour moi est d’essayer de trouver des microcontrôleurs dotés du jeu de périphériques que je veux. C'est très difficile car nos exigences ne semblent pas être courantes. Nous voulons des fonctionnalités telles que 5 canaux PWM, 5 décodeurs Quadrature, 2 ports SPI non standard et un UART avec entrée / sortie inversée.

Les seuls microcontrôleurs que j'ai vus qui peuvent gérer facilement ce type d'exigences sont le PSoC et l'hélice.

Jetons d'hélice

L’hélice est constituée de huit MCU 32 bits dans une seule puce. Si vous voulez un type de périphérique, vous devez simplement programmer l’un des MCU pour effectuer ce travail. Ainsi, vous pouvez avoir ce que vous voulez.

PSoC

Les PSoC sont disponibles en deux versions, 3 et 5. Le 3 est un noyau 8051 et le 5 est un cortex M3 ARM. La puce contient également des blocs analogiques et numériques reconfigurables qui peuvent être transformés en une vaste gamme de périphériques: convertisseurs ADC, filtres, amplificateurs opérationnels, convertisseurs DAC, SPI, UART, décodeur en quadrature, générateur CRC, etc.

L'environnement de développement est fantastique. Vous avez l’édition habituelle du code source d’un IDE typique, mais vous avez aussi un éditeur de schémas. Vous pouvez littéralement câbler n'importe quel circuit numérique, en connectant les périphériques avec des grilles, des bascules, etc. Vous avez besoin de 5 PWM? Facile, il suffit de les insérer dans le schéma, de les câbler et de partir. Vous pouvez même écrire vos propres périphériques dans Verilog si vous voulez quelque chose qui n’est pas fourni. Une grande partie de votre application peut simplement être implémentée dans ce type de matériel.

L'avantage réel est que vous pouvez vous en tenir à une seule puce, sachant qu'elle peut traiter un grand nombre de projets que vous souhaitez réaliser à l'avenir. Ce que je trouvais ennuyeux avec les PIC était de fouiller en permanence dans des dizaines de dispositifs à la recherche de celui qui possédait le périphérique particulier dont j'avais besoin. Maintenant, je n'ai pas ce problème.


L'hélice est un concept curieux. Je dois penser un peu à celui-là. En ce qui concerne PSoC: j’en ai tenu compte par le passé en raison de son incroyable souplesse, mais la nécessité de disposer d’un programmeur à 250 $ a largement contribué à son efficacité.
ARF

@ArikRaffaelFunke - Le programmeur coûte seulement 88 dollars , soit moins de la moitié du prix de l' ICD3 .
Rocketmagnet

@ArikRaffaelFunke - une autre considération est l'emballage. Si vous envisagez de créer vos propres prototypes, il est beaucoup plus facile de travailler avec des packages DIP. La plupart des PIC et des AVR ATmel sont proposés en DIP, tout comme l'hélice. Les PSoC 3 et 5 ne le font pas.
tcrosley

3
schmartboard a une solution facile à utiliser smt to dip: youtube.com/watch?v=-32orELxkpE
hulkingtickets

1
@ quantum231: Je l'ai envisagé mais: 1) Les FPGA semblaient généralement plus grands et plus coûteux que les microcontrôleurs (et les robots manquent souvent désespérément d'espace). Et 2) je n'ai pas beaucoup d'expérience avec les FPGA, et il est toujours fastidieux d'apprendre un ensemble d'outils et une façon de penser complètement différents pour une application mineure.
Rocketmagnet


3

Utiliser plus d'une plateforme, c'est bien. Sélection du meilleur pour chaque travail et disponibilité du code et des exemples liés au travail.

La plupart d'entre eux ont de bons outils de développement, arduino a un studio visuel, pic a un excellent outil et d'autres aussi. Donc, pour moi, c’est avec quelle rapidité et quelle facilité je peux bien faire le travail, + combien de personnes travaillant en open source travaillent sur la même chose?


Mais comment trouver de telles informations sans être trompé par le fouillis marketing? Je veux dire, nous devons trouver des personnes qui ont utilisé le matériel et la chaîne d’outils pour obtenir toute cette information. Comment trouvez-vous de telles communautés dans votre travail? Ou est-ce que vous vous appuyez sur ce que l'ingénieur d'applications vous dit?
Quantum231

Vous pouvez poser des questions sur divers forums tels que celui-ci. Expliquez votre application et demandez de l'aide
Visual Micro

2

Les microcontrôleurs sont un monde qui évolue rapidement, il existe de nombreux avantages à apprendre sur les puces "en" actuelles et le plus connu des IDE est d'obtenir l'aide de la communauté. En tant que PIC, je dirais que l'Aduino a probablement le meilleur IDE et les meilleures cartes de développement pour les débutants pour le moment et que vous pouvez ajouter beaucoup à une carte aduino de base sans toucher au fer à souder.

Toute personne utilisant un aduino pour la vie réelle voudra peut-être bientôt passer à autre chose, mais à ce moment-là, vous aurez appris beaucoup d’électronique numérique de base et un bon sous-ensemble de C pour utiliser facilement quelque chose de plus approprié.

Comme quelqu'un vous a dit que vous choisissiez la puce de votre projet, j'ai vu quelques projets utilisant des puces ARM comme simples capteurs de température ou convertisseurs AD, de la même manière que j'ai vu des aduinos et des PIC 16 poussés à leur limite pour générer un jeu Space Invaders, des FPGA sont galso reat et il est bon de comprendre le format HDL si vous vous engagez sérieusement dans la conception électronique .. mais malheureusement, il n’ya pas beaucoup de projets dans le monde réel où vous aurez besoin d’utiliser un logiciel. c’est là que l’uC 8 bits règne en maître


Je vois, quelles sont les limites d'Arduino qu'une personne pourrait amener une personne à aller au-delà d'eux? ARM a-t-il plus de puissance de calcul que PIC et Arduino, a-t-il des périphériques absents dans PIC et Arduino ou son enchaînement d'outils est-il supérieur à celui existant pour PIC et Arduino? Pourquoi autant de bruit sur les puces basées sur ARM. Je sais qu'ils consomment très peu d'énergie, mais pourquoi ARM serait-il choisi pour des projets "sérieux"?
quantum231

1

Étant donné que bon nombre des réponses publiées concernent l'utilisation par les amateurs, voici diverses recommandations destinées uniquement aux développeurs professionnels.

Configuration minimale nue
Si la MCU ne remplit pas toutes ces conditions, elle ne doit pas être utilisée.

  • En production depuis au moins 1 an.
  • Les erreurs de silicium sont disponibles et ont été révisées au moins une fois.
  • Chien de garde interne.
  • Détection interne de basse tension / baisse de tension.
  • Mémoire flash sur puce.
  • Protection ESD.
  • JTAG / SWD ou une interface de débogage à un seul fil.
  • Le noyau utilise des octets de 8 bits et la signature du complément à 2.
  • Échantillons et cartes d'évaluation facilement disponibles.
  • A le support technique réactif directement du fabricant.

Panneaux d'avertissement - Matériel MCU
Ce sont des choses avec lesquelles il ne faut pas perdre de temps en 2019.

  • Modes d'adressage obscurs qui doivent être gérés par le programmeur. Y compris l'utilisation de mots-clés obscurs et non standard afin d'accéder aux données de la ROM.
  • Mémoire de pile importante ou limitations de profondeur de pile.
  • 16 bits int, ce qui entraîne à son tour tous les dangers cachés des promotions d’entiers en langage C.
  • Impossible d'effectuer une arithmétique 16 ou 32 bits sans commencer à bouillir.
  • Ne pas intercepter si vous exécutez du code dans les sections de données.
  • Aucun tampon de trace d'instruction.
  • Livré avec des périphériques matériels exotiques pour lesquels vous n’avez aucune utilité.

Panneaux d'avertissement - chaîne d'outil

  • S'appuie sur des simulateurs de logiciels sur PC ou sur une sorte de chargeur de démarrage, au lieu de flasher l'ensemble du MCU et d'utiliser l'exécution / le débogage sur puce.
  • Ne vient pas avec les pilotes / exemples / bibliothèques pré-faites écrits par des professionnels. S'appuie sur les développeurs qui réinventent la roue, ou sur des forums Internet / open source.
  • Le tube cathodique du compilateur C ne remplit pas les conditions énumérées ici .
  • Le compilateur C contient une longue liste de fonctionnalités C standard qui ne sont pas prises en charge.
  • Le compilateur C ne prend toujours pas en charge C11 (que vous souhaitiez l’utiliser ou non).
  • L'EDI génère plusieurs erreurs de lieur étranges la première fois que vous tentez un programme "hello world".
  • Rencontrer de nombreux bogues IDE ou compilateurs au cours des premières semaines d'utilisation.

C'est trop dogmatique. Vous avez complètement omis le coût, les options de packaging (open source! = Non professionnel), la qualité des périphériques, etc. Je ne suis pas en désaccord avec la plupart des choses, signifie que vous devez connaître le compromis qui a conduit à ces limitations en premier lieu.
awjlogan

@awjlogan Le coût et les options de packaging sont très spécifiques à un projet, il est donc inutile de les aborder ici. Je n'ai pas dit que l'open source n'était pas professionnelle, mais une entreprise qui sous-traite sa chaîne d'outils à l'open source et son soutien à des sites tels que SO n'est pas professionnelle. Bien que les projets open source avec trop peu de contributeurs ne soient pas non plus professionnels, nous pouvons le constater avec les ports de compilateur open source vers divers MCU exotiques. Il ne devrait y avoir aucune raison de choisir un MCU avec un stack limité en 2019.
Lundin

Bien sûr, ils sont spécifiques à un projet mais vous avez immédiatement augmenté votre coût de base en spécifiant 16/32 bits uniquement dans votre liste (analyse rapide de Digikey) et je n’ai pas vu de M0 à 6 broches récemment. Si vous n'avez pas besoin de quelque chose (y compris du temps), n'y dépensez pas plus, ce sont les décisions que vous devriez prendre en tant que professionnel. Mais oui, un bon outillage est essentiel, on ne pourrait pas être plus d'accord.
awjlogan

@awjlogan LPC81X existe depuis plus de 5 ans. Je viens d’apprendre que Cypress PSoC4 était intéressant. Etc. Le nombre de broches n'est pas souvent un argument, mais seulement la taille et le type de paquet. Si vous pouvez tolérer QFN ou BGA, vous pouvez obtenir de très petits jetons.
Lundin

d’accord sur ce point, vos choix se réduisent à une taille réduite (identique pour toutes les architectures). Mon point de vue général est que bien que toutes les choses sur votre liste soient souhaitables, vous devriez également être suffisamment informées pour savoir quand les casser.
awjlogan

0

Si vous optez pour des tâches générales pouvant comporter des traitements analogiques et numériques, j'aurais préféré PSoC pour son IDE, son débogueur et son grand nombre de choses que vous pouvez faire avec ceux-ci.

J'ai utilisé PSoC3 au collège pour mes projets et c'est assez simple à maîtriser. La seule chose à faire est que si vous avez besoin de puces de performance, vous devrez quand même les acheter séparément. Il a assez de ports. Donc, si vous recherchez des puces de performance avec un kit de développement, préférez des composants séparés.


1
Il serait peut-être utile d’ajouter un peu plus d’informations sur le PSoC pour le rendre plus utile. Quelques autres réponses le couvrent déjà.
PeterJ

@PeterJ: Je voulais donner ceci comme commentaire pour la réponse de Rocketmagnet mais je n'ai aucune réputation pour le commenter.
ganesh737

Y at-il une raison pour laquelle vous n’avez pas opté pour un design basé sur le softcore, comme l’utilisation de Nios II sur FPGA Altera ou de microblaze / picoblaze sur FPGA Xilinx? Ils peuvent être utilisés pour obtenir le même effet que le PSoC et, selon moi, constituent à bien des égards un choix supérieur.
Quantum231

1
@ quantum231: Je l'accepterais, mais la principale contrainte pour moi à cette époque était le budget, qui était disponible gratuitement dans notre département électronique.
ganesh737
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.