Como programar a placa MSP430 Launchpad?

Índice

MSP430 Programming MSP430F5529 LaunchPad board

Procurando um microcontrolador de consumo ultrabaixo para otimizar suas aplicações de medição portáteis? Não procure mais, a família MSP430 da Texas Instruments é a solução! Com vários dispositivos que oferecem diversos conjuntos de periféricos voltados para aplicações específicas, a família MSP430 é uma solução poderosa e eficiente para suas necessidades.

O que é o microcontrolador MSP430?

O microcomputador de chip único da série MSP430 é um processador de sinal misto com um computador de conjunto de instruções reduzido (RISC). Com uma poderosa CPU RISC de 16 bits, registros de 16 bits e geradores de constantes, ele foi projetado para oferecer a máxima eficiência de código. Além disso, com cinco modos de baixo consumo de energia e um oscilador controlado digitalmente (DCO), você pode obter maior duração da bateria e tempos de ativação rápidos dos modos de baixo consumo de energia para o modo ativo em menos de 6 µs.

Características do microcontrolador MSP430

O microcontrolador da série MSP430 possui os seguintes recursos, que o tornam um dispositivo poderoso e versátil que pode ser usado para uma variedade de aplicações:

Forte capacidade de processamento:

O MSP430 é um microcontrolador de 16 bits que utiliza uma arquitetura RISC (Reduced Instruction Set Computing) com 27 instruções principais e um grande número de instruções analógicas. Possui sete modos de endereçamento de operando de origem e quatro modos de endereçamento de operando de destino. Além disso, possui muitos registros e memória de dados no chip que podem participar de várias operações, garantindo uma programação eficiente.

Velocidade de processamento rápida:

O MSP430 pode atingir um tempo de ciclo de instrução de 40 ns quando acionado por um oscilador de cristal de 25 MHz. A largura de dados de 16 bits, o ciclo de instrução de 40 ns e o multiplicador de hardware (que pode realizar operações de multiplicação e adição) permitem que ele implemente alguns algoritmos de processamento de sinal digital, como FFT.

Consumo de energia ultrabaixo:

O MSP430 tem um consumo de energia extremamente baixo devido às suas características únicas que ajudam a reduzir a tensão do chip e a controlar a frequência do relógio. A faixa de alimentação de tensão para o MSP430 é de 1,8-3,6 V. Portanto, com uma frequência de relógio de 1 MHz, o consumo de corrente do chip é tão baixo quanto 165 μA, e o consumo de energia mais baixo no modo de retenção de RAM é de apenas 0,1 μA.

Recursos ricos no chip:

O microcontrolador MSP430 possui muitos periféricos integrados, como temporizadores, UART, SPI, I2C, ADC, DMA, portas de E/S e controlador USB. Esses periféricos podem ser combinados para atender a vários requisitos de aplicação. Por exemplo, o temporizador watchdog garante uma reinicialização rápida em caso de falha do programa. Os temporizadores de 16 bits têm função de captura/comparação e um grande número de registros de captura/comparação que podem ser usados para contagem de eventos, geração de temporização e PWM. O ADC de hardware de 10/12 bits tem uma alta taxa de conversão, de até 200 kbps, tornando-o adequado para a maioria das aplicações de aquisição de dados. Ele pode acionar diretamente até 160 segmentos de LCD e implementar duas conversões D/A de 12 bits.

Modelos da família MSP430

Série MSP430x15x/16x/161x

A série MSP430x15x/16x/161x vai ainda mais longe com dois temporizadores de 16 bits integrados, um conversor A/D rápido de 12 bits, conversor D/A duplo de 12 bits, uma ou duas interfaces de comunicação síncrona/assíncrona serial universal (USART), I2C, DMA e 48 pinos de E/S. E para aplicações que exigem muita memória e grandes requisitos de pilha C, a série MSP430x161x oferece endereçamento RAM estendido.

Série 430F2xx

A série 430F2xx é uma MCU de consumo ultrabaixo baseada em flash que opera na faixa de tensão de 1,8 V a 3,6 V e oferece um desempenho de até 16 MIPS. Ela inclui um oscilador de consumo ultrabaixo (VLO), resistores pull-up/pull-down internos e uma opção de baixo número de pinos.

O consumo de energia ultrabaixo é o seguinte:

  • 0,1 μA RAM (modo de espera)
  • 0,3 μA (modo hibernação) (VLO)
  • 0,7 μA (modo relógio em tempo real)
  • 220μA/MIPS (modo ativo)
  • Despertar rápido do modo de hibernação em menos de 1μs.

Especificações do dispositivo:

  • Opções de flash: 1 KB – 120 KB
  • Opções de RAM: 128B – 8 KB
  • Opções GPIO: 10, 16, 24, 32, 48, 64 pinos
  • Opções de ADC: SAR de inclinação de 10 e 12 bits, ADC Σ-Δ de 16 bits
  • Outros periféricos integrados: comparador analógico, multiplicador de hardware, DMA, SVS, DAC de 12 bits, amplificador operacional.

Série MSP430C3xx

