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:
- Da placa STM32 F103C8
- Um conversor USB Serial FTDI FT232RL
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!
Como usar o st-link v2 no lugar desse conversor? é possivel?