Como escolher uma plataforma MCU? [fechadas]


43

Existem inúmeras plataformas de MCU e, quando alguém se acostuma a uma, geralmente reluta em mudar para outra plataforma.

Minha pergunta é: se alguém começasse a usar um MCU para tarefas de uso geral hoje, como alguém escolheria um? Quais são os pontos de venda exclusivos das diferentes plataformas?


2
Informe-nos os tipos de projetos e volumes que você tem em mente e isso nos ajudará a responder à pergunta.
Rocketmagnet

3
O objetivo geral é muito amplo. Não faz sentido usar o mesmo uC para piscar um LED de bicicleta e para um RTOS com um LCD colorido de alta resolução.
Wouter van Ooijen

1
Sim, o ideal é ter vários chips com os quais você esteja familiarizado para diferentes problemas de tamanho - e estar pronto para comprar um novo, caso seja adequado exclusivamente para uma tarefa.
22812 Chris Stratton

2
@WoutervanOoijen A idéia com esta pergunta foi a seguinte: existem muitas tarefas com as quais qualquer plataforma pode lidar facilmente (ou seja, tarefas de uso geral). Um é então completamente livre para escolher entre plataformas. Nesse caso, os "fatores leves", por exemplo, facilidade de uso, contagem de componentes externos, etc. se tornam dominantes. - Eu queria descobrir o que as diferentes plataformas fazem bem / mal em comparação com outras.
ARF

7
RELIGIÃO
vicatcu

Respostas:


30

Um ano depois, dei uma palestra sobre o assunto de escolher microcontroladores (levou cerca de 1,5 horas). O público era de programadores e fabricantes de software de alto nível. A maioria do público não tinha experiência prévia em μC, o restante tocou apenas com o Arduino. O número de pessoas na platéia era de cerca de 30. Portanto, esse foi um multicast, em oposição a uma clínica individual.

O slide principal da conversa foi o seguinte:

Dimensões

para comparar microcontroladores. A lista está em ordem decrescente.

  • Ambiente de desenvolvimento (cadeia de ferramentas)
    • Ambiente de desenvolvimento
    • Eu mencionei o ambiente de desenvolvimento?
  • Apoio, suporte
    • Notas de aplicação
    • Apoio de colegas: conhecimento tribal, amigos, fóruns, os códigos [sic]
  • Recursos
    • Memória
    • Periféricos
    • Perícia em computação
  • Consumo de energia
  • Custo

ps

Eu devo definir o escopo ao qual esta resposta minha é limitada. Eu vejo essa pergunta de seleção de plataforma através de dois tipos de lentes. O primeiro é um protótipo. O segundo é um desenvolvedor de equipamentos profissionais com preços nas ruas da ordem de US $ 3 mil e quantidades em centenas por ano. A lente amadora também não está muito longe. Nesses casos, o custo incremental do microcontrolador é pequeno, comparado ao custo de desenvolvimento ou ao custo do equipamento profissional no qual o microcontrolador entra.

Há, é claro, uma perspectiva muito diferente da produção em massa. Quando alguém escolhe um microcontrolador para um dispositivo barato que será produzido em grandes quantidades (os brinquedos tradicionais são um bom exemplo), eles serão movidos pelo custo do hardware. Uma economia modesta no custo de hardware multiplicada por um grande volume de produção (em centenas de milhares ou mais) pode justificar a dor de usar um ambiente de desenvolvimento pesado e um microcontrolador de preço acessível com um suporte mediocre.


Você se concentra no ambiente de desenvolvimento. Faz sentido para mim. Quais foram suas conclusões?
ARF

@ArikRaffaelFunke Bem, essas balas no meu post acima são as conclusões. Não é conclusivo o suficiente? Meu objetivo na palestra foi: (1) fornecer uma lista mínima das perguntas que precisam ser feitas durante o processo de seleção. (2) Mostre onde e como procurar respostas. Evitei especificamente tirar conclusões difíceis ao longo das linhas: a família X é boa se ..., a família Y é boa se ...
Nick Alexeev