A série 430C3xx é uma série antiga de dispositivos ROM ou OTP que opera na faixa de tensão de 2,5 V a 5,5 V e oferece até 32 KB de ROM, 4 MIPS e FLL.

O consumo de energia ultrabaixo é o seguinte:

  • 0,1 μA RAM (modo de espera)
  • 0,9 μA (modo de relógio em tempo real)
  • 160μA/MIPS (modo ativo)
  • Despertar rápido do modo de hibernação em menos de 6μs.

Especificações do dispositivo:

  • Opções de ROM: 2 KB – 32 KB
  • Opções de RAM: 512B – 1 KB
  • Opções GPIO: 14, 40 pinos
  • Opções ADC: SAR de inclinação de 14 bits
  • Outros periféricos integrados: controlador LCD, multiplicador de hardware.

Série MSP430F5xx

A série 430F5xx é uma nova série de produtos baseados em flash com o menor consumo de energia operacional e um desempenho de até 25 MIPS dentro de uma faixa de tensão de trabalho de 1,8 V a 3,6 V. Ela inclui um módulo inovador de gerenciamento de energia otimizado para o consumo de energia.

O consumo de energia ultrabaixo é o seguinte:

  • 0,1 μA RAM (modo de espera)
  • 2,5 μA (modo de relógio em tempo real)
  • 165μA/MIPS (modo ativo)
  • Despertar rápido do modo de hibernação em menos de 5μs.

Especificações do dispositivo:

  • Opções de flash: até 256 KB
  • Opções de RAM: até 16 KB
  • Opções ADC: SAR de 10 e 12 bits
  • Outros periféricos integrados: USB, comparador analógico, DMA, multiplicador de hardware, RTC, USCI, DAC de 12 bits.

Como programar o MSP430?

Neste projeto, usaremos a placa MSP430F5529. Aqui estão todas as etapas:

  1. Escolha uma placa de desenvolvimento ou programador compatível com o microcontrolador MSP430. As opções mais populares incluem o MSP430 LaunchPad e o MSP430 Programmer.
  2. Instale as ferramentas de software necessárias para programar o MSP430, como o Code Composer Studio ou o Energia.
  3. Conecte a placa de desenvolvimento ou o programador ao seu computador via USB.
  4. Escreva seu código em um editor de texto ou ambiente de desenvolvimento integrado (IDE) e salve-o como um arquivo .c ou .cpp.
  5. Abra seu código no Code Composer Studio ou Energia e configure as configurações do projeto conforme necessário.
  6. Compile o projeto para verificar se há erros e gerar um arquivo binário.
  7. Programe o microcontrolador MSP430 usando o programador ou a placa de desenvolvimento e o arquivo binário gerado.
  8. Teste o seu código no MSP430 e faça os ajustes ou modificações necessários.

Ferramentas necessárias

  • Code Composer Studio (CCS)
  • Emulador MSP430: MSP-FET, MSP430-JTAG-TINY-V2, MSP-GANG, MSP430-BSL.
  • Placa de desenvolvimento MSP430: MSP430 Launchpad, MSP-EXP430G2ET ou qualquer outra. 
  • Programador MSP430: MSP430 Launchpad, MSP-FET, Black Magic Probe, etc.

Nota: Se você não tiver acesso a uma placa de desenvolvimento MSP430 real, poderá usar um emulador MSP430 para simular o comportamento do microcontrolador no seu computador. Essa pode ser uma ferramenta útil para depurar e testar seu código antes de programá-lo em um dispositivo real.

Passo 1: Configurando o hardware

Conecte a placa de desenvolvimento MSP430 Launchpad ao seu computador usando o cabo USB. A placa deve acender e os LEDs na placa devem piscar. Isso indica que a placa está ligada e funcionando corretamente.

Passo 2: Instalação do Code Composer Studio (CCS)

Faça o download e instale o Code Composer Studio (CCS) no site oficial. O CCS é um Ambiente de Desenvolvimento Integrado (IDE) que permite escrever, compilar e depurar código para microcontroladores MSP430.

Install and Setup Code Composer Studio
Install and Setup Code Composer Studio

Etapa 3: Criando um novo projeto

Abra o Code Composer Studio e crie um novo projeto. Selecione MSP430F5529 como dispositivo de destino e escolha o modelo de projeto apropriado. Dê um nome ao seu projeto e salve-o no local desejado.

Create a New Project in CCS
Create a New Project in CCS

Passo 4: Escrevendo o código

No editor CCS, escreva o seguinte código para fazer piscar o LED na placa de desenvolvimento MSP430 Launchpad:

Write the blinking LED code in CCS Editor
Write the blinking LED code in CCS Editor

Aqui está o código do LED piscando:

				
					#include <msp430.h>

void delay(void)
{
    volatile unsigned int i;
    for (i = 0; i < 50000; i++);
}

int main(void)
{
    WDTCTL = WDTPW + WDTHOLD;       // Stop WDT
    P1DIR |= BIT0;                  // P1.0 output
    while(1)
    {
        P1OUT ^= BIT0;              // Toggle P1.0 using XOR operator
        delay();                    // Delay
    }
}

				
			

Etapa 5: Construindo e compilando o código

