Comment choisir un microcontrôleur ARM Cortex M3?

26

Sur la base de mes exigences approximatives d'être dans la plage de 36 à 72 MHz, d'avoir 16 Ko + SRAM, 128 Ko + flash, étant programmable en C, j'ai décidé que pour mon application, je veux utiliser un MCU ARM Cortex M3.

La question est, quels critères les gens utilisent-ils pour choisir la version M3 à utiliser? Il existe de nombreux fournisseurs possibles tels que TI, ST, NXP, Freescale, etc., etc.

Un différenciateur principal de mon point de vue serait la facilité de programmation. Idéalement, je le teste sur une carte de développement / développement, suivie d'une implémentation dans mon propre PCB.

JDS
la source
11
C'est une question utile, n'importe qui, veuillez ne pas la fermer car elle est principalement basée sur l'opinion .
Dzarda
2
Choisir le fournisseur de puces n'est qu'une partie du problème. Avez-vous pensé à la chaîne d'outils de développement que vous allez utiliser?
kkrambo
5
Je dirais que l'importance de choisir la puce uC dans une situation comme celle-ci est gravement surestimée. Toutes les puces qui satisfont aux exigences de base feront l'affaire. Si vous vous en tenez au C ou au C ++ et que vous n'avez pas besoin de périphériques sophistiqués, vous pouvez même passer plus tard avec peu d'effort. Je baserais mon choix sur la quantité de soutien que vous pouvez obtenir du www, du fournisseur, des groupes (d'utilisateurs), des listes, des forums, etc. auxquels vous avez facilement accès.
Wouter van Ooijen
5
"Il y a une douzaine de fabricants du même noyau. Quel genre de choses les gens regardent-ils pour les aider à en choisir un?" semble être une belle question pour moi.
Scott Seidman
5
C'est la question la mieux notée dans la liste de nos 250 plus récents, avec trois étiquettes préférées. Avec ces statistiques, s'il s'agit d'OT, nous pourrions envisager de demander pourquoi. Je pense qu'il est assez clair que l'affiche considère la "facilité de programmation" comme l'un des critères qu'il utilise actuellement, et il en demande plus. Sur quatre réponses, une seule fait une recommandation claire pour un contrôleur, et les autres discutent toutes des critères qu'ils utilisent pour faire une sélection. J'ai fait un petit montage qui devrait rendre la question plus sur le sujet, mais cela m'a semblé assez clair avant le montage.
Scott Seidman

Réponses:

19

Je pense que @markt est certainement au bon endroit: Toolchain, périphériques, packages, devkits.

J'en ajouterai quelques-uns et en retirerai peut-être quelques-uns. La chaîne d'outils est certainement importante, mais GRATUITEMENT peut ou non l'être. Parfois, travailler sans véritable support peut être plus cher que vous ne le pensez, et l'utilisation d'un package commercial raisonnable peut en valoir la peine pour une situation donnée. Parfois, il est également important de réussir un audit de licence approfondi, et l'utilisation d'un outil gratuit avec une licence restrictive peut vous mordre plus tard.

Une bonne bibliothèque CMSIS pour supporter le microcontrôleur est un must pour moi. CMSIS - Cortex Microcontroller Software Interface Standard - arm.com/products/processors/cortex-m/… - est une couche d'abstraction matérielle pour les microcontrôleurs de la série Cortex-M. En théorie, si une bibliothèque est conforme à CMSIS, elle est indépendante du fournisseur et il est plus facile d'échanger différentes familles, et vous n'avez pas besoin de réapprendre un environnement à partir de zéro pour pouvoir utiliser la bibliothèque. L'un des aspects attrayants de l'environnement ARM Cortex est la possibilité de changer de plate-forme sans beaucoup de sueur. Si vous choisissez une plate-forme qui n'adhère pas à la structure CMSIS, vous ne pourrez peut-être pas vous déplacer aussi facilement.

Pour moi, des cartes de développement bon marché et pratiques sont un must, mais cela peut ou non être aussi important que d'autres choses (je pense que la série STM32 a des devboards incroyables). Si la famille a des cartes de développement très pratiques et bon marché, vous êtes plus susceptible de trouver de l'aide dans une base d'utilisateurs plus grande si vous en avez besoin. En outre, ces puces ont tendance à être dans des packages SMT. Lorsque vous faites sauter inévitablement une puce, ou un port sur une puce, ou un peu sur un port sur une puce, le remplacement de la puce est un PITA impliquant un remaniement SMD. Si vous pouvez acheter deux ou trois planches à 10 $ - 15 $ chacune et les remplacer au fur et à mesure que vous les cassez, vous ne PENSEZ PAS à faire cette retouche SMD!

Pensez "Extras". Vous pourriez avoir besoin de quelque chose au-delà de ce qui est considéré comme un "périphérique". Par exemple, vous avez peut-être de gros besoins en Bluetooth et vous pouvez choisir d'aller avec Nordic Semiconductor pour ce type de support. Vous pourriez envisager d'autres choses, comme la facilité de démarrage, etc.

Pensez à la documentation. J'ai été un peu moins impressionné par la difficulté de parcourir une partie de la documentation STM.

Scott Seidman
la source
+1 Tout à fait d'accord. L'année dernière, j'ai commencé avec ARM Cortex-M3 / M4 en utilisant STM32. J'avais presque terminé la conception d'un STM32F207 lorsque nous avons opté pour le STM32F407 en fonction du prix / de la disponibilité. C'était un rendez-vous pour le matériel, et les changements logiciels étaient triviaux. La documentation et la complexité l'ont rendu un peu pénible à apprendre, mais la conception est solide et vaut bien la peine. J'utilise le compilateur GCC (gratuit) pour écrire du code de test et la version d'évaluation gratuite limitée à la taille du code de Keil pour écrire / tester des exemples de pilotes. Notre programmeur possède une licence pour le compilateur Keil complet. Les deux semblent solides.
Tut
1
@NickHalden, "ARM" concède sous licence le cœur ARM aux fabricants de puces qui les conditionnent et ajoutent des périphériques. CMSIS - Cortex Microcontroller Software Interface Standard - arm.com/products/processors/cortex-m/… - est une couche d'abstraction matérielle pour les microcontrôleurs de la série Cortex-M. En théorie, si une bibliothèque est conforme à CMSIS, elle est indépendante du fournisseur et il est plus facile d'échanger différentes familles, et vous n'avez pas besoin de réapprendre un environnement à partir de zéro pour pouvoir utiliser la bibliothèque.
Scott Seidman
1
@YoungMoney Optez pour le moins cher qui vous donnera au moins deux fois les ressources dont vous pensez avoir besoin.
Markt
1
Développez-vous sur grand, juste pour éviter que les choses ne restent coincées. Une fois que vous maîtrisez bien les ressources dont vous avez besoin, réduisez.
Scott Seidman
1
Les chaînes d'outils gratuites sont importantes dans un contexte professionnel, non pas à cause des coûts, mais à cause de la sécurité d'accès - optez pour une chaîne d'outils verrouillée, et votre capacité à maintenir le projet est menacée par des licences qui peuvent expirer ou ne pas être disponibles pour votre ordinateur portable de voyage ou un collègue, des dongles qui peuvent se perdre, des serveurs de licences qui peuvent être débranchés après quelques années, etc. La plupart des conceptions intégrées ont des durées de vie bien au-delà du matériel de bureau et des versions de système d'exploitation utilisées pour les développer, et pouvoir ressusciter l'original à l'avenir est important!
Chris Stratton
14
  1. Recherchez une chaîne d' outils gratuite , un RTOS et une prise en charge JTAG / SWD à faible coût.
  2. Considérez les packages avec lesquels vous êtes capable / désireux de travailler - si DIP est un must, excluez les fournisseurs de silicium qui n'offrent pas de packages DIP.
  3. Regardez quels périphériques sont proposés et ce que vous voudrez / aurez probablement besoin.
  4. Recherchez le rapport qualité-prix - utilisez un ou plusieurs sites Web de grands fournisseurs d'électronique pour comparer des pommes avec des pommes.

Compte tenu de votre désir pour les conseils de développement, considérez ce qui est disponible là-bas.

Si vous venez d'une autre plateforme (PIC, Atmel, etc.), acceptez qu'il y aura une courbe d'apprentissage équitable dans de nombreux domaines dans le passage à ARM, mais cela en vaut vraiment la peine.

markt
la source
Oui - les chaînes d'outils gratuites sont plus importantes pour la sécurité de l'accès futur / d'ordinateur alternatif / d'ingénieur alternatif à la chaîne d'outils que pour le coût. Pour les pièces Cortex, les chaînes d'outils sont assez universelles, il est donc plus important de savoir que vous pouvez les programmer avec un périphérique d'interface SWD facile à travailler qui sera disponible ou recréable et peut être piloté à partir de votre système d'exploitation actuel (et futur) de choix.
Chris Stratton
5

Si vous n'avez pas de préférence marquée (par exemple, le prix, la taille, la puissance, ainsi que les autres produits répertoriés), je considérerais qui vous soutient. Si le fabricant ne répond pas à vos questions, cela pourrait être un problème. Ou ont-ils un distributeur local avec un FAE (Field Applciation Engineer) que vous pouvez demander? C'est particulièrement important pour les petites entreprises et les hobbists.

Certaines pièces peuvent ne pas être disponibles en petites quantités. Par exemple, ceux qui ont des DRAM dans le même package sont destinés aux gros acheteurs (> 10 000 unités).

Brian Carlton
la source
2

Probablement STM32L151VBT6 convient à vos besoins. Même nous l'avons utilisé dans notre entreprise, il a un coût modéré et bon en termes de consommation d'énergie. vous obtiendrez également la plupart des ressources de conception sur http://www.st.com .

Les principales caractéristiques du microcontrôleur STM32L151VB sont:

Plateforme ultra basse consommation Alimentation 1,65 V à 3,6 V

Plage de températures de -40 ° C à 85 ° C / 105 ° C

Mode veille 0,3 μA (3 broches de réveil)

0,9 μA en mode veille + RTC

Mode d'arrêt 0,57 μA (16 lignes de réveil)

Mode d'arrêt 1,2 μA + RTC

Mode de fonctionnement basse consommation 9 μA

Mode Run 214 μA / MHz

Fuite d'E / S ultra faible 10 nA

Temps de réveil <8 μs

Noyau: processeur 32 bits ARM®Cortex ™ -M3

De 32 kHz à 32 MHz max

33,3 pic DMIPS (Dhrystone 2.1)

Unité de protection de la mémoire

Réinitialisation et gestion des approvisionnements

BOR ultra-sûr et de faible puissance (réinitialisation de la panne) avec 5 seuils sélectionnables

POR / PDR à très faible puissance

Détecteur de tension programmable (PVD)

Sources d'horloge

Oscillateur à cristal de 1 à 24 MHz

Oscillateur 32 kHz pour RTC avec étalonnage

RC interne haute vitesse 16 MHz ajusté en usine (+/- 1%)

RC basse consommation interne 37 kHz

Faible puissance multispeed interne 65 kHz à 4,2 MHz

PLL pour horloge CPU et USB (48 MHz)

Chargeur de démarrage préprogrammé

USART pris en charge

Aide au développement

Débogage du câble série pris en charge

JTAG et trace pris en charge

Jusqu'à 83 E / S rapides (73 E / S 5 V tolérantes), toutes mappables sur 16 vecteurs d'interruption externes

Souvenirs:

Jusqu'à 128 Ko de Flash avec ECC

Jusqu'à 16 Ko de RAM

Jusqu'à 4 Ko de véritable EEPROM avec ECC

Registre de sauvegarde de 80 octets

Pilote LCD pour jusqu'à 8x40 segments

Soutenir l'ajustement du contraste

Prise en charge du mode clignotant

Convertisseur élévateur à bord

Périphériques analogiques riches (jusqu'à 1,8 V)

CAN 12 bits 1 Msps jusqu'à 24 canaux

Canaux DAC 2 12 bits avec tampons de sortie

2x comparateurs à très faible consommation (mode fenêtre et capacité de réveil)

Contrôleur DMA 7x canaux

Interface de communication 8x périphériques

1x USB 2.0 (PLL interne 48 MHz)

3x USART (ISO 7816, IrDA)

2x SPI 16 Mbits / s

2x I2C (SMBus / PMBus)

10x temporisateurs: 6x 16 bits avec jusqu'à 4 canaux IC / OC / PWM, 2x temporisateur de base 16 bits, 2x temporisateurs de surveillance (indépendants et fenêtre)

Jusqu'à 20 canaux de détection capacitifs prenant en charge l'unité de calcul CRC à touches tactiles, linéaires et rotatives, ID unique 96 bits

Myanju
la source