1
Para pequenos volumes e requisitos típicos, sim. Mas às vezes você precisa escolher a melhor tecnologia. Ou, se o volume for grande, uma dor de cabeça bastante substancial no desenvolvimento pode ser justificada se economizar alguns centavos por widget - incluindo ter soluções baseadas em partes concorrentes testadas e prontas para saltar.
22812 Chris Stratton

1
@ChrisStratton O consumo de energia é outra coisa [além dos efeitos de alto volume de produção], que às vezes justificam algumas dores de cabeça. Pouco se pode fazer, se ele quer uma operação com pouca energia, e o UC (que ele escolheu) não pode suportar.
Nick Alexeev

9
O foco no ambiente de desenvolvimento está absolutamente certo. Você poderia ter o melhor chip do mundo, mas se não conseguir programar e depurar a maldita coisa, pode ser um tijolo. Ouvi coisas boas sobre o NXP, mas nenhuma experiência direta. Eu pensei que o Freescale era ruim, mas tentei a TI (MSP e depois o DM36x) e agora o Freescale é um farol brilhante de brilho nos meus olhos. O melhor conselho para QUALQUER ambiente de desenvolvimento: Crie / instale-o em uma máquina virtual e mantenha-o em pleno estado de funcionamento, para que não se quebre ao mover computadores / atualizar o SO, etc ...
John U

25

Como essa pergunta ainda não produziu a comparação de plataformas que eu esperava, tentei criar uma, estudando a literatura e as outras respostas. Talvez isso possa ajudar outra pessoa no futuro.

Informe-me se houver algum erro ou se houver informações que eu possa adicionar.


Comparação de plataformas

Notas sobre a comparação:

  • IDE: comentários relacionados à versão gratuita

FOTO:

  • de longe os chips mais baratos
  • muitos têm reguladores de tensão internos
  • a um determinado preço, normalmente têm mais e melhores periféricos
  • quase padrão da indústria: muito boas bibliotecas e suporte ao desenvolvedor
  • IDE: simulação e depuração offline completas baseadas em NetBeans, excelentes e sem tinta
  • depuradores de terceiros: cerca de US $ 25
  • ampla gama de pacotes
  • pontos de venda exclusivos: 1. XLP = dispositivos de baixa potência extra disponíveis; 2. Muitos chips modernos possuem o Módulo de detecção capacitiva para botões sensíveis ao toque, etc.

AVR:

  • O AVR geralmente fica atrás dos periféricos tradicionais e é um pouco mais caro. No geral, no entanto, o AVR é ​​muito semelhante aos PICs em funcionalidade e preço.
  • Os chips AVR de 8 bits são mais rápidos que os chips PIC de 8 bits
  • emuladores de terceiros: cerca de US $ 20
  • ampla gama de pacotes