Clique no botão Build (Compilar) no CCS para compilar seu código. Isso irá gerar um arquivo executável que pode ser programado no microcontrolador MSP430.

Build Project in CCS to Compile the Code
Build Project in CCS to Compile the Code

Etapa 6: Programação da placa de desenvolvimento MSP430 Launchpad

Conecte o programador MSP430 ao seu computador e à placa de desenvolvimento MSP430 Launchpad. No CCS, clique em "Run > Load" (Executar > Carregar) para programar o código no microcontrolador. O LED na placa deve piscar de acordo com o código que você escreveu.

Programming the Code onto the MSP430 microcontroller
Programming the Code onto the MSP430 microcontroller

Etapa 7: Depuração e solução de problemas

Se você encontrar algum erro ou problema no seu código, use as ferramentas de depuração do CCS para localizar e corrigir o problema. Você também pode consultar a documentação e os recursos online para obter ajuda e suporte adicionais.

Exemplos de código MSP430

Código de exemplo ADC10

Este código demonstra como usar o módulo ADC10 (Conversor Analógico-Digital) no MSP430 para medir a tensão de um sensor externo. O código inicializa o módulo ADC10, configura os pinos GPIO e lê o valor ADC.

				
					#include <msp430.h>

void init_ADC10(void)
{
    ADC10CTL0 = ADC10ON | ADC10SHT_2 | SREF_0 | ADC10IE;
    ADC10CTL1 = INCH_0 | SHS_0 | ADC10DIV_0 | ADC10SSEL_0 | CONSEQ_0;
    ADC10AE0 |= BIT0;
}

unsigned int read_ADC10(void)
{
    unsigned int result = 0;
    ADC10CTL0 |= ENC | ADC10SC;
    while(ADC10CTL1 & ADC10BUSY);
    result = ADC10MEM;
    ADC10CTL0 &= ~ENC;
    return result;
}

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    init_ADC10();
    while(1)
    {
        unsigned int adc_value = read_ADC10();
        // Do something with adc_value
    }
}

				
			

Código de exemplo PWM

Este código demonstra como usar o módulo Timer_A no MSP430 para gerar um sinal PWM (modulação por largura de pulso). O código inicializa o módulo Timer_A, configura os pinos GPIO e configura o ciclo de trabalho do sinal PWM.

				
					#include <msp430.h>

void init_Timer_A(void)
{
    TA0CTL = TASSEL_2 | MC_1 | ID_0;
    TA0CCR0 = 1000;
    TA0CCR1 = 500;
    TA0CCTL1 = OUTMOD_7;
}

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= BIT0;
    P1SEL |= BIT0;
    init_Timer_A();
    while(1);
}

				
			

Código de exemplo UART

Este código demonstra como usar o módulo UART (Universal Asynchronous Receiver/Transmitter) no MSP430 para se comunicar com um computador ou outro dispositivo via comunicação serial. O código inicializa o módulo UART, configura os pinos GPIO e envia e recebe dados através da interface UART.

				
					#include <msp430.h>

void init_UART(void)
{
    P1SEL |= BIT1 | BIT2;
    P1SEL2 |= BIT1 | BIT2;
    UCA0CTL1 |= UCSSEL_2;
    UCA0BR0 = 104;
    UCA0BR1 = 0;
    UCA0MCTL = UCBRS0;
    UCA0CTL1 &= ~UCSWRST;
}

void send_UART(char data)
{
    while(!(IFG2 & UCA0TXIFG));
    UCA0TXBUF = data;
}

char receive_UART(void)
{
    while(!(IFG2 & UCA0RXIFG));
    return UCA0RXBUF;
}

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;
    init_UART();
    while(1)
    {
        char received_data = receive_UART();
        // Do something with received_data
        send_UART('X');
    }
}

				
			

MSP430 vs MSP432

MSP430 e MSP432 são duas famílias de microcontroladores da Texas Instruments. O MSP430 é uma família de microcontroladores de 16 bits, enquanto o MSP432 é uma família de microcontroladores de 32 bits. Aqui está uma comparação de algumas de suas principais características:

FeatureMSP430MSP432
Architecture16-bit RISC32-bit ARM Cortex-M4F
Clock SpeedUp to 25 MHzUp to 48 MHz
Operating Voltage1.8 V to 3.6 V1.62 V to 3.7 V
Flash MemoryUp to 256 KBUp to 512 KB
RAMUp to 16 KBUp to 64 KB
ADC10-bit, up to 16 channels14-bit, up to 24 channels
DACNo2 x 12-bit
TimersUp to 6Up to 8
Communication InterfacesUART, SPI, I2CUART, SPI, I2C, USB, Ethernet, CAN
Package TypesDIP, QFP, BGADIP, QFP, BGA

Em resumo, o MSP432 oferece melhor desempenho e mais recursos do que o MSP430, mas também tem um custo mais elevado. O MSP430 pode ser uma escolha melhor para aplicações simples e de baixo consumo de energia, enquanto o MSP432 pode ser mais adequado para aplicações complexas e de alto desempenho.

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Precisa de ajuda?

Rolar para cima

Instant Quote