Executando um exemplo da CMSIS DSPLIB para o MSP432

CMSIS DSPLIB
Este post faz parte da série CMSIS DSPLIB para o MSP432. Leia também os outros posts da série:

Caro leitor, no último artigo abordamos sobre como compilar a biblioteca CMSIS DSPLIB para os microcontroladores ARM Cortex-M4 da Texas instruments, mais especificamente para a linha MSP432 que une as características de baixo consumo da já consagrada linha MSP430 com o poder de processamento compatível com o dos núcleos ARM Cortex-M (podendo ser empregado também nas linhas Stellaris e Tiva). Esse microcontrolador é bem interessante para os desenvolvedores que já utilizam a linha MSP430 já que apesar do núcleo ARM Cortex-M, os periféricos são herdados da linha MSP430.

 

Para testar nossa biblioteca utilizaremos um exemplo fornecido junto à própria, entretanto, por ser um exemplo para a linha Tiva/Stellaris, serão necessários alguns pequenos ajustes.

 

De antemão, indico que o leitor crie alguns templates facilitando sua vida em novos projetos, visto que o processo de configuração é semelhante ao apresentado no artigo passado, com exceção da compilação da biblioteca. Desta maneira você pode apenas criar cópias dos templates e ir modificando os nomes de acordo com a necessidade.

 

 

Iniciando a configuração

 

Para começar, iremos importar um template com a MSP432WARE DriverLib já configurada. Após devidamente configurado, este formará a base para nosso teste e seus próximos projetos.

 

Dentro do Code Composer Studio (estou utilizando a versão 6.2 do CCS) acesse o “Resource Explorer”, um recurso bastante interessante que permite acessar exemplos. documentação e drivers dos microcontrolares. Neste ponto você já deve ter a “MSP432WARE” instalada (neste momento estou utilizando a versão 3.50.00.02), caso não tiver, realize o procedimento para intala-la.

 

Expanda a MSP432WARE e depois “Libraries >> Driver library >> MSP432P4xx >> Example Projects”. Você tem duas opções, uma que linka os arquivos da biblioteca com a pasta padrão em seu computador, inclusive com a biblioteca pre-compilada, o que acelera bastante a compilação do projeto (empty_project), e uma segunda opção que já traz dentro do próprio projeto os arquivos necessários (empty_project_from_source), algo interessante quando você não quer ficar dependente da versão de biblioteca instalada no computador (facilitando o compartilhamento do projeto). Importe a que achar mais interessante, ao final renomeie o projeto para torná-lo simples de ser identificado como um template no futuro.

 

Com o projeto renomeado, iremos criar um novo PATH VARIABLE, assim como realizamos no artigo anterior. Este servirá para apontar para a pasta da CMSIS que contém tanto os headers como a biblioteca que você já compilou anteriormente. Clique em “Resource >> Linked Resource” e então adicione um novo “Path variable”, este deverá apontar para a pasta da CMSIS.

 

Clique com o botão direito sobre o projeto e selecione “Properties”. Vá até ao submenu “Build >> MSP432 Compiler >> Processor Options” (para o Stellaris ou Tiva estes serão diferentes, mas a sequência é a mesma). Verifique se o “Target processor” está como “7M4”, se o “Designate code state” está em “16” e se o “floating point support” está em “FPv4SPD16”.

 

Agora em “Optimization”, em “Optimization level” selecione “off”, e em “speed vs size” selecione a opção que melhor se adequar, eu tenho preferido manter no nível “2”, mantendo um bom equilíbrio entre tamanho e desempenho. Neste ponto prefiro manter a otimização desativada para não interferir no processo de debug.

 

Expanda “Advanced options” e selecione “Assembler options”. Marque o ítem “Use unified assembly language (--ual)”.

 

Em “Advanced Options >> Predefined Symbols”, Adicione os seguintes valores “ARM_MATH_CM4” e “__FPU_PRESENT=1” (ambos sem as aspas).

 

Agora em “Include Options” adicione um “#include search path”, clique em adicionar, após isso clique em “Variables” e busque pela PATH VARIABLE que você criou. Após isso clique em “Extend” e selecione a pasta “Include”.

 

Em “Runtime Model Options” selecione “On” em “Place each function in a separate subsections”.

 

