STM32 Nucleo-144 review

Introducing new Nucleo-144

The STM32 Nucleo-144 is a new series of development board by STMicroelectronics. It is the third announced series titled Nucleo. Each Nucleo-144 share the same pin map for each board and features a new connector named ST ZIO which is compatible with Arduino Uno Rev3 connector.

This new series takes his name from the number of pads exhibit by its different MCUs which are all a LQFP144 package. Indeed, the STM32 Nucleo is currently available in 5 configurations we will discuss later.

Packaging

STM32 Nucleo144 blister
STM32F746 Nucleo 144 into its original blister.

The STM32 Nucleo-144 comes in the classical transparent blister we have already seen for many development board and expansion shield from STMicroelectronics (See Fig.1).

On the cardboard there are printed some information and a useful pin-out with we can find also into its user manual:

STM32 Nucleo-144 boards user manual

Available STM32 MCUs

We can choose five different “digital brains” for the Nucleo 144, in fact there are 5 different version of  these boards showing only a difference: the MCUs which can be equipped with.

To take a look on the differences between the various MCUs we can read their datasheets, linked here:

STM32F207ZG datasheetSTM32F303ZE datasheetSTM32F429ZI datasheetSTM32F446ZE datasheetSTM32F746ZG datasheet

There are many differences between the 5 MCU, moreover they can have a different architecture: a Cortex-M3, 3 Cortex-M4 and the last one is a Cortex-M7. To make a fast comparison between these MCUs, we graphically grouped their devices sorted for logic functions and enhancements in term of performances. Let’s start from Cores comparison:

STM32F207ZG STM32F303ZE STM32F429ZI STM32F446ZE STM32F746ZG
Architecture ARM® 32-bit Cortex-M3 ARM® 32-bit Cortex-M4 ARM® 32-bit Cortex-M4 ARM® 32-bit Cortex-M4 ARM® 32-bit Cortex-M7
Core frequency 120 MHz 72 MHz 180 MHz 180 MHz 216 MHz
FPU
ART accelerator
MPU  ✕
Benchmark Dhrystone 2.1 150 DMIPS
(1.25 DMIPS/MHz)
90 DMIPS
(1.25 DMIPS/MHz),
225 DMIPS
(1.25 DMIPS/MHz)
225 DMIPS
(1.25 DMIPS/MHz)
462 DMIPS
(2.14 DMIPS/MHz)
DSP instructions

As seen in the previous table, the core clock speed starts from 72 MHz for the STM32F3 and reach 216 MHz for the STM32F7. Four of them have a special architectural feature, called ART Accelerator, to increase the processing speed according to the MCU’s payload. This is very useful when is required the elaboration of big arrays like for graphical displays.
Furthermore is important to note that STM32F207 isn’t equipped with an FPU and doesn’t support DSP instructions since it is an ARM Cortex-M3.

STM32F207ZG STM32F303ZE STM32F429ZI STM32F446ZE STM32F746ZG
Flash memory 1 Mbyte 512 KB 2 Mbyte 512 KB 2 MB
SRAM 128 + 4 KB 64 KB 264 + 4 KB 64 KB 256 + 4 KB
External memory controller Up to 32-bit data bus Up to 32-bit data bus

The Fig.3 shows that we have various possibility considering data storage: we can choose size of Flash memory from 512 kB up to 2 MB, and size of SRAM from 64 kB to 320 kB. There is also a controller for various external memories like SRAM, PSRAM, SDRAM/LPSDR SDRAM, NOR/NAND up to Compact Flash.

STM32F207ZG STM32F303ZE STM32F429ZI STM32F446ZE STM32F746ZG
Power supply From 1.8 to 3.6 V From 2.0 V to 3.6 V From 1.7 to 3.6 V From 1.7 to 3.6 V From 1.7 to 3.6 V
LSI speed 32 KHz 40 KHz 32 KHz 32 KHz 32 KHz
HSI speed 16 MHz 8 MHz 16 MHz 16 MHz 16 MHz
HSE range 4 to 26 MHz 4 to 32 MHz 4 to 26 MHz 4 to 26 MHz 4 to 26 MHz
LSE range 32.768 kHz 32.768 kHz 32.768 kHz 32.768 kHz 32.768 kHz

As we can see in the Fig.4, while every MCUs support an HSE (High Speed External) oscillator only the STM32F3 can work with HSE greater than 26 MHz. On the other hand while STM32F3 has an HSI (High Speed Internal) oscillator tuned at 8 MHz, others MCUs has HSI tuned at 16 MHz. Every MCU has an LSI at 32 kHz with RC calibration enabling RTC peripherals.

