Embedded

STM32 Blue Pill – ARM Cortex M3, baixo custo, alto poder

STM32 Blue Pill

Diversos projetos independem de conexão WiFi e bluetooth, ou às vezes a necessidade é utilizar uma RF qualquer que não as anteriormente citadas. Mas não só isso, então vamos apreciar a STM32 Blue Pill e ver quais suas vantagens.

STM32 Blue Pill specs

Não sei se todas vem assim, mas caso não tenha o bootloader instalado, será necessário fazê-lo previamente. Aqui tenho um ST-Link V2, USBASP e FTDI para gravar o bootloader. O ST-Link é  essa plaquinha da imagem. Não conecte a Blue Pill ao computador antes de configurar o sistema.

A Blue Pill vem com a MCU STM32F103C8, com 64 ou 128KB de flash. O clock é de 72MHz, bem acima dos Arduinos, um pouco abaixo do ESP8266.

Possui 20KB de RAM, conector micro-USB, LED no pino 13. Seu nível lógico é 3v3, regulador de tensão de 300mA.

O hardware

O padrão USB requer um resistor de pullup no data plus de 1k5, mas por alguma razão o valor está errado no R10. Experimente utilizá-lo e em último caso, troque o resistor por 1k5. Não desanime, só estou adiantando o que eventualmente pode vir a ser um problema.

De qualquer modo, não tenho o resistor SMD de 1k5 então estou fazendo a gravação somente pelo FTDI, sem saber se realmente é possível fazer a gravação do sketch pela USB ou não.

Bootloader para STM32 Blue Pill

O bootloader pode ser gravado com USB-Serial, um Arduino Nano ou UNO (veja esse artigo sobre dois modos de gravar firmware, nesse caso) ou com o ST-Link. Claro que é mais fácil a maioria dos makers terem o USB-serial ou Arduino UNO por razões óbvias; o STM32 não é a plataforma mais popular dos embarcados. O procedimento será descrito mais adiante, mas é divertido e simples, primeiro quero descrever a configuração do ST-Link no Linux.

Configurando o ST-Link no Linux

Precisaremos da libusb. Para quem usa derivados de Debian (como Ubuntu), o primeiro passo é instalar a biblioteca. Abra um terminal e digite:

O próximo passo é clonar o repositório do ST-Link. Depois, deveremos compilar e copiar os arquivos relacionados para seus respectivos diretórios.

O ST-Link é um JTAG, que converte os comandos de USB para JTAG. Os comandos acima fazem apenas o primeiro passo, que é criar os diretórios e criar os targets. Para instalar, podemos fazê-lo no home do usuário mesmo, mas prefiro que fique por padrão no sistema.

 

Se o mouse parar de funcionar após o último comando, desconecte e conecte-o novamente. Agora conecte o ST-Link e teste:

O legal mesmo é ter o debugger. Para usá-lo, primeiramente instale o pacote:

E se desejar:

Ou nenhum, se não quiser ter um debugger.

Gravar bootloader no STM32 Blue Pill

Linux; apenas Linux. Não uso Windows, mas para ajudar, pegue o bootloader aqui e o programa Flash Loader Demonstrator para Windows aqui. Procedimento em inglês, nesse link.

Para Linux, faça o seguinte:

Agora, conecte um FTDI com RX em A9 e TX em A10. O FTDI deve estar em 3v3. Conecte o GND também, claro. Repare também a posição dos jumpers; com a placa na posição da imagem abaixo, o jumper superior fica à direita e o jumper inferior fica à esquerda.

STM32 Blue Pill

Ainda com sudo su (acesso com usuário root), digite:

Considere estar no mesmo nível de diretório do binário ou passe o caminho absoluto.

O resultado deve ser algo como:

STM32 Blue Pill

Volte o jumper para 0, desconecte. Conecte pela USB e digite:

Deve aparecer:

STM32 Blue Pill

Baixar o repositório da STM32

Agora vá ao git da placa e clone o repositório dentro do diretório Arduino/hardware.  Feito isso, abra a IDE do Arduino e deixe nesse padrão:

STM32 Blue Pill

Gravar o hello world

Hora de subir o primeiro sketch, mas preste atenção nisso, porque pra mim só funcionou dessa maneira:

  • Coloque o jumper superior (posicionando a placa como mostrado mais acima) na posição 1.
  • Grave o sketch e espere o resultado.
  • Troque o jumper para a posição 0 novamente.
  • Desconecte e conecte a placa novamente e veja se o sketch se manteve.
  • Subiu sketch e quer subir outro? Faça reset da placa antes de subir novamente (com o jumper na posição 1 ainda).

Citei esse procedimento porque o sketch não gravava com o jumper superior na posição 0 e também não mantinha o sketch se desconecta-se antes de trocar o jumper de posição.

Um blink para o teste, mas com charme:

FreeRTOS no STM32 Blue Pill

Agora começa a parte legal!

Podemos utilizar alguns recursos do FreeRTOS no STM32, que é uma placa _ e x t r e m a m e n t e  _   barata. Se gostaria de brincar com RTOS mas está sem grana para comprar um ESP32, comece pelo STM32 Blue Pill, é diversão garantida!

Já escrevi alguns artigos utilizando o STM32 Blue Pill com NUTTX, vale a pena conferir também.

Para começar brincar agora mesmo na IDE do Arduino com FreeRTOS, pegue a biblioteca que fará a interface, nesse link. Descomprima a biblioteca dentro do diretório Arduino/libraries. Experimente esse blink agora com uma task:

Dá pra fazer HORRORES com essa placa, vamos ver se consigo tempo para mostrar algumas coisas de cair o queixo.

Onde comprar?

Essa placa está disponível no nosso parceiro MASUGUX através desse link e custa menos que ir e voltar do trabalho, pegue a sua e boa diversão!

 

 

One comment

Comments are closed.

%d blogueiros gostam disto: