Kinetis vs STM32


8

Estou pesquisando um novo aplicativo de controles industriais e, a partir de minhas pesquisas, reduzi-o a 2 microcontroladores que parecem se encaixar bem no aplicativo. O STM32 e o Kinetis. Ambos parecem muito capazes de fazer o trabalho e eu já usei o STM32 em um aplicativo diferente e não relacionado. Gosto da família STM32, já que existe uma grande variedade de configurações que são, na maioria das vezes, compatíveis com pinos. O Kinetis, no entanto, parece ser um pouco mais caro para o processador buck / memória.

Então, minhas perguntas para alguém com um pouco mais de experiência com isso são ... Quais são algumas das vantagens e desvantagens de cada família?

Tenho certeza de que não há exatamente uma escolha errada aqui para o meu aplicativo, mas gostaria de mais alguns detalhes de alguém que não seja Freescale e ST. Sei que os detalhes do meu aplicativo podem ser um fator aqui, mas é um aplicativo muito amplo no que diz respeito à funcionalidade. Nosso maior limite que nos levou a mudar para um controlador diferente é a memória (~ 16k RAM 256k flash).

Qualquer introspecção seria muito bem recebida. obrigado


O STM32F4 possui um Cortex-M4 com ponto flutuante e DSP, e até 1 MB de flash e 192 kB de RAM. Uma placa barata está disponível com vários periféricos interessantes.
Leon Heller

Configurações (mesmo pino para fora diferente memória e poder de processamento) e maturidade .. STM32 é o caminho a percorrer ..
Ktc

Dois entram ... um sai.
joeforker

Respostas:


6

Na STM32 (ST Microelectronics) e na família Kinetis (Freescale), trabalhei apenas na família de processadores STM32 e, portanto, poderei detalhar minha experiência com o STM32 e esperando que outra pessoa possa fazer o mesmo pela Kinetis, então você pode contrastar os dois. Esta lista pode não estar completa e é simplesmente baseada na minha experiência.

PROS:

  1. O ST fornece um conjunto enorme de bibliotecas para cada um dos processadores que você obtém gratuitamente. Essas bibliotecas contêm uma lista enorme de funções necessárias para fazer a maior parte da interface básica de baixo nível com o hardware e podem tornar sua vida muito mais simples.

    por exemplo, void GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_InitStruct) Isso inicializa o periférico GPIOx de acordo com os parâmetros especificados no GPIO_InitStruct.

    Simplesmente preencha a estrutura do GPIO (e há exemplos de projetos para guiá-lo nesse processo) e chame a função GPIO_init. Isso evita que você precise procurar pelo menos 4-5 registros e descobrir o que cada bit deve ser.

  2. Seus microcontroladores têm a funcionalidade de proteção contra leitura, que pode ajudá-lo a proteger seu IP até certo ponto, se não completamente. Existem toneladas de microcontroladores por aí, que realmente não fazem isso muito bem.

  3. Eles possuem uma família de microcontroladores de baixa potência, sua série L1, que possuem vários níveis diferentes de recursos de economia de energia que podem ser ativados / desativados quando necessário.

  4. Embora existam muitos fabricantes que estão fazendo suas versões dos núcleos ARM CM3, os chips da série F da ST tiveram algumas revisões e, embora não completamente livres de bugs, agora estão bastante maduros.

  5. Quase todas as variantes em que trabalhei têm toneladas de temporizadores e outros periféricos e você nunca pode ter o suficiente. :)

  6. Para começar, eles têm alguns exemplos de projetos que podem ser programados em seus painéis de avaliação, quase sempre oferecem gratuitamente. Embora eu ache que a maioria dos outros fabricantes faria o mesmo.

CONTRAS:

  1. Embora as bibliotecas acima mencionadas definitivamente ajudem bastante, alguns nomes de funções não são intuitivos e leva um tempo para entender suas convenções de nomenclatura. Isso não é verdade para toda a biblioteca, mas há um bom código, que não é bem comentado, e você realmente precisará lê-lo para descobrir o que está fazendo.

  2. Se você estiver usando as bibliotecas e quiser ativar a verificação MISRA para o seu projeto, receberá muitos erros / avisos, pois o código deles não parece ser compatível com MISRA. Você precisará encontrar uma maneira de excluir suas bibliotecas da sua verificação MISRA. Existem maneiras de contornar isso, mas elas exigem um pouco de trabalho para isso.

  3. A documentação da ST para os processadores em que trabalhei é um pouco ruim. Suas folhas de dados não são muito bem escritas. As informações não estão em um documento central / principal. Há o que eles chamam de manual de referência, toneladas de notas de aplicação e pelo menos uma folha de dados. Você precisa vasculhar esses documentos algumas vezes para encontrar as informações que procura.

    Eles geralmente descrevem portas GPIO, e uma configuração recomendada para um dos bits
    talvez seja descrita 50 páginas depois.

É tudo o que consigo pensar no momento, espero que isso lhe dê uma idéia dos produtos STM32. Vou acrescentar mais, se eu puder pensar em outra coisa.

Uma sugestão seria obter uma placa de avaliação para os dois tipos de microcontroladores (Kinetis one e STM32), que possuem os periféricos que você procura, e brincar com eles.

Isso lhe dará uma sensação realmente boa para qual deles se adapta melhor às suas necessidades.