STM32F207ZG STM32F303ZE STM32F429ZI STM32F446ZE STM32F746ZG
ADC 3 12 bit 4 12/10/8/6 bits 3 12 bit 3 12 bit 3 12 bit
DAC 2 12 bit 2 12 bit 2 12 bit 2 12 bit 2 12 bit
Timer 14 (2 are 32 bit) 14 (1 is 32 bit) 14 (2 are 32 bit) 14 (2 are 32 bit) 15 (2 are 32 bit)
Interrupt 140 IO port 115 IO port 168 IO port 114 IO PORT 168 IO port
Communication interfaces 3 I2C, 4 USARTs,
2 UARTs, 3 SPIs,
2 CAN
3 I2C, 5 USARTs,
5 UARTs, 4 SPIs,
Infrared transmitter
3 I2C, 4 USARTs,
4 UARTs, 6 SPIs,
2 CAN, 1 SAI
4 I2C, 4 USARTs,
2 UARTs, 4 SPIs,
2 CAN, 2 SAI
4 I2C, 4 USARTs,
4 UARTs, 6 SPIs,
2 CAN, 2 SAI, HDMI

The offer for communication interfaces is very wide, from the many standard interfaces I2C, USART, UART and SPI up to advanced interfaces like USB, Ethernet and CAN (Fig.5)

On board devices and connectivity

Nucleo144 board overview
Top and bottom of a Nucleo-144 from its user manual.

The pin out of a board is almost independent from the mounted micro-controller. Of course some MCUs doesn’t support certain features so we expect that the pin out of the five version of the Nucleo board can be slightly different considering their alternate functions. The pin ordering, instead, is completely identical for each MCU and this is a peculiarity of all the STM32 Nucleo. From the image beside (Fig.2) we can see the arrangement of the various components and IO connectors.

On the upper side of the top view we can see the programmer/debugger STLink V2-1 with its own micro USB connector. On the lower side there is an additional user USB connector and, in some board versions, there is also an Ethernet RJ45 connector.

Buttons and LEDs

The simplest way we can interact with our Nucleo is the push button. In the same manner the cheapest actuator we can use for get simple informations from our code is a LED.

The Nucleo-144 has two buttons on the lower size of the board. The button marked as Reset is associated to the RST pin of our MCU and is consequently not usable in our code. The second button instead is connected to PC13 and this means it is available for the input actions of the user.

The LED marked as Power is the LED associated to the power On of the board. A bi-colour LED is also associated to STLink and there are also three user LED (placed immediately under the STLink v2-1).

Arduino Uno connector and ST ZIO

Nucleo144 morpho connectors
Morpho connectors pinmap of a Nucleo-144 from its user manual.

The ST Zio is an extension of Arduino Uno Rev3 connector, developed to simply expand the connectivity of the Nucleo with a larger number of expansion boards. The pin out is shown in Fig.4: note that the pink part is the pin map of an Arduino UNO Rev3 connector that, as said, is a subset of ZIO.

The board is equipped also with an additional connector named Morpho (actually not fitted) which provide access to all the pin from the MCU (see Fig.3).

Nucleo144 ZIO connectors
ZIO connectors pin map of a Nucleo-144 from its user manual.

Ethernet

The STM32 Nucleo-144 board supports 10/100Mbps Ethernet and comes with related  connector and an PHY (LAN8742A-CZ-TR) whereas the equipped MCU support the MAC This option is available on three of five board indeed STM32F303ZE and STM32F446ZE do not support Ethernet.

USB and On-the-go Full Speed

USB On-The-Go, often abbreviated to USB OTG or just OTG, is a specification first used in late 2001 that allows USB devices to act as a host (source Wikipedia).

While High performances MCUs support the OTG, Mainstream MCUs do not. The STM32F3 is a Mainstream and replace the USB OTG with a simple USB device. Anyway all the Nucleo-144 are equipped with an USB user connector which can be driven by user firmware.

A warning from STM32 Nucleo-144 User Manual says:

USB Micro–AB connector cannot power the Nucleo-144 board. In order to avoid damaging the STM32, it is mandatory to power the Nucleo-144 before connecting a USB cable. Otherwise there is a risk of current injection on STM32 IOs.

Embedded STLink v2-1

All the STM32 Nucleo-144 are equipped with an embedded STLink v2-1. As for Nucleo-64, the debugger can be used standalone, detaching it from the upper part of the PCB which is appositely drilled. The embedded STLink support SWD only, provides a software re-enumeration, a Mass Storage Interface and a Virtual COM Port.

STLink v2-1 mass storage interface

The embedded STLink provide a direct interface to the flash memory of our microcontroller and this is very useful to flash on the fly binary. Indeed connecting the STM32 Nucleo-144 to the PC we will see a new mass storage: copying a .bin firmware on it the Nucleo will automatically reboot executing the new firmware.

