Programando a Bluepill via USB com Bootloader Arduino
Programando a Bluepill via USB com Bootloader Arduino

Programando a Bluepill via USB com Bootloader Arduino 4

Em um post anterior, mostrei como fazer a programação de uma placa Bluepill com um gravador Stlink genérico. Neste post, irei mostrar como gravar um bootloader Arduino na placa Bluepill para que ela possa ser gravada através do conector micro USB, facilitando o processo de gravação de novos programas. A partir daí, não precisaremos mais do gravador SWD USB.

Material necessário

Projeto STM32duino

O projeto STM32duino tem por objetivo proporcionar a programação de placas baseadas nos processadores da ST Microelectronics, utilizando o framework Arduino. Isso facilita bastante para iniciantes que já estão acostumados com Arduino iniciarem uma migração e experimentarem outros microcontroladores.

Conexão SWD USB com Bluepill

Para gravar o bootloader Arduino em uma placa “zerada” ainda é necessário utilizar o gravador SWD USB. Realize a conexão entre o gravador SWD USB STlink e Bluepill da seguinte forma:

Programando a Bluepill via USB com Bootloader Arduino

Gravando o bootloader com STM32CubeProg

O STM32CubeProg é um programa para gravação de arquivos binários nas placas baseadas em microcontroladores da ST Microelectronics. É o caso da BluePill, que possui o microcontrolador STM32F103.

Para baixar o STM32CubeProg, vá até o site da ST e baixe o programa para seu sistema operacional Linux ou Windows. É necessário criar uma conta no site da ST para realizar downloads.

Programando a Bluepill via USB com Bootloader Arduino Programando a Bluepill via USB com Bootloader Arduino

Baixe também o binário do bootloader Arduino.

Após baixado o bootloader, abra o programa STM32CubeProg e clique em “open file”, para abrir o arquivo do bootloader.

Programando a Bluepill via USB com Bootloader Arduino O programa deve mostrar vários endereços de memória do binário.

Programando a Bluepill via USB com Bootloader Arduino

Agora conecte ao computador o gravador SWD USB já interligado com a bluepill. Clique em conectar e verifique se a conexão é identificada no STM32CubeProg.

Programando a Bluepill via USB com Bootloader Arduino Entre no menu Erasing & Programming e clique em “Start Programming” para carregar o binário na BluePill.

Programando a Bluepill via USB com Bootloader Arduino Programando a Bluepill via USB com Bootloader Arduino

Pronto! Agora sua placa já está capacitada para ser programada via USB pela IDE Arduino.

Se conectarmos a placa BluePill via micro USB em um sistema Linux, podemos ver a seguinte mensagem no terminal utilizando o comando dmsg.

Programando a Bluepill via USB com Bootloader Arduino

Gravando um programa pisca LED pela IDE Arduino e porta USB

Caso sua IDE Arduino ainda não esteja configurada com os pacotes para STM32, siga os passos para adicionar suporte para placas STM32.

Copie esta URL nas preferências da sua IDE Arduino. Vá em Arquivos -> preferências -> URLs adicionais para gerenciador de placas.

Programando a Bluepill via USB com Bootloader Arduino

Clique em OK e então vá para o menu do gerenciador de placas para instalar o pacote STM32.

Programando a Bluepill via USB com Bootloader Arduino

No menu Gerenciador de Placas, escolha as opções de acordo com a imagem abaixo.

Programando a Bluepill via USB com Bootloader Arduino

Copie o seguinte código no editor da IDE Arduino que faz piscar o LED presente na Bluepill no pino PC13.

void setup() {
  pinMode(PC13, OUTPUT);
}

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

Agora só resta gravar a placa!

Habilitando a porta serial

Caso a placa não grave automaticamente, será necessário pressionar o botão reset e soltar quando a gravação estiver para iniciar. Para gravar automaticamente, veja os passos abaixo para habilitar a serial via USB.

Ainda é possível utilizar a porta micro USB como serial para enviar e receber mensagens do computador.

Para habilitar, selecione no menu Ferramentas a opção USB Support e USART Support como na imagem abaixo.

Grave um programa que escreve na porta serial e veja a saída no Monitor Serial da IDE.

Programando a Bluepill via USB com Bootloader Arduino

Conclusão

Neste tutorial, aprendemos como gravar um bootloader Arduino na placa BluePill que possui um microcontrolador STM32F103. Com o bootloader, é possível gravar a placa via USB possibilitando o uso fácil através da IDE Arduino, não sendo mais necessário o gravador SWD.

Coloque nos comentários o que você achou deste tutorial, suas dúvidas e sugestões.

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. Olá,

    Ambiente:
    SO Linux Manjaro (atualizado)
    IDE Arduino 1.8.19
    Placa STM32F103 C8T6
    Quando conecto no PC dmesg retorna
    [515221.114134] usb 3-3: new full-speed USB device number 8 using xhci_hcd
    [515221.237486] usb 3-3: device descriptor read/64, error -71
    [515221.467486] usb 3-3: device descriptor read/64, error -71
    [515221.697415] usb 3-3: new full-speed USB device number 9 using xhci_hcd
    [515221.820815] usb 3-3: device descriptor read/64, error -71
    [515222.050804] usb 3-3: device descriptor read/64, error -71
    [515222.157573] usb usb3-port3: attempt power cycle
    [515222.560785] usb 3-3: new full-speed USB device number 10 using xhci_hcd
    [515222.560973] usb 3-3: Device not responding to setup address.
    [515222.767629] usb 3-3: Device not responding to setup address.
    [515222.974026] usb 3-3: device not accepting address 10, error -71
    [515223.097343] usb 3-3: new full-speed USB device number 11 using xhci_hcd
    [515223.115016] usb 3-3: device descriptor read/all, error -71
    [515223.115082] usb usb3-port3: unable to enumerate USB device

    E não consigo conexão via USB. Já testei diversos cabos diferentes e o resultado é o mesmo.

    O que posso fazer?

    1. Olá.

      Por gentileza, para tratarmos sobre isso entre em contato conosco no [email protected].

      Att.
      Vitor Mattos.
      Suporte Técnico MakerHero.

    2. Refiz todo o procedimento e agora o dmesg dá
      [517002.176954] usb 3-3: new full-speed USB device number 15 using xhci_hcd
      [517002.318688] usb 3-3: New USB device found, idVendor=1209, idProduct=beba, bcdDevice= 3.00
      [517002.318703] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
      [517002.318708] usb 3-3: Product: STM32F HID Bootloader
      [517002.318711] usb 3-3: Manufacturer: http://www.serasidis.gr
      [517002.320650] hid-generic 0003:1209:BEBA.0003: hiddev96,hidraw0: USB HID v1.11 Device [www.serasidis.gr STM32F HID Bootloader] on usb-0000:00:14.0-3/input0

      Mas ainda assim não aparece a porta

  2. Excelente artigo Giovanni, isso dá uma produtividade muito boa, será que esse bootloader funciona na blackpill também?