Sua Blue Pill é mesmo uma Blue Pill?

O que é de tão legal da Blue Pill?

A Blue Pill é uma placa extremamente acessível para nós aqui no Brasil, pois é fácil encontrar ela para venda e o preço não é caro. Assim, para hobbistas  e para os pequenos desenvolvedores, ela é um prato cheio!
Resultado de uma procura pela Blue Pill em um site de marketplace do nosso país.
Também, ela é bastante usada pela comunidade, tanto aqui no Brasil quanto overseas, o que ajuda muito! Eu acho que nunca trombei em um problema com ela ‘novo’, ou seja, um issue que alguém não tenha ainda passado por ele, resolvido e compartilhado como resolver.
 
Quanto ao microcontrolador, o STM32F103 é suficiente para a maioria das pequenas aplicações, considerando memórias, clock e periféricos. Eu confesso que não gosto do periférico de I2C dele, já me deu bastante problema, mas divago, isso é assunto para outro post….
 
Voltando, eu gosto muito de usar a Blue Pill nos meus side quests não só pelo seu preço mas também porque ela é uma placa que não ocupa muito espaço, todos os pinos estão facilmente acessíveis e basta alimentar ela com 5V usando, por exemplo, qualquer carregador convencional para celulares. Ela inclusive aguenta que você alimente alguns outros dispositivos usando da sua própria alimentação, o que é muito conveniente.
Uma Blue Pill em seu habitat natural.

Vamos comprar algumas?

Eu sempre tive umas três ou quatro placas comigo e sempre funcionaram muito bem, sem nenhum problema, mas um dia desses precisei comprar mais. Aproveitei e já comprei um ‘lotão’ com vinte peças, para não ter que se preocupar com  isso novamente por um bom tempo.
 
Pois bem, assim que elas chegaram eu já reparei que elas eram um pouco diferente das outras que eu tinha… o push button de reset, por exemplo, era diferente. Mas não me importei muito com isso, já que como essa placa não é ‘oficial’ (ela foi projetada pela comunidade) é possível que os fabricantes façam pequenas modificações para terem algum benefício – redução de algum custo, por exemplo.
 
Porém, para a minha surpresa, quando fui tentar gravar uma delas, não consegui. O dispositivo simplesmente não era reconhecido:
Oops!
Continuando a investigação eu descartei a possibilidade de problemas com a conexão, pois eu consegui conectar com o dispositivo utilizando o STM32 ST-Link Utility. Mas reparei que alguns dados do microcontrolador estavam estranhos…
Tem algo estranho aqui...

O que acontece?

Bem, para encurtar a história, dando uma investigada, descobri que muitas Blue Pills não são montadas utilizando o STM32F103 mas sim com um ‘clone’ dele, um outro microcontrolador chamado de CS32F103. Ele aparentemente é idêntico ao original no quesito de pinout, capacidades e funcionalidades… mas é diferente, né?
Parece que temos um impostor!
Continuando a investigar eu consegui contornar este problema e comecei a usar estas placas e, aparentemente, elas realmente são um replacement do nosso querido STM32F103. Mas eu não testei muita coisa do microcontrolador, então não dou nenhuma garantia de que isso é verdade.
De qualquer maneira, isso é um problema, então é importante deixar claro que: 
Este microcontrolador não é da ST e, assim, eu não recomendo estas placas sejam utilizadas em projetos ‘sérios’!

Beleza Andre, mas como você contornou o problema?

Vamos precisar mudar algumas configurações passadas para o gravador. Precisamos usar o ST-LINK OpenOCD ao invés do padrão GDB Server. Com o baseado no OpenOCD, podemos passar um arquivo de configuração, aonde podemos fazer todas as configurações necessárias. Assim, no STM32CubeIDE,  nas configurações de debug:
  1. Crie uma nova configuração de debug para este caso ‘especial’.
  2. Nesta configuração, selecione como debug probe ‘ST-LINK (OpenOCD)’. Irá ser mostrado novas opções específicas deste modo.
  3. Na seção ‘Configuration Script‘, selecione ‘User Defined‘ e coloque o caminho para o arquivo de configuração modificado.
  4. Happy Debugging!
Exemplo da tela de configuração para debug.

Qual é o arquivo de configuração?

Basicamente eu peguei o arquivo que é feito quando se usa a configuração automatizada e modifiquei com os campos necessários.
As modificações são:
  • Adicionar uma linha para identificar o CS32F103: “set CPUTAPID 0x2ba01477”
  • Modificar a configuração do reset_config, removendo o campo ‘srst_only’
Eu coloquei no meu repositório um modelo deste arquivo, se você quiser usar.
É isso, pessoal! Divirtam-se com as suas Blue Pills!