This mechanism is used by ARM mbed to flash firmwares and actually uses the STM32 Bootloader. Of course this means which using this procedure we can flash the firmware but we can not debug it.

STLink v2-1 Virtual COM Port

The embedded STLink provide also a VCP: if drivers are correctly installed, connecting our Nucleo-144 we will se a new device connected to a COM port in device manager.

The VCP offers a bridge (through the STLink v2-1) for STM32 Nucleo-144’s MCU: indeed, it is directly connected to USART3 of our MCU. So, connecting to the VCP with a terminal and writing/reading from the USART3 we will be able to implement a shell which is very useful in more than a scenario.

Clock sources

The STM32 can have different clock sources as clock tree input. These clock sources can be used as input of a PLL to raise clock frequency or can be used directly. While the STM32 comes with two internal oscillator one at high speed (HSI oscillator , i.e. High Speed Internal Clock) and another at low speed (LSI oscillator), it can be driven also by external oscillator usually soldered on the board (HSE and LSE).

The STM32 Nucleo-144 provides a 32 KHz ceramic LSE but doesn’t have an HSE. Actually a footprint for the HSE is provided but oscillator is not fitted. LSE can be used to provide clock to low power peripherals like RTC when an external backup battery is provided. While HSE is not fitted, the system clock cannot reach its maximum speed using LSE as PLL clock input: alternative solution are HSI or the clock output from STLink v2-1 (MCO) which is a 8 MHz clock and requires the enabling of HSE bypass mode.

Development

There are three main ways to develop with these development boards (plus some variants):

  1. STM32Cube: the official software tool from STMicroelectronics;
  2. ARM mbed: the online development toolchain di ARM;
  3. ChibiOS/HAL: the opensource HAL from the ChibiOS project.

The STM32Cube is actually an HAL (Hardware Abstraction Layer) plus a set of tools which should reduce development effort. Talking of libraries, it is grouped by sub-family: so we have STM32CubeF0, STM32CubeF1, … and so on. Of course this code can be imported in several toolchains like Keil, IAR or an eclipse based toolchain named STM32ODE (Open Development Environment). The disadvantage of this software is its complexity and the lack of an all-in-one toolchain.

ARM mbed provides a quick way to getting started with all the ARM based platforms included STM32 Nucleo-144 boards. While it is quite easy and quick to create a firmware with this tool, it doesn’t provide debug features since actually the tool is an online in browser IDE: the build process will actually return a download of a binary firmware which is automatically flashed using the Mass Storage Interface. The main disadvantage of this tool is that, since it is designed to be quick and easy, it doesn’t provide a good grade of flexibility required for optimized custom developments.

ChibiOS/HAL is an HAL which support every STM32 and a almost every related peripherals. It is not officially supported by STMicroelectronics but is an open source project with a wide community. Actually ChibiOS/HAL can be easily integrated with more than an RTOS still marked ChibiOS. This code can be integrated as well in all the already mentioned toolchains but usually comes with a proper toolchain named ChibiStudio. The main disadvantage of ChibiOS is its complexity: while it is optimized for high performances and low resources consumption it requires a certain effort to getting started with it, especially for non-expert users.

In conclusion, the choice of the toolchain remains something related almost to “individual tastes”.

Pricing

When we buy a device, usually we have to choose a compromise between a cheaper price and faster delivery. In order to help you with this, we have compared prices and shipping of various online electronic stores. Note that price and delivery condition can change over time. Furthermore we have considered a shipping to Italy since we are based here. Anyway, this should provide an indicative benchmark of shipping.

Table of prices

Farnell Mouser RS Components Aliexpress
Nucleo-144F446ZE 19,66€ 17,43€ 18,35€ + IVA more than 30€
Nucleo-144-F303ZE 19,66€ 17,43€ 18,35€ + IVA more than 30€
Nucleo-144-F746ZG 23,80€ 21,10€ 22,24€ + IVA more than 30€
Nucleo-144-F207ZG 23,80€ 21,10€ 22,24€ + IVA more than 30€
Nucleo-144-F429ZI 23,80€ 21,10€ 22,24€ + IVA more than 30€

Shipping fees and ETA

Farnell Mouser RS Components Aliexpress
Shipping fees 9€, (free for orders greater than 80€) 15€ 6€, (free for orders greater than 100€ + VAT) not considered
ETA 24h Depends on availability of goods 48-72h not considered

Unless you need to use the Nucleo board to build a device to prevent the upcoming impact of an alien rocket on Earth, we recommend a compromise between the two way: a medium price and delivery times of a 2 days is a good choice.

In the first case, contact us, we will provide Nucleo-144 for free helping in development.

Replies to STM32 Nucleo-144 review

Leave a Reply