Introduction: The Incredible STM32 L4!
I want to start this article explaining that this letter L (of the L4) means Low (or, basically, Ultra Low Power). Thus, it spends little energy and shows why this STM32 is incredible! It spends microamps and has a system inside that can identify the expense of each chip part. This allows for a very efficient management of energy, and with high performance.
I already talked about this microcontroller in the video, “The easiest way to program a microcontroller!” In the video, I showed how to program the STM32 L4 with MBED. But while researching more about it, I discovered something that the manufacturer STMicroelectronics does not disclose. It implemented the Core Arduino in the chip, which enables programming through the Arduino IDE.
In this image, we have two versions of L4. The STM32L432KC is identical to the Arduino Nano and the STM32L476RG, which have equivalent IOs to the Arduino Uno. So, while working with two versions of this powerful microcontroller, I’ll show you how to install the Arduino Core in the STM32 family. Also, I’ll explain the main characteristics of the STM32 Kits.
Step 1: Plates With Core Arduino
I placed here a list about the diversity. However, we’re going to work with the STM32L432KC and the 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
Step 2: STM32F746G DISCOVERY
Just to illustrate, I show the details of an STM32F746G DISCOVERY, which I consider a beast. I've already ordered this chip, and I hope to talk about it soon.
Characteristics:
- STM32F746NGH6 microcontroller featuring 1 Mbytes of Flash memory and 340 Kbytes of RAM in a BGA216 package
- On-board ST-LINK / V2-1 supporting USB re-enumeration capabilities
- Mbed-enabled (mbed.org)
- USB functions: virtual COM port, mass storage, and 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 forexternal applications:
- 3.3 V or 5 V
- Arduino Uno V3 connectors
Step 3: Arduino Due X STM NUCLEO-L476RG
Here is a comparison with the Arduino Due, which is an ARM Cortex-M3. I have used this model in videos: Nema 23 Stepper Motor with Driver TB6600 with Arduino Due, and SpeedTest: Arduinos - ESP32 / 8266s - STM32, with STM NUCLEO-L476RG , which is an ARM Cortex-M4 Ultra Low Power, and is in the image on the right side.
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 or Floating Point Unit
* I highlight here the
separate FPU of STM NUCLEO-L476RG, which means that the chip makes trigonometric calculations with amazing speed. This is unlike the Arduino Due, which needs a genetic processor to do that.
Step 4: Dhrystone
Dhrystone is a synthetic computer benchmark program developed in 1984 by Reinhold P. Weicker, which is intended to be representative of (integer) system programming. Dhrystone became a representative of overall processor performance (CPU). The name "Dhrystone" is a pun on a different benchmark algorithm called Whetstone. This is a measure taken from some generic operations.
This program is here to compile something inside these microcontrollers in Arduino. And the result of two tests I did, one with Dhrystone and another from the SpeedTest video, are as follows:
Arduino Due: US $ 37.00
- Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 300,000 runs through Dhrystone
- Execuion ends
Microseconds for one run through Dhrystone: 10.70
Dhrystones per Second: 93,431.43
VAX MIPS rating = 53.18 DMIPS
- Running test Fernandok
Total time: 2,458 ms
- Does not have FPU
- Dhrystone software on Arduino
http://www.saanlima.com/download/dhry21a.zip
STM NUCLEO-L476RG: US $ 23.00
- Dhrystone Benchmark, Version 2.1 (Language: C)
Execution starts, 300,000 runs through Dhrystone
- Execution ends
Microseconds for one run through Dhrystone: 9.63
Dhrystones per Second: 103,794.59
VAX MIPS rating = 59.07 DMIPS
- Running test Fernandok
Total Time: 869 ms 2.8x FASTER
- PI up to 40Mbit / s, USART 10Mbit / s
- 2x DMA (14 channels)
- Up to 80 MHz / 100 DMIPS with ART Accelerator
Step 5: STM32L432KC X Arduino Nano
The left board is the STM32L432KC, in which STMicroelectronics placed the identical Arduino Nano pinout in the picture on the right.
Step 6: STM32L432KC
Ultra-low-power Arm® Cortex®-M4 32-bit
MCU + FPU, 100DMIPS, up to 256KB Flash, 64KB SRAM, USB FS, analog, audio
Up to 26 IOs faster, more tolerant to 5V
- RTC with HW calendar, alarms, and calibration
- Up to 3 capacitive detection channels
- 11x Timers: 1x16-bit advanced engine control
1x 32-bit and 2x 16-bit general purpose, 2x 16-bit basic, 2x low-power 16-bit timers (available in Stop mode), 2x watchdogs, SysTick timer
- Memory:
- Up to 256 KB Flash, proprietary code reading protection
- 64 KB SRAM including 16 KB with hardware parity check
- Quad SPI memory interface
- Rich analog peripherals (independent supply)
- 1x 12-bit ADC 5 Msps, up to 16 bits with hardware oversampling, 200 μA / Msps
- 2 channels of 12-bit DAC output, low power consumption
- 1x operational amplifier with built-in PGA
- 2x compared to ultra-low power interfaces
- 1x UPS (serial audio interface)
- 2x I2C FM + (1 Mbit / s), SMBus / PMBus
- 3x USARTs (ISO 7816, LIN, IrDA, modem)
- 1x LPUART (Stop 2 wake up)
- 2x SPI (and 1x SPI Quad)
- CAN (2.0B active)
- Single wire protocol master SWPMI I / F
- IRTIM (infrared interface)
- 14-channel DMA controller
- Random Number Generator
Step 7: Install Core Arduino for STM32L4 Cards
- Install ST-Link program that records
- Json Address
- Boards: Card Manager
Libraries: Library Manager
Step 8: Install ST-Link - Program That Records
Download the file at https://www.st.com/en/development-tools/stsw-link0.... Just register, download, and install the device.
Step 9: Address Json
On properties, include the following address:
Step 10: Boards: Board Manager
In the Arduino Board Manager, install the STM32 Core, which is about 40MB.
Step 11: Libraries: Library Manager
Finally, install the libraries.
I personally liked the group STM32duino.com, which has several examples, some of which I installed. I also downloaded a FreeRTOS, which I liked a lot. I found it fast and reliable. I also installed (but haven’t yet tested) LRWAN. I'll soon tell you whether it's good or not.