Braço Córtex-M:

  • arquitetura moderna do processador: sem banco de memória, boa multitarefa
  • de longe os dispositivos mais baratos de 32 bits
  • bastante fácil de se mover entre chips diferentes e fabricantes diferentes
  • dispositivos geralmente requerem mais componentes externos que PICs
  • dispositivos USB muito baratos com ROM bootloader: NXP LPC1342 / LPC1343
  • suporte razoável à biblioteca
  • IDE: razoável, sem simulação offline
  • A interface SWD permite programação, depuração e rastreamento no sistema com hardware fácil de construir (
  • chips NXP baratos só vêm em pacotes pequenos ou sem pinos
  • pontos de venda: 1. plataforma mais barata de 32 bits; 2. plataforma mais barata com bootloader USB ROM

PSoc: (da resposta de Rocketmagnet)

  • quando se trata de periféricos analógicos: um determinado chip pode ser reconfigurado internamente para fornecer diferentes periféricos analógicos e digitais
  • significativamente mais caro que os PICs
  • IDE: excelente
  • Programador $ 88 (permite a depuração?)
  • apenas pacotes SMD

Hélice: (da resposta de Rocketmagnet)

  • MCU com vários núcleos: núcleos diferentes podem funcionar de forma simulada em diferentes tarefas
  • elimina / reduz (?) a necessidade de interrupções tradicionais
  • poucos periféricos de hardware, devem ser explicitamente codificados para serem executados em um dos núcleos, oferecem flexibilidade incrível
  • fraco quando se trata de periféricos analógicos
  • IDE: excelente
  • Pacote DIP disponível

Comparação por Aplicação

USB:

"Legenda" para a lista abaixo:

  • bootloader = carregador de inicialização USB pré-programado
  • regulador de tensão = pode ser alimentado por barramento sem regulador externo
  • pullups = sem necessidade de pullup externo
  • correspondência de impedância = sem necessidade de resistores de correspondência externos
  • oscilador de precisão = sem necessidade de cristal externo

Propriedades do dispositivo mais barato: (em aproximadamente ordem de preço)

  • PIC: regulador de tensão de 8 bits, velocidade baixa e máxima, pullups, correspondência de impedância, proteção ESD
  • NXP: 32 bits, carregador de inicialização, somente velocidade máxima, proteção ESD
  • Freescale: 8 bits, somente baixa velocidade, regulador de tensão, correspondência de impedância, proteção ESD
  • Atmel: 8 bits, carregador de inicialização, somente velocidade máxima, regulador de tensão, pullup, proteção ESD
  • STM: 32 bits, carregador de inicialização, somente velocidade máxima, pullup, correspondência de impedância, proteção ESD
  • Laboratórios de silício: regulador de tensão de 8 bits, velocidade baixa e máxima, pullups, correspondência de impedância, oscilador de precisão
  • TI: 32 bits, carregador de inicialização, velocidade baixa e máxima, outras propriedades desconhecidas
  • PSoc: configurável como módulo, outras propriedades desconhecidas
  • Hélice: 32 bits, apenas bitbanging

Ethernet:

  • PIC: dispositivo mais barato com PHY integrado

1
Algumas notas aqui: O Propeller não tem interrupções e não há suporte para depuração no IDE oficial. Em vez disso, o mecanismo de depuração preferido parece ser o de conectar a uma TV e usar uma biblioteca fornecida que exibe variáveis ​​na tela. Além disso, não há conclusão de código, simulador, integração com sistemas de gerenciamento de código, implementação incomum de inclusões ... Também não existem periféricos de hardware, exceto os dois contadores por núcleo, tanto quanto eu sei.
precisa saber é o seguinte

2
Nota sobre a hélice - NÃO possui interrupções. De todo . Se você precisar de algo que se assemelhe a uma interrupção tradicional, gire um núcleo de CPU adicional e faça com que ele gire em espera.
Connor Lobo

4
Essa lista é quase inevitavelmente inútil e desatualizada. Todos os fabricantes estão competindo entre si o tempo todo e a maioria tenta oferecer algo em cada categoria - você faz uma pesquisa quando precisa, escolhe uma solução e, se funcionar, corre com ela até que você precise para o qual existe uma solução melhor.
Chris Stratton

2
Por que vale a pena, você pode incluir a linha MSP430 aqui, bem como para a sua ultra-baixo consumo de energia
boardbite

2
"Sistemas embarcados / microprocessadores específicos" possui informações semelhantes sobre como escolher um processador, que da mesma forma pode ser editado para (espero) mantê-lo atualizado e relativamente neutro.
Davidcary

7

Sua escolha do MCU depende muito do tipo de projeto em que você estará trabalhando. Você está fabricando dispositivos de alto volume, baratos e simples, como luzes de bicicleta? Você está desenvolvendo robôs protótipos complexos que precisam lidar com vários dispositivos e sensores de IO bizarros?

Eu principalmente trabalho neste último. O principal problema para mim é tentar encontrar microcontroladores com o conjunto periférico que desejo. Isso é muito difícil, pois nossos requisitos não parecem ser comuns. Queremos coisas como 5 canais PWM, 5 decodificadores em quadratura, 2 portas SPI não padrão e um UART com E / S negada.

Os únicos MCUs que eu vi que podem lidar com esse tipo de requisitos com facilidade são o PSoC e o Propeller.

Chips de hélice

O Propeller é basicamente oito MCUs de 32 bits em um único chip. Se você deseja algum tipo de periférico, basta programar um dos MCUs para executar esse trabalho. Então você pode ter o que quiser.

PSoC

Os PSoCs têm dois sabores, 3 e 5. O 3 é um núcleo 8051 e o 5 é um córtex M3 do BRAÇO. Também estão incluídos no chip blocos reconfiguráveis ​​digitais e analógicos que podem ser transformados em uma ampla gama de periféricos: ADCs, filtros, amplificadores operacionais, DACs, SPI, UART, decodificador em quadratura, gerador CRC, etc.

O ambiente de desenvolvimento é fantástico. Você tem a edição normal do código-fonte de um IDE típico, mas também possui um editor esquemático. Você pode literalmente conectar qualquer circuito digital que desejar, conectando os periféricos a portões, chinelos, etc. Precisa de 5 PWMs? Fácil, basta colocá-los no esquema, conectá-los e sair daqui. Você pode até escrever seus próprios periféricos no Verilog, se desejar algo que não é fornecido. Grande parte do seu aplicativo pode ser simplesmente implementada nesse tipo de hardware.

O benefício real é que você pode ficar com um chip, sabendo que ele pode enfrentar muitos dos projetos que você deseja realizar no futuro. O que eu achava irritante nos PICs estava constantemente vasculhando dezenas de dispositivos procurando aquele que tinha o conjunto periférico específico de que eu precisava. Agora não tenho esse problema.


A hélice é um conceito curioso. Eu tenho que pensar um pouco sobre isso. Em relação ao PSoC: Eu considerei aqueles no passado devido à incrível flexibilidade, mas a necessidade de um programador de US $ 250 o tornou praticamente um não-iniciador para mim.
9/12

@ArikRaffaelFunke - O programador custa apenas 88 dólares , menos da metade do preço do ICD3 .
Rocketmagnet

@ArikRaffaelFunke - outra consideração é a embalagem. Se você planeja criar seus próprios protótipos, é muito mais fácil trabalhar com pacotes DIP. A maioria dos PICs e ATmel AVRs vem em DIPs, assim como a Hélice. O PSoC 3 e 5 não.
precisa saber é o seguinte

3
SchmartBoard tem um fácil de usar smt a solução de imersão: youtube.com/watch?v=-32orELxkpE
hulkingtickets

1
@ quantum231: Eu considerei isso, mas: 1) Os FPGAs pareciam geralmente maiores e mais caros que os microcontroladores (e os robôs geralmente têm muito pouco espaço). E 2) Eu não tenho muita experiência com FPGAs, e é sempre um aborrecimento ter que aprender um conjunto de ferramentas completamente diferente e uma maneira de pensar apenas para algumas aplicações menores.
Rocketmagnet


