Como programar o STM32 via USB com IDE Arduino (e sem precisar do gravador)

Depois de uma longa pausa estamos aqui novamente, hoje com uma dica para quem precisa programar o STM32 com IDE Arduino, mas não quer (ou não pode) gastar quase o mesmo preço da placa em um gravador especial para essa finalidade.

Isso acontece porque o STM32 não vem pronto com um bootloader Arduino (pelo menos o STM32 que eu comprei não veio). Assim, a porta micro USB da placa serve basicamente para alimentação.

O que vamos fazer é gravar um novo firmware no STM32 e configurar a IDE para que esta reconheça a placa. Assim, depois do procedimento você pode simplesmente plugar um cabo USB na sua placa e gravar pela IDE como você faz com outras placas Arduino.

A placa de desenvolvimento STM32

A placa de desenvolvimento STM32, também chamada de Blue Pill, é uma alternativa interessante para projetos de IoT (Internet das Coisas) e automação em geral, graças ao seu microcontrolador ARM Cortex M3 de 32 bits, que oferece um ótimo desempenho.

O STM32 conta com dois cristais osciladores, um de 8MHz e outro de 32KHz, este segundo usado em conjunto com o relógio de tempo real (RTC) interno o que possibilita a operação da placa em modo “deep sleep”, ideal para projetos alimentados por baterias.

Visualmente parecida com o Arduino Nano, a placa STM32 tem 128K de memória flash, SRAM de 20K, 37 pinos de GPIO e conexão micro USB.

No esquema acima podemos ver a pinagem da placa, com suas 3 portas seriais, 2 portas I2C, 2 portas SPI, 1 porta CAN e pinos PWM.

A maioria dos pinos podem ser usados com módulos e sensores que trabalham com 5V de nível de sinal, mas recomendo verificar a pinagem na imagem acima para ver quais pinos suportam 5V e quais aceitam somente 3.3V de nível de sinal.

O que você vai precisar para seguir este tutorial

Para fazer a gravação do firmware do STM32 vamos precisar:

O conversor USB Serial FTDI já foi usado aqui em outros posts, por exemplo no Como programar o Arduino Pro Mini com conversor FTDI e no Programe o módulo bluetooth HC-05 com conversor FTDI.

O módulo FTDI é um componente multiuso, já que você pode usá-lo para programar um Arduino Pro, uma Lilypad, um módulo bluetooth, um Xbee, o ESP8266 ou outros módulos que tenham comunicação via UART/Serial.

Gravando o firmware no STM32 F103C8

O nosso primeiro passo é fazer o download do firmware, neste link.

Em seguida, faça o download do STM32 Flasher, o programa responsável pela gravação do firmware na placa.

Conecte o módulo FTDI no STM32 seguindo o esquema abaixo. Vamos usar os pinos A9 (TX) e A10 (RX) da placa, que correspondem à interface serial 1, conforme pinagem mostrada anteriormente. Não esqueça de selecionar 5V no jumper do módulo FTDI.

Na placa STM32, altere o jumper BOOT0 para a posição 1, conforme a imagem do circuito. Isso colocará a placa em modo de programação para que possamos gravar o firmware:

Agora execute o STM32 Flasher (aqui estou usando a versão 2.8.0). No Windows, ele está no menu de programas com o nome de Demonstrator GUI:

Na tela principal, selecione a porta serial correspondente ao módulo FTDI instalado. Na imagem abaixo, estamos usando a porta COM22.

Clique em Next e se tudo estiver ok serão apresentadas as telas abaixo (clique na imagem para ampliar), com o dispositivo reconhecido e uma tela com as informações da placa. Estamos usando um STM32F1 com 128K de memória flash:

Agora escolha o arquivo do firmware com extensão bin que você baixou anteriormente, e coloque/selecione o caminho na caixa Download from file.

Clique em Next para que a gravação do firmware seja iniciada:

O processo de gravação é bem rápido, como você pode ver na imagem acima. Finalizado, saia do STM32 Flasher, desconecte o FTDI da placa e conecte o STM32 diretamente no computador usando um cabo USB.

Antes de configurar a IDE, retorne o jumper da placa STM32 para o MODO DE OPERAÇÃO e reinicie a placa.

Configuração do STM32 com IDE Arduino

Na IDE do Arduino, acesse o menu Arquivo -> Preferências e coloque a seguinte URL no campo URLs Adicionais de Gerenciadores de Placas:

http://dan.drown.org/stm32duino/package_STM32duino_index.json

Sua tela deve ficar assim:

Clique em ok para sair da tela de configurações. Em seguida acesse o menu Ferramentas -> Placa e selecione a Generic STM32F103C Series:

Selecione no menu Ferramentas a porta serial (COM) correspondente à sua placa STM32 e faça um teste usando o nosso conhecido “Blink”, que vai piscar o led onboard da placa:

//Programa: Teste blink STM32
//Autor: Arduino e Cia

void setup() 
{
  //PC13 = Led Onboard STM32
  pinMode(PC13, OUTPUT);
}

void loop() 
{
  digitalWrite(PC13, HIGH);
  delay(1000);             
  digitalWrite(PC13, LOW); 
  delay(1000);             
}

Repare que no caso do STM32 o LED onboard está configurado na porta PC13.

Em alguns casos talvez seja necessária a instalação de drivers adicionais da placa, que você pode encontrar neste link.

Gostou do post STM32 com IDE Arduino? Confira outros posts sobre IoT aqui mesmo no Arduino e Cia!

5/5 - (3 votos)

Related posts

Programando o ATtiny85 com gravador USBasp

by Arduino e Cia
4 anos ago

Display Nokia 5110 com DHT11 e Arduino

by Arduino e Cia
11 anos ago

Como usar o WifiManager com ESP32 e ESP8266

by Arduino e Cia
2 anos ago
Sair da versão mobile