STM32H7B3I-DK - board certification review
The STM32H7B3I-DK Discovery kit is a complete demonstration and development platform for STMicroelectronics Arm® Cortex®-M7 core-based STM32H7B3LIH6QU microcontroller. The full range of hardware features available on the board helps users enhance their application development by an evaluation of almost all peripherals (such as USB OTG_HS, microSD, USART, FDCAN, audio DAC stereo with audio jack input and output, camera, SDRAM, Octo-SPI Flash memory and RGB interface LCD with capacitive touch panel). ARDUINO® Uno V3 connectors provide easy connection to extension shields or daughterboards for specific applications.
STM32H7B3I-DK earned Standard LVGL board certification which means the users can be sure that it’s easy to use that board with LVGL and they can expect decent performance and quality.
The STM32H7B3I-DK board can be purchased from the distributors recommended by ST or basically from any large distributor.
- MCU STM32H7B3LI ARM-Coretx-M7, 280 MHz
- RAM 1376 KB internal SRAM kB, 16 MB SDRAM
- Flash 2 MB internal Flash, 64 MB Octo-SPI NOR Flash memory
- GPU DMA2D (ChromaArt)
- Resolution 480x272
- Display size 4.3”
- Color depth 24 bit, RGB888
- Technology TN
- DPI 128 px/inch
- Touch pad Capacitive
- Interface RGB
- Camera (8 bit)
- USB with Micro-AB
- Stereo headset jack including analog microphone input
- Audio jack for external speakers
- microSD™ card
- TAG-Connect 10-pin footprint
- Arm® Cortex® 10-pin 1.27mm-pitch debug connector over STDC14 footprint
- ARDUINO® Uno V3 expansion connector
- STMod+ expansion connector
- Audio daughterboard expansion connector
- External I2C expansion connector
- Power supply USB mini (5V)
Frame rate (FPS)
The MCU’s 280 MHz clock speed and its ARM Cortex-M7 architecture are absolutely enough for the 480x272 display to create state-of-the-art UIs. Large animations and image transformation, screen sized fading effects are working well too. STM32H7B3LI has DMA2D (Chroma Art) GPU which has built-in support in LVGL. It can be simply enabled in
The board reached 32 FPS on the LVGL’s certification benchmark. There was a minor drop to 28 FPS only at the beginning when the whole screen was covered by large animated trapezoids. Other than that the bars jumping on the rhythm of the music, the image scaling, and scrolling were perfectly smooth.
The driver used an 1/4 screen sized draw buffer in internal RAM and a normal screen-sized frame buffer in external RAM. The performance could be further improved by using 2 draw buffers and updating the frame buffer with DMA.
STM32H7B3LI has plenty of internal RAM (1.4 MB) and external SDRAM (16 MB), a large internal flash (2MB) and 64 MB fast external Octo-SPI flash external. Let’s see what graphics configuration can work with these memories.
Only internal RAM
The 1.4 MB internal RAM can be used to store the frame buffer(s) directly. With 16 bit color depth (RGB565) one frame buffer needs 480x272x2 = 255 kB of RAM. 2 frame buffers still take only 510 kB of RAM from the 1.4 MB. So traditional double buffering (just swap the frame buffer address when the rendering is ready) can be easily realized. However, depending on the actual UI, traditional double buffering might not be the best strategy because it requires the whole frame to be redrawn even if only 1 pixel has changed. Allocating e.g. 1/5 draw buffer and one frame buffer might be faster but with this strategy tearing can appear.
Frame buffer(s) in external RAM
To save internal RAM the frame buffer(s) can be placed into external RAM too. Of course, it’s a trade off as rendering into external RAM is slower. In this case using smaller draw buffer(s) in internal RAM is still recommended because:
- they are small and can fit easily into internal RAM
- they are read/written many times per pixel so it’s important to keep memory access fast
Note that, even 2 full framebuffers can fit in the internal SRAM which can result in great performance without flickering.
Images and fonts can be stored in 4 kinds of memories:
- Internal Flash: fastest and easy to use but only 2 MB
- External Flash: fast, and large (64 MB)
- SD card: the slowest but can have a huge size
- External RAM: fast, volatile, and middle sized. If there are performance issues due to the memory bandwidth it’s possible to load the assets from the SD card or external flash here during initialization.
The display is built with TN technology so its viewing angle and color correctness are only average.
STM32H7B3I-DK is built with a capacitive touchpad. Therefore it provides a smartphone-like experience, however it doesn’t sense pens, or fingers in gloves.
STM32H7B3I-DK is a development board for evaluation and not designed to be added to an end-product. Although there are holes to mount the board and the display is attached to the board in a stable way.
For real life applications a secondary board might be required for sensors or other peripheries.
The schematic of the board is publicly available and it can be a good starting point to develop your custom board based on STM32H7B3I-DK.
You can start to work with STM32H7B3I-DK in many IDEs including CubeIDE, Keil or IAR.
In CubeIDE, ST’s official IDE, there are many examples and ready-to-use projects to explore all the capabilities of this board.
We also host a simple ready-to-use project which contains only the required display and touch and drivers, and LVGL. See https://github.com/lvgl/lv_port_stm32h7b3i_disco.
Zephyr also supports this board.
The board is equipped with a programmer/debugger so all you need to do is connect the USB cable and hit the Run or Debug buttons. We have tested the board in CubeIDE and the debug experiment was very smooth. The usual debug features of Eclipse were working well.
STM32H7B3I-DK is built with the powerful STM32H7B3LI MCU. The 280 MHz clock speed, and the plenty of internal memory makes it a perfect choice to create eye-catching user interfaces.
This is a robust board, with plenty of memory and peripheries. We highly recommend it to get started with UI development.