3

Usar mais de uma plataforma é bom. Selecionando o melhor para cada trabalho e também disponibilidade de código e exemplos relacionados ao trabalho.

A maioria deles possui boas ferramentas de desenvolvimento, o arduino possui o visual studio, o pic possui uma ótima ferramenta e outras também. Então, para mim, é com que rapidez e facilidade posso fazer o trabalho bem, + quantas pessoas de código aberto trabalham na mesma coisa?


Mas como encontrar essas informações sem ser enganado pela confusão de marketing. Quero dizer, temos que encontrar pessoas que usaram o hardware e o conjunto de ferramentas para obter todas essas informações. Como você encontra essas comunidades em seu trabalho? Ou é que você confia no que o engenheiro de aplicativos diz?
precisa saber é o seguinte

Você pode fazer perguntas em vários fóruns como este. Explique sua inscrição e peça ajuda
Visual Micro

2

Os microcontroladores são um mundo em rápida mudança, há muitas vantagens em aprender sobre os chips "in" atuais e o mais notável do IDE mais popular é obter ajuda da comunidade. Como pessoa do PIC, eu diria que o Aduino provavelmente tem as melhores placas de IDE e desenvolvimento para iniciantes no momento e você pode adicionar muito a uma placa aduino básica sem tocar em um ferro de solda.

