Outra placa da WeAct, desta vez com um microcontrolador STM32. A minha experiência com estes microcontroladores é muito pouca, estando restrita a umas poucas brincadeiras com a BluePill e BlackPill.
O coração desta placa é um STM32G431, um microcontrolador que o fabricante chama de "mixed-signal" para enfatizar os seus recursos de processamento digital e analógico. O núcleo é um ARM Cortex M4, com uma unidade de ponto flutuante (precisão simples) e instruções de processamento de sinal digital (DSP), galopando a 170 MHz. Os periféricos analógicos incluem 2 ADCs de 12 bits, 4 comparadores, 3 amplificadores operacionais e 4 canais de DAC. A lista de periféricos de comunicação também é extensa: 3 I2C, 3 SPI, 3 UARTs e USB (somente device). Temos ainda um relógio de tempo real (RTC), que pode ser alimentado por uma bateria.
Na parte de memória, temos 32 kbytes de Ram e 128 kbytes de Flash, internos ao microcontrolador.
A placa não inclui muitos componentes adicionais. Temos os tradicionais botões de Reset e Boot, mais um "botão do usuário" (ligado a um GPIO). Um LED de ligado e um LED ligado a um GPIO. Um conector USB-C é usado para alimentação e comunicação (através da USB nativa). Um regulador linear (LDO) baixa os 5V da USB para os 3,3V usados pelo microcontrolador. Há espaço para soldar um conector para debug.
O que nos leva aos conectores principais de expansão. Com muitos pinos para ligar e uma placa compacta, a solução foi usar conectores duplos, o que impede o uso direto em protoboard (salvo altas gambiarras).
Para testar a placa, eu usei o projeto stm32duino para programar a placa com a IDE do Arduino. É preciso instalar o STM32CubeProgrammer da ST, mas a gravação de programas não requer hardware adiconal. O programa que eu rodei foi o benchmark Whetstone que eu tinha adaptado para testar o Arduino Uno R4. Os resultados foram bons e ficaram ainda melhores quando mandei otimizar o código para velocidade (algo que o stm32duino permite de forma simples):
Placa Repetições Tempo Desempenho Observações -------- ---------- ---------- --------- -------------------------------- Uno R4 2000 71.94 sec 2.8 MIPS R7FA4M1 48 MHz PiPico 2000 19.17 sec 10.4 MIPS Cortex M0+ 125 MHz ESP32 2000 12.70 sec 15.7 MIPS Xtensa LX6 240 MHz STM32G431 2000 14.14 sec 14.1 MIPS STM32G431 170 MHz -Os (default) -------- ---------- ---------- --------- --------------------------------- PiPico 10000 96.xx sec 10.4 MIPS Cortex M0+ 125 MHz ESP32 10000 61.85 sec 16.2 MIPS Xtensa LX6 240 MHz STM32G431 10000 67.35 sec 14.8 MIPS STM32G431 170 MHz -Os (default) STM32G431 10000 41.64 sec 24.0 MIPS STM32G431 170 MHz -O3 -------- ---------- ---------- --------- ---------------------------------
A documentação pode ser vista em
https://github.com/WeActStudio/WeActStudio.STM32G431CoreBoard.
Veredito: Com um preço (no momento) na faixa de US$4 (na loja oficial na AliExpress), esta é uma placa com uma ótima relação custo/desempenho. O conector vai dificultar um pouco o uso e o tamanho da memória desaconselha o uso de MicroPython, mas além da IDE do Arduino existem as ferramentas da própria ST.
2 comentários:
Interessante, adquiri um há pouco tempo, fiz o flash do firmware manualmente mas não consigo acessar a UART pela porta USB, gostaria de visualizar o monitor serial, você conseguiu?
João Pedro, a USB não está ligada à UART. No Arduino existe a opção de incluir o suporte ao modo CDC da USB e usar ele para o objeto Serial. Se você quiser usar a UART vai ter que colocar um conversor serial USB externo.
Postar um comentário