Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


O Incrível STM32 L4!



Quero começar esse artigo de hoje explicando que essa letra L, do L4, é de Low, ou seja, Ultra Low Power, portanto, que gasta pouca energia. Isso já mostra o porquê deste STM32 ser incrível! Esse “cara” gasta microampères e tem um sistema dentro dele que consegue identificar o gasto de cada parte deste chip, o que significa uma gestão bastante eficiente de energia, com alta performance.
Eu já falei sobre esse microcontrolador no vídeo: A maneira mais fácil de programar um microcontrolador!, no qual eu mostrei como programar o STM32 L4 com MBED. Mas, pesquisando mais sobre ele, descobri uma coisa que a própria fabricante STMicroelectronics não divulga: ela implementou neste chip o Core Arduino possibilitando a programação pela IDE do Arduino.



Nesta imagem nós temos duas versões de L4. O STM32L432KC que é idêntico ao Arduino Nano e o STM32L476RG que tem IOs equivalentes ao do Arduino Uno. Então, trabalhando duas versões deste microcontrolador que considero muito potente, quero hoje te mostrar como instalar o Core Arduino na família STM32 e explicar ainda as características principais dos Kits STM32.


Placas com Core Arduino

Deixo aqui uma lista de placas para vocês terem conhecimento da diversidade que existe, mas ressalto que as que vamos trabalhar são a STM32L432KC e a STM32L476RG.

STM32F0
·         Nucleo F030R8
·         Nucleo F091RC
·         32F0308DISCOVERY

STM32F1
·         BluePill F103C8 (Basic support, no USB)
·         MapleMini F103CB (Basic support, no USB)
·         Nucleo F103RB
·         STM32VLDISCOVERY

STM32F2
·         Nucleo F207ZG

STM32F3
·         Nucleo F302R8
·         Nucleo F303K8
·         Nucleo F303RE

STM32F4
·         Nucleo F401RE
·         Nucleo F411RE
·         Nucleo F429ZI
·         Nucleo F446RE
·         STM32F407G-DISC1

STM32F7
·         STM32F746G-DISCOVERY

STM32L0
·         Nucleo L031K6
·         Nucleo L053R8
·         B-L072Z-LRWAN1

STM32L1
·         Nucleo L152RE

STM32L4
·         Nucleo L432KC
·         Nucleo L476RG
·         NUCLEO-L496ZG-P
·         NUCLEO-L496ZG-P
·         B-L475E-IOT01A


STM32F746G DISCOVERY



Só para ilustrar, trago para vocês aqui detalhes de um STM32F746G DISCOVERY, que considero um “monstrengo”. Quero adiantar que já fiz um pedido deste chip e estou esperando chegar para começar a falar mais sobre ele.




Características:
• STM32F746NGH6 microcontroller featuring
1 Mbytes of Flash memory and 340 Kbytes of
RAM, in BGA216 package
• On-board ST-LINK/V2-1 supporting USB reenumeration
capability
• Mbed-enabled (mbed.org)
• USB functions: virtual COM port, mass
storage, debug port
• 4.3-inch 480x272 color LCD-TFT with
capacitive touch screen
• Camera connector
• SAI audio codec
• Audio line in and line out jack
• Stereo speaker outputs
• Two ST MEMS microphones
• SPDIF RCA input connector
• Two pushbuttons (user and reset)
• 128-Mbit Quad-SPI Flash memory
• 128-Mbit SDRAM (64 Mbits accessible)
• Connector for microSD card
• RF-EEPROM daughterboard connector
• USB OTG HS with Micro-AB connectors
• USB OTG FS with Micro-AB connectors
• Ethernet connector compliant with
IEEE-802.3-2002
• Five power supply options:
– ST LINK/V2-1
– USB FS connector
– USB HS connector
– VIN from Arduino connector
– External 5 V from connector
• Power supply output for external applications:
3.3 V or 5 V
• Arduino Uno V3 connectors


Arduino Due x STM NUCLEO-L476RG


Trago aqui um comparativo do Arduino Due, que é ARM Cortex-M3, modelo que já trabalhei nos vídeos: Motorde Passo Nema 23 com Driver TB6600 com Arduino Due e SpeedTest: Arduinos– ESP32/8266s – STM32, com o STM NUCLEO-L476RG, que é ARM Cortex-M4 Ultra Low Power, e está na imagem do lado direito.

Arduino Due:
Microcontroller:  AT91SAM3X8E
Operating Voltage: 3.3V
Input Voltage (recommended): 7-12V
Input Voltage (limits): 6-16V
Digital I/O Pins: 54 (of which 12 provide PWM output)
Analog Input Pins: 12
Analog Output Pins: 2 (DAC)
Total DC Output Current on all I/O lines: 130 mA
DC Current for 3.3V Pin: 800 mA
DC Current for 5V Pin: 800 mA
Flash Memory: 512 KB all available for the user applications
SRAM: 96 KB (two banks: 64KB and 32KB)
Clock Speed: 84 MHz
Length: 101.52 mm
Width: 53.3 mm
Weight: 36 g