Qualquer pessoa que use um aduino para coisas da vida real em breve pode querer seguir em frente, mas a essa altura você já terá aprendido muita eletrônica digital básica e um bom subconjunto de C para usar facilmente algo mais adequado.

Como alguém mencionou que você escolhe o chip para o seu projeto, já vi alguns projetos usando chips ARM como simples sensores de temperatura ou conversores AD, da mesma forma que vi aduinos e PIC 16 sendo levados ao limite para gerar um jogo de invasores espaciais, os FPGAs você é galso reat e é bom entender o HDL se você estiver seriamente envolvido no design de eletrônicos .. mas, infelizmente, não existem muitos projetos no mundo real nos quais você precisará usar um dos trabalhos: volume baixo, design rápido e preço limitado. é aqui que o uC de 8 bits reina supremo


Entendo, quais são as limitações do Arduino de uma pessoa fazer com que ela se mova além delas? O ARM tem mais poder de processamento do que o PIC e o Arduino, possui periféricos não presentes no PIC e no Arduino, ou sua cadeia de ferramentas é superior ao que existe para o PIC e o Arduino? Por que tanto barulho sobre chips baseados em ARM. Sei que eles têm um consumo de energia muito baixo, mas por que mais o ARM seria escolhido para projetos "sérios"?
precisa saber é o seguinte

1

Como muitas das respostas postadas se concentram no uso de entusiastas, aqui estão várias recomendações direcionadas apenas a desenvolvedores profissionais.

Requisitos mínimos nus
Se o MCU não atender a todos eles, não deverá ser usado.

  • Está em produção há pelo menos 1 ano.
  • A errata de silicone está disponível e foi revisada pelo menos uma vez.
  • Cão de guarda interno.
  • Detecção interna de baixa voltagem / queda de energia.
  • Memória flash no chip.
  • Proteção ESD.
  • JTAG / SWD ou alguma interface de depuração de fio único.
  • O núcleo usa bytes de 8 bits e assinatura de complemento de 2.
  • Amostras e placas de avaliação prontamente disponíveis.
  • Possui suporte técnico responsivo diretamente do fabricante.

Sinais de alerta - hardware MCU
Essas são coisas com as quais você não deve perder tempo no ano de 2019.

  • Modos de endereçamento obscuros que devem ser tratados pelo programador. Incluindo o uso de palavras-chave obscuras e fora do padrão para acessar dados da ROM.
  • Limitações severas de memória ou profundidade da pilha.
  • 16 bits int, que por sua vez vem com todos os perigos ocultos das promoções com números inteiros na linguagem C.
  • Não é possível executar aritmética de 16 ou 32 bits sem começar a ferver.
  • Não intercepta se você executar o código nas seções de dados.
  • Nenhum buffer de rastreamento de instruções.
  • Vem com periféricos de hardware exóticos que você não usa.