Agora fica faltando apenas linkar a biblioteca CMSIS já compilada, o arquivo “.lib” que você gerou anteriormente. Vá em “MSP432 Linker >> File Search Path”, clique em adicionar em “include library file or… (--library, -l)” e depois em “Variables”. busque pela PATH VARIABLE que você criou. Após isso clique em “Extend”. Na árvore procure pela pasta “lib” até encontrar a subpasta onde você salvou o “.lib” (neste ponto vem a importância de salvar o lib junto da pasta da CMSIS).

 

Incluindo a library anteriormente compilada
Figura 1 - Incluindo a library compilada

 

Após clicar em OK o projeto já estará praticamente pronto, mas para usufruir da DSPLIB é necessário incluir seu header. Utilize o código a seguir como referência para o “main.c

 

 

Neste ponto você pode tentar realizar um “Build” para ver se não surgiu nenhum problema (e ele não deve surgir).

 

 

Testando a CMSIS

 

Com base neste nosso template executaremos nosso exemplo da CMSIS DSPLIB. Escolhi o exemplo de filtro FIR por ter um resultado bastante “visual”, mas o mesmo processo pode ser empregue nos outros exemplos para que possa avaliar outras funcionalidades da biblioteca.

 

Para um microcontrolador das linhas Stellaris ou Tiva seria apenas um processo de copiar os arquivos necessários e compilar, mas no MSP432 surge a necessidade de realizarmos uma pequena modificação. O watchdog herdado dos MSP430 precisa ser desabilitado logo no início do “main”. Caso este procedimento não for realizado, o cão-de-guarda será disparado e irá resetar o microcontrolador.

 

Além disso, para já incluir alguma funcionalidade da DRIVERLIB iremos acionar o led presente no GPIO P1.0 durante a execução do processamento, tornando possível verificar o tempo de processamento com um analisador lógico ou mesmo com um osciloscópio.

 

Para o teste crie uma cópia do template e renomeie como desejado. Agora iremos importar os arquivos referentes ao exemplo. Clique com o botão direito sobre o nome do projeto e selecione “Add Files…”. Na janela seguinte navegue até a pasta da CMSIS, então “DSP_Lib >> Examples >> arm_fir_example >> ARM”. Selecione os arquivos “arm_fir_data.c”, “arm_fir_example_f32.c”, “math_helper.c”, “math_helper.h” e “Abstract.txt” (este opcional), conforme a figura a seguir. Selecione “Copy Files” para evitar de modificar os arquivos originais dentro da pasta da CMSIS.

 

Incluindo os arquivos do exemplo
Figura 2 - Incluindo os arquivos do exemplo

 

Neste ponto é necessário realizar um mix entre o código do arquivo “arm_fir_example_f32.c” e do “main.c”, introduzindo no arquivo do exemplo o #include referente a DRIVERLIB e também a função para desabilitar o Watchdog. Não é um processo complicado e você pode realizá-lo sem problemas, mas para facilitar sua vida você poderá copiar todo o código a seguir e substituir o código do arquivo “arm_fir_example_f32.c”. Lembre-se de ao final excluir o arquivo “main.c” para não gerar duplicidade e erros de compilação. Isto pode ser feito excluindo o arquivo do build ou então deletando-o (o que pode gerar menos problemas no futuro).

 

 

O resultado do exemplo é apresentado na figura a seguir, onde um sinal senoidal é sobreposto a outro de maior frequência e com o filtro FIR é possível isolar apenas a fundamental. Na launchpad, caso ocorra algum erro na verificação dos resultados será aceso o led vermelho (P1.0), caso tudo corra corretamente será aceso o led verde (P2.1).

 

Exemplo da CMSIS DSPLIB - Resultado do exemplo, sinal de entrada e filtrado
Figura 3 - Resultado do exemplo, sinal de entrada e filtrado

  

Caro leitor, chegamos ao final deste artigo. Espero que seja útil nos seus próximos projetos. Para dúvidas e comentários utilize o campo abaixo.

 

Até a próxima.

Outros artigos da série

<< Compilando a CMSIS DSPLIB para os Cortex M4 da TI
Este post faz da série CMSIS DSPLIB para o MSP432. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Haroldo Amaral
Doutorando em Eng. Elétrica pela Poli-USP, mestre em Eng. Elétrica pela UNESP-Bauru e graduado em Tecnologia em Sistemas Biomédicos pela FATEC-Bauru. Um apaixonado por eletrônica que adora passar seu tempo "queimando alguns componentes" e escovando alguns bits. Entre outras paixões estão a música, uma boa reunião com os amigos, papear sobre tecnologia e afins.

Deixe um comentário

avatar
 
  Notificações  
Notificar