1
Eu gostaria que os fabricantes evitassem que suas bibliotecas definissem e usassem seus próprios identificadores para tudo. A configuração de uma porta GPIO requer a consulta de todos os registros de funções no manual para saber o que significam todos os modos diferentes; ser capaz de escrever código usando essas informações diretamente seria mais útil do que examinar a biblioteca e sua documentação para ver como ela definia as coisas.
Supercat

@supercat Veja o DAVE IDE da Infineon. Você basicamente adiciona o que eles chamam de "APPs" por meio de uma GUI e o DAVE thingy cuida da geração de código para você.
Chi

3

K70 tem silício muito buggy. Frequentemente, os periféricos que você descreveu têm apenas uma funcionalidade leve; por exemplo, é bom usar cache com memória externa, mas se você usar essa memória com o DMA, precisará liberá-lo manualmente. O K70 possui um controlador LCD, mas é quase impossível obter uma resolução melhor que 480x272, que não é melhor do que a alcançada com MCUs padrão. O K70 possui um gerador de relógio monstro, mas apenas alguns periféricos podem usá-lo em vez do relógio do barramento.
O mais importante é que descobri que o complicado gerenciamento de baixa energia simplesmente não funciona!


2

Suponho que você esteja comparando o Kinetis aos processadores STM32F4 Cortex-M4. Na verdade, eu também não os usei, mas os procurei para possível uso em um projeto futuro. Existem também famílias de dispositivos M4 disponíveis na TI-Stellaris e anunciadas pela Atmel e NXP, muitas das quais incluem o processador de ponto flutuante, cargas de portas seriais e temporizadores.

O suporte em termos de software para os processadores (Freescale e ST) fica bem com o Freescale, fornecendo uma biblioteca de interfaces e um RTOS livre de royalties para suas partes. O ST fornece um conjunto de bibliotecas de interface que permitem a configuração e o uso de seus processadores e periféricos.

Os dispositivos ST parecem vencer a guerra da velocidade de processamento com uma velocidade citada de 168MHz usando (IIRC) um amplo barramento de memória para o flash do programa. Isso pode ou não ser importante para você.

As peças Kinetis são as mais maduras, estando disponíveis há quase um ano. Como resultado, agora existe uma família bastante grande de dispositivos em produção com uma ampla gama de interfaces e conjuntos periféricos. As peças do ST só estão disponíveis há cerca de um mês, embora tenham lançado várias peças ao mesmo tempo em que anunciavam a família. A gama de peças aumentará da mesma maneira que a família Cortex-M3.


STM32 está disponível para 2 + anos .. Só F4 está fora por alguns meses, mas F1 / F2 foi para fora lá mais de 2 anos .. Nós estamos usando isso ..
Ktc

Estou ciente de que os processadores baseados no STM32 M3 existem há muito tempo. A questão é baseada nas partes Kinetis (baseadas em M4), então eu estava comparando as famílias de processadores M4 disponíveis.
uɐɪ

De fato .. Mas se você comparar M4 a M3, há muito pouca diferença em termos de resto dos blocos, o que me dá confiança. O braço é o braço de qualquer maneira, não importa qual versão porque vai ser controlado por si só ARM
Ktc

2

Minha experiência com o STM32 e o Kinetis K70 se resume à execução do uClinux nesses processadores (informações detalhadas sobre essas portas do uClinux disponíveis aqui ).

Se você pretende usar RAM externa em seu aplicativo, o K70 seria uma escolha melhor, na minha opinião.


Para elaborar mais detalhadamente no meu post acima, o K70 possui dois caches de 8 KB, um para o barramento I / D (que visa principalmente regiões de memória que podem ser usadas para a execução de código), outro para o barramento do sistema (direciona para memórias "não codificadas" ) Pelo que vemos nos contextos do uClinux, os caches ajudam a melhorar o desempenho geral do sistema de uma maneira um tanto séria.
vladimir khusainov

1

Recentemente, respondi a uma consulta de cliente intimamente relacionada a esse tópico. Felizmente, esses comentários serão úteis.

+++++++++++

Para destacar as diferenças entre o K70 com o STM32F2:

  • K70 é Cortex-M4 enquanto STM32F2 é Cortex-M3. Em outras palavras, o K70 fornece unidades FPU e DSP de hardware no chip.

  • O K70 pode executar o núcleo do Cortex-M a 150 MHz (embora os dispositivos atualmente disponíveis sejam limitados a 120 MHz). STM32F2 é limitado a 120 MHz.

  • O K70 fornece interfaces DDR e NAND Flash no chip, permitindo densidades muito altas para dispositivos de memória externa.

  • O K70 possui cache no chip (2 caches separados de 8 KB para E / D e barramento do sistema). Isso realmente inicializa o desempenho de memórias externas de uma maneira muito séria.

  • O K70 fornece vários mecanismos de segurança para garantir que o software não possa ser copiado usando ferramentas externas (depuradores JTAG, etc).

  • O K70 possui um controlador LCD integrado e uma interface de toque integrada.

  • conjunto semelhante de interfaces de E / S, mas isso precisa ser medido em relação aos requisitos de aplicação específica.

No geral, se você estiver usando memória externa em seus aplicativos e / ou precisar de uma interface GUI, o K70 será um vencedor claro. Além disso, o K70 é mais eficiente, de um modo geral.

+++++++++++


O K7x possui ADC de 16 bits com PGA, enquanto o STM32 não possui.
Mehmet Fide 16/01
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.