Sinais de alerta - cadeia de ferramentas

  • Confia em simuladores de software no PC ou em algum tipo de carregador de inicialização, em vez de exibir o MCU inteiro e usar a execução / depuração no chip.
  • Não vem com drivers / exemplos / bibliotecas pré-criados escritos por profissionais. Confia nos desenvolvedores reinventando a roda ou em fóruns da Internet / código aberto.
  • O CRT para o compilador C não atende aos requisitos listados aqui .
  • O compilador C vem com uma longa lista de recursos C padrão que não são suportados.
  • O compilador C ainda não suporta C11 (independentemente de você pretender usá-lo ou não).
  • O IDE vomita vários erros estranhos de vinculador em você na primeira vez que você tenta um programa "olá mundo".
  • Encontrando muitos erros de IDE ou de compilador durante as primeiras semanas de uso.

Isso é excessivamente dogmático. Você omitiu completamente o custo, as opções de embalagem (código aberto! = Não profissional), a qualidade dos periféricos, etc. etc. Eu não discordo em geral com a maior parte disso, mas coisas como "limitações de pilha" significa que você precisa conhecer o trade-off que levou a essas limitações em primeiro lugar.
awjlogan 11/01

@awjlogan As opções de custo e embalagem são muito específicas do projeto, portanto, não faz sentido abordar aqui. Eu não disse que o código aberto não é profissional, mas uma empresa que terceiriza sua cadeia de ferramentas para código aberto e seu suporte a sites como o SO não é profissional. Embora os projetos de código aberto com poucos colaboradores também não sejam profissionais, como podemos ver nas portas do compilador de código aberto para várias MCUs exóticas. Não deve haver razões para escolher um MCU com pilha limitada no ano de 2019.
Lundin

Claro, eles são específicos do projeto, mas você aumentou imediatamente o custo da linha de base especificando 16/32 bits apenas na sua lista (verificação rápida do Digikey) e não vi um M0 de 6 pinos recentemente. Se você não precisar de algo (incluindo tempo), não gaste dinheiro extra com isso, essas são as decisões que você deve tomar como profissional. Mas, sim, boas ferramentas são tão essenciais que não poderia concordar mais.
awjlogan 11/01

O @awjlogan LPC81X existe há mais de 5 anos. Recentemente, eu descobri o Cypress PSoC4, que parece interessante. E assim por diante. O número de pinos não costuma ser um argumento, apenas o tamanho e o tipo do pacote. Se você pode tolerar QFN ou BGA, pode obter chips muito pequenos.
Lundin

concordamos com isso, suas escolhas diminuem em tamanho pequeno (o mesmo para qualquer arquitetura). Meu argumento geral é que, embora todas as coisas da sua lista sejam desejáveis, você também deve ser informado o suficiente para saber quando quebrá-las.
awjlogan 11/01

0

Se você está realizando tarefas de uso geral que podem ter processamento analógico e digital, eu teria preferido o PSoC por seu IDE, depurador e grande número de coisas que você pode fazer com isso.

Eu usei o PSoC3 na faculdade para meus projetos e é muito simples de dominar. A única coisa é que se você precisar de alguns chips de desempenho, ainda precisará obtê-los separadamente. Tem portas boas o suficiente. Portanto, se você estiver procurando alguns chips de desempenho junto com o kit de desenvolvimento, é melhor optar por componentes separados.


1
Pode valer a pena adicionar um pouco mais de informações no PSoC para tornar isso mais útil. Algumas outras respostas já o abordam.
precisa

@ PeterJ: Eu queria dar isso como um comentário para a resposta do Rocketmagnet, mas não tenho reputação de comentar.
precisa saber é o seguinte

Existe uma razão para você não ter optado pelo design baseado em softcore, como usar o Nios II no Altera FPGA ou o microblaze / picoblaze em um Xilinx FPGA? Eles podem ser usados ​​para obter o mesmo efeito que o PSoC e eu diria que, de muitas maneiras, é uma escolha superior.
precisa saber é o seguinte

1
@ quantum231: Eu aceitaria isso, mas a principal restrição para mim naquele momento era o orçamento e isso estava disponível gratuitamente em nosso departamento de eletrônica.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.