Para usar o Arduino IDE para programar o STM32, é necessário configurar o IDE para instalar o software para a placa, e pelo menos um dispositivo (hardware) para enviar o programa.
Software
A instalação do software só precisa de ser efectuada uma vez, e é composto por dois passos; no primeiro configura-se a um novo endereço de origem para gestores de placas adicionais, no segundo instala-se o software necessário para a placa.
Existem vários pacotes de software para programar o stm32 no Arduino IDE.
Pelo que percebi existem três, todos eles com o mesmo nome stm32duino e representados aqui pelos endereços de instalação :
- https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
- http://dan.drown.org/stm32duino/package_STM32duino_index.json
- https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation
Cada pacote tem as suas características, e nada garante que programas feitos para um pacote compile noutro pacote.
Hardware
Pelo que percebi existem pelo menos 2 formas de enviar os programas para o STM32F, conhecido por blue pill:
- Com um interface USB para Serial FTDI232;
- Com um interface ST-Link (v2);
Em ambos os casos deve-se usar cabos usb curtos, muito curtos. No meu caso experimentei vários cabos e nenhum funcionava bem.
Ao principio, com o Serial FTDI232 pensava até que um dos componentes não estava bem. Mas depois lá descobri um cabo relativamente curto que trabalhava de forma intermitente.
Acabei por fazer o meu próprio cabo. Curto qb. Deixei de ter problemas de upload dos programas com o Serial FTDI232. O problema acontece com também ST-Link, também com a mesma solução.
Procedimentos para instalar o software no Arduino IDE.
No IDE clicar em File/Preferences; clicar no botão á direita de “Additional Boards Manager URLs”, e adicionar uma nova linha com o endereço para o novo gestor de placas (basta uma das duas):
- https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
- http://dan.drown.org/stm32duino/package_STM32duino_index.json
Após guardar , clicar em:Tools/Board/Board Manager, no tipo, selecionar “Contributed” e instalar “STM32 Core by STMicroelectronics”, para a primeira opção, e outra coisa semelhante para a segunda opção.
Existe também instruções semelhantes para a outra plataforam em:
https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation
Até ao momento não percebi qual as vantagens de cada uma.
Enviar programas para o STM32F com um interface ST-Link
Para enviar os programas com o ST-Link é necessário instalar o driver (e o programador) para o ST-Link, que pelo que percebi vêm no mesmo ficheiro de instalação (en.stsw-link004.zip), disponível no seguinte endereço:
https://www.st.com/en/development-tools/stsw-link004.html
Ligações do ST-Link com o STM32
Para usar o ST-Link não pode existir outra alimentação do stm32 que não seja a que provem do ST-link.
O ST-link não permite aceder á porta serie, pelo que para obter outputs tem sempre que se usar uma interface Serial FTDI232.
Procedimentos de envio dos programas para o STM32 com o ST-Link
Para além de selecionar a placa, e as opções corretas para a placa não existe nenhum procedimento especial para além de clicar no botão no Arduino IDE.
Enviar programas para o STM32F com um interface USB para Serial FTDI232
Existem vários modelos de interface USB para Serial FTDI232, mas como o propósito é efectuar a ligação série, pelo que existem pelo menos três ligações obrigatórias:
FTDI pinos STM32
- rx > A9
- tx > A10
- gnd > G
- vcc > 3.5 (opcional, caso queiramos alimentar o micro-controlador)
Software de envio dos programas com o FTDI232
No caso de se usar a framework da ST (arduino core), então para enviar por Serial FTDI, é necessário instalar um programa para fazer o upload, que está disponível no seguinte link:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stm32cubeprog.html
Procedimentos de envio dos programas para o STM32 com o FTDI
Para programar, colocar o jumper boot0 para o lado do 1, e pressionar o botão reset;
Para reprogramar voltar a pressionar o botão reset;
Para passar ao modo de execução do programa, colocar o jumper boot0 para o lado do 0, e pressionar o botão reset;
Videos sobre enviar programas para o STM32F com FTDI232
STM32 Arduino IDE and FTDI232 (model 1)
STM32 Arduino IDE and FTDI232 (model 2)
Failed to read ACK byte stm32flash 0.4
Pinos STM32
Led interno: PC13
Referências
https://www.onetransistor.eu/2017/11/stm32-bluepill-arduino-ide.html
https://circuitdigest.com/microcontroller-projects/getting-started-with-stm32-development-board-stm32f103c8-using-arduino-ide
https://github.com/BLavery/STM32F103-Arduino