NUCLEO-F446RE

From Embedded Workshop
Revision as of 08:58, 30 May 2023 by JMerkle (talk | contribs)
Jump to navigation Jump to search

The NUCLEO-F446RE development board uses the STM32F446RE as the target processor.
This board is a rock solid development board with on-board ST-Link loader / debugger, using an STM32F103CBT6.

Processor: STM32F446RE

512KB Flash
128KB SRAM
180MHz CPU clock
1.7 to 3.6 V application supply and I/Os
3× 12-bit, 2.4 MSPS ADC: up to 24 channels
2× 12-bit D/A converters
17 timers: 2x watchdog, 1x SysTick timer, twelve 16-bit and two 32-bit timers up to 180 MHz
4 USARTs
4 SPI/I2S (up to 45 Mbit/s)
4 I2C
2 CAN (2.0B)
1 RTC: sub-second accuracy, hardware calendar
1 SDIO interface (SD/MMC/eMMC)
1 USB 2.0 full-speed device/host/OTG controller with on-chip PHY
8 to 14 bit parallel camera interface (54Mbytes/sec)
1 CRC calculation unit
FPU, single precision
DSP instructions

Hardware

  • Green LED, LD2, connected to PA5, illuminates when driven high
  • Blue PushButton, B1, connects to PC13, grounding the signal when pressed
  • 32,768Hz crystal oscillator, LSE, used for Real Time Clock (RTC)
  • 8MHz HSE, is provided by the 8MHz crystal oscillator from the attached ST-Link, into PD0
  • UART2 connects the target processor to the ST-Link, providing a USB COM port connection on the host computer. Uses PA2 for TX, and PA3 for RX.
  • ST-Link connects to TCK (PA14), TMS (PA13)

Firmware

https://www.st.com/en/microcontrollers-microprocessors/stm32f446re.html
https://www.st.com/resource/en/datasheet/stm32f446re.pdf
https://www.st.com/en/evaluation-tools/nucleo-f446re.html
https://www.st.com/en/embedded-software/stm32cubef4.html

ST Website for the STM32F4 family: https://www.st.com/en/microcontrollers-microprocessors/stm32f4-series.html

Why I like this board

I like the speed, RAM size and FLASH size, and the large selection of peripherals on the board.
 
Besides the on-board JTAG, and USB-UART functionality, it has a QSPI interface that requires
more in-depth examination on my part.
(The ability to directly execute code from an external serial FLASH device intrigues me.)
This functionality provides a mechanism for OTA, in that a new copy of a program can be placed
in an alternate section of FLASH, and then executed just like the first copy, using the windowing feature.

MicroPython:
This board support MicroPython. I've used this to learn/work with CAN bus devices.
Just "import" some of the many MicroPython packages into your Python program.
https://micropython.org/download/NUCLEO_F446RE/

I use STM32CubeProgrammer to flash the .hex file.

Since MicroPython is open source, I've even modified and recompiled it to add the second CAN bus interface. (Pretty easy)

Projects

STM32-OTG-CDC