STM NUCLEO-L476RG:
STM32L476RGT6 in LQFP64 package
ARM®32-bit Cortex®-M4 CPU
Adaptive real-time accelerator
(ART Accelerator™) allowing 0-wait state execution
from Flash memory
80 MHz max CPU frequency
VDD from 1.71 V to 3.6 V
1 MB Flash
128 KB SRAM
SPI (3)
I2C (3)
USART (3)
UART (2)
LPUART (1)
GPIO (51) with external interrupt capability
Capacitive sensing with 12 channels
12-bit ADC (3) with 16 channels
12-bit DAC with 2 channels
FPU ou unidade de ponto flutuante

*Destaco aqui a FPU separada do STM NUCLEO-L476RG, que significa que o chip faz cálculos trigonométricos com uma rapidez espantosas, diferente do Arduino Due, que precisa de um processador genético para conseguir fazer isso.


Dhrystone


Dhrystone é um programa de benchmark de computação sintética desenvolvido em 1984 por Reinhold P. Weicker, que pretende ser representativo da programação do sistema (inteiro). O Dhrystone cresceu para se tornar representante do desempenho geral do processador (CPU). O nome "Dhrystone" é um trocadilho com um algoritmo de benchmark diferente chamado Whetstone. Podemos dizer que se trata de uma medida tirada a partir de algumas operações genéricas.
Trago aqui esse programa porque eu queria compilar alguma coisa dentro destes microcontroladores em Arduino. E o resultado de dois teste que fiz, um com o Dhrystone e outro do vídeo do SpeedTest, são os seguintes:


Arduino Due: US$37,00
·         Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 300000 runs through Dhrystone
·         Execution ends
Microseconds for one run through Dhrystone: 10.70
Dhrystones per Second: 93431.43
VAX MIPS rating = 53.18 DMIPS

·         Rodando teste Fernandok
Tempo total: 2458 ms
·         Não tem FPU
·         software Dhrystone em Arduino
http://www.saanlima.com/download/dhry21a.zip


STM NUCLEO-L476RG: US$23,00
·         Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 300000 runs through Dhrystone
·         Execution ends
Microseconds for one run through Dhrystone: 9.63
Dhrystones per Second: 103794.59
VAX MIPS rating = 59.07 DMIPS

·         Rodando teste Fernandok
Tempo total: 869 ms     2.8x MAIS RÁPIDO
·         SPI up to 40Mbit/s, USART 10Mbit/s
·         2x DMA (14 canais)
·         Up to 80 MHz/ 100 DMIPS with ART Accelerator


STM32L432KC x Arduino Nano


A placa da esquerda é o STM32L432KC, na qual a STMicroelectronics colocou a pinagem idêntica do Arduino Nano, na foto à direita.


STM32L432KC



Ultra-low-power Arm® Cortex®-M4 32-bit
MCU+FPU, 100DMIPS, up to 256KB Flash, 64KB
SRAM, USB FS, analog, audio



Até 26 IOs rápidos, mais tolerantes a 5V
• RTC com calendário HW, alarmes e calibração
• Até 3 canais de detecção capacitivos
• Temporizadores 11x: 1x16-bit controle avançado de motor
1x 32-bit e 2x 16-bit uso geral, 2x 16-bit básico, 2x timers de 16 bits de baixa potência (disponível no modo Stop), 2x watchdogs, temporizador SysTick
• Memória:
- Até 256 KB de Flash, proteção proprietária de leitura de código
- 64 KB de SRAM incluindo 16 KB com verificação de paridade de hardware
- Interface de memória Quad SPI
• periféricos analógicos ricos (fornecimento independente)
- 1x ADC de 12 bits 5 Msps, até 16 bits com sobreamostragem de hardware, 200 µA / Msps
- 2 canais de saída DAC de 12 bits, baixo consumo de energia
- 1x amplificador operacional com PGA embutido
- 2x compara interfaces de ultra baixa potência
- 1x SAI (interface de áudio serial)
- 2x I2C FM + (1 Mbit / s), SMBus / PMBus
- 3x USARTs (ISO 7816, LIN, IrDA, modem)
- 1x LPUART (Parar 2 acordar)
- 2x SPIs (e 1x Quad SPI)
- CAN (2.0B ativo)
- mestre de protocolo de fio único SWPMI I/F
- IRTIM (interface de infravermelhos)
• Controlador DMA de 14 canais
• Gerador de números aleatórios


Instalar o Core Arduino para placas STM32L4




      1.       Instalar ST-Link - programa que grava
      2.       Endereço Json
      3.       Boards : Gerenciador de placas
      4.       Libraries : Gerenciador de Bibliotecas



1 – Instalar ST-Link – programa que grava
Baixe o arquivo no link: https://www.st.com/en/development-tools/stsw-link009.html. Basta fazer um cadastro, o download e instalar o device.



2 – Endereço Json
Em propriedades, inclua o seguinte endereço:



3 – Boards: Gerenciador de placas
No Gerenciador de placas do Arduino, instale o STM32 Core, que tem cerca de 40MB.



4 – Libraries: Gerenciador de Bibliotecas
Por fim, instale as bibliotecas.


Eu, pessoalmente, gostei do grupo STM32duino.com, que tem vários exemplos, sendo que alguns eu instalei. Também baixei um FreeRTOS, que gostei bastante. Achei rápido e confiável. Outra coisa que instalei, mas ainda não testei é o LRWAN. Mas, logo, logo, falo para vocês se é bom ou não.


Faça o download do PDF





Postar um comentário

3 Comentários