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
fonte
Respostas:
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:
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.
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.
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.
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.
Quase todas as variantes em que trabalhei têm toneladas de temporizadores e outros periféricos e você nunca pode ter o suficiente. :)
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:
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.
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.
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.
fonte
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!
fonte
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.
fonte
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.
fonte
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.
+++++++++++
fonte