STM32 Development Board—-STM32MP157

STM32 development board (STM32MP157) introduction

The STM32 development board (STM32MP157) also known as STM32MP157 development board, it is an ARM dual Cortex-A7 core + single Cortex-M4 core heterogeneous dual stm32mp157 processor -based circuit board. The STM32 development board (STM32MP157) is a learning tool that can not only develop the hardware and software of the STM32MP157 microcontroller, but also develop the stm32mp157 Linux operating system (driver development, application development, and IU interface development).

STM32 development board

The STM32 development board (STM32MP157) adopts a baseboard + core board design. The core board adopts two chips: MCU (32-bit microcontroller) + MPU (32-bit microprocessor), and integrates two Cortex-A7 stm32mp157 Linux kernel application processor cores with a main frequency of 800MHz ( It supports open source stm32mp157 Linux operating system to handle complex logic tasks) and a Cortex-M4 stm32mp157 M4 microcontroller core with a main frequency of 209MHz (perfectly following the existing STM32 MCU ecosystem), which not only fully meets the flexibility requirements of various applications, but also it achieves the best performance and low power consumption, and also supports 3D graphics processing unit (3D GPU). The STM32MP157 baseboard integrates modules such as Bluetooth, stm32mp157 WIFI, buzzer, and six-axis sensors for learning.

The STM32 development board with WIFI (STM32MP157) is both an MPU microprocessor circuit board and an MCU microcontroller circuit board. From the learner’s point of view, it can not only learn the embedded Linux operating system, but also learn various module functions of the STM32 microcontroller. One board is dual-use, saving learning costs. From the development point of view, the STM32 development board (STM32MP157) has rich resources and strong performance, you can easily get the STM32 development board tutorial. It is very easy to learn the embedded Linux operating system after learning the STM32 series of microcontrollers. The STM32 development board with WIFI (STM32MP157) is very suitable for STM32 technicians and beginners who are stm32mp157 getting started to learning the embedded stm32mp157 Linux  operating system.

STM32 development board (STM32MP157) introduction

  • 1. Rich interface

The core board of the STM32MP157 development board has rich lead-out interfaces, which can be connected to many sensors to meet the various needs of industrial customers as much as possible.

It can meet 8 serial ports, 1 of network port, 2 of SDMMC, 1 of stm32mp157 QSPI, 2 of stm32mp157 I2C and several stm32mp157 GPIOs at the same time.

STM32MP157 development board kit core board

stm32mp157 GPIO leads to peripheral pins 

  • 2. Powerful hardware configuration

The baseboard of the STM32MP157 development board integrates resources such as Gigabit stm32mp157 Ethernet interface, stm32mp157 HDMI interface (connected to the display), MIPI DSI (connected to the LCD screen), Wi-Fi & Bluetooth, six-axis sensor, and high-performance audio decoding chip. The motherboard has complete resources and powerful functions. It is equipped with the self-developed Cotex-A7/M4 emulator, which can be used for full-featured development and learning. At the same time, the optional modules are diversified, which can expand various development projects such as drivers, UI interfaces, and artificial intelligence vision. The supporting expansion board is rich in resources, including more than 10 mainstream sensors, executive devices and bus control devices, etc., which can expand various AIOT development projects such as environmental data acquisition and monitoring, smart medical care, smart security, industrial electricity meters, etc.

stm32 development board with wifi
  • 3. The core board of the STM32 development board (STM32MP157) adopts the stamp hole design

In the main board imposition, the small plates need to be connected by ribs. In order to facilitate cutting, there will be some small holes on the ribs, similar to the holes on the edge of the stamps, which are called stamp holes. The design is beautiful and delicate, and each hole needs to be carefully punched to ensure the quality of the core board, which can be used with confidence.

Core board of stm32 development board with wifi
stm32 development board core board stamp hole
  • 4. Supports multiple operating systems  

The STM32MP157 development board supports Linux + QT, Ubuntu, Debian and other embedded operating systems, as well as embedded real-time operating systems such as FreeRTOs, ucOS-1II, HuaweiLiteos. oneOS, RTX, RT-Thread, etc.

  • 4. STM32 development board (STM32MP157) has rich information   

The STM32MP157 development board is rich in information, mainly divided into 5 parts: STM32 M4 kernel development, FREERTOS, stm32mp157 Linux basic + driver, QT, stm32mp157 python, the corresponding stm32mp157 tutorial and routines,stm32mp157 user manual are all open source, if required, welcome to contact us.

  • STM32 development board (STM32MP157) core board hardware configuration list
stm32 development board iot core board
  • STM32 development board (STM32MP157) baseboard hardware configuration list

The baseboard of the STM32 development board kit (STM32MP157)  adopts 2-layer PCB, the overall size is 200*135.5mm, onboard 4G module interface, Gigabit stm32 development board Ethernet, Wi-Fi & Bluetooth, audio, 232 stm32mp157 UART, can, 485, stm32mp157 HDMI, MIPI DSI, stm32mp157 USB, LCD interface, six-axis Resources such as sensors, SD card sockets, stm32mp157 JTAG program debugging interface and stm32mp157 GPIO expansion ports. Rich configuration, high cost performance, suitable for novice users or enterprise users for product development.

stm32 development board iot

Our company can provide the complete software and hardware of the STM32MP157 development board stm32mp157 BSP:

The software data includes U-boot source data (source code of Uboot, Linux kernel, build image, etc.), kernel source code, file system, compiled firmware and various QT applications;

The hardware information includes: core board and baseboard package library, baseboard application stm32mp157 reference design schematic, hardware stm32mp157 reference manual, etc. With these materials can greatly reduce product development time and speed up product formation.

We also have other stm32 development boards , such as mini stm32 development board,If you want to have stm32 development board price, or want to buy stm32 development board, or have any other needs, please contact us.

STM32 development board schematic of STM32MP157

  • STM32MP157 development board core board schematic
STM32 development board schematic of power
STM32 development board schematic of stamp hole
stm32 discovery board schematic of  STM32MP157 development board
stm32 discovery kit schematic of  STM32MP157 development board
  • STM32MP157 development board baseboard schematic
stm32 development board schematic of baseboard
stm32 development board schematic
stm32 development board schematic of stm32 development board pinout
stm32mp157c-dk2 schematic of stm32mp157 wifi
stm32mp157 schematic
stm32mp157f-dk2 schematic
stm32mp157 dk2 schematic
stm32 minimum system development board schematic
microcontroller development board schematic
stm32 development board jtag
stm32 discovery board schematic pdf
stm32 discovery board schematic pdf of STM32MP157 development board
stm32 evaluation board schematic
stm32mp157 schematic of STM32MP157
stm32 develoapment board schematic for power

STM32 development board projects – stm32mp157 application

The STM32 development board (STM32MP157) uses the Linux operating system to develop a set of cool QT UI interface. The interface uses QT stm32 development board programming, the version is novel, the performance is strong, and the QT mainstream technology is used, and the application interface is smoother. The interface integrates more than 10 applications, comes with a virtual keyboard, and can also be controlled with a stm32mp157 mouser and keyboard, including music players, cameras, weather forecasts, and more. It is recommended to use the LCD screen to display, the touch effect and the adaptation effect are good.

stm32mp157 example
Auto Meter
stm32mp157 m4 example
4G module
stm32mp157c-dk2 examples
Backlight adjustment
sensor interface
UDP chat interface
TCP server interface
3D cube rendering interface
ADC and DAC interface
WIFI interface

1. Hardware design

In order to use the stm32mp157 USART to realize the communication between the development board and the computer, a USB-to-USART IC needs to be used. We choose the CH340G chip to realize this function.

CH340G is a USB bus adapter chip, which can realize USB to USART, USB to IRDA infrared or USB to printer interface. We use its USB to USART function. See the picture for the specific circuit design.

We connect the TXD pin of CH340G to the RX pin of UART4 through 74LVC1G157 and jumper cap J16, and connect the RXD pin of CH340G to the TX pin of UART4 through 74LVC1G157 and jumper cap J15. The CH340G chip is integrated on the development board, and its ground wire (GND) has been connected to the GND of the controller. If we want to use serial port 3, then we can unplug the jumper cap that is connected by default in the development board, and then connect the communication interface between USART3 and CH340G with a DuPont cable to realize communication. This is the advantage of using the jumper cap, not Fix the communication pins of CH340G.

4G module

In the STM32MP157 development board, except for USART1, which is exclusive to the A7 core, the other seven serial ports can be assigned to M4 or A7. Since UART4 has been output as stm32mp157 Linux information by default, USART3 is used here as the serial port experiment.

We need to unplug the J15 J16 jumper caps, use Dupont wire to connect RXD_1 to UART3_RX, and connect TXD_1 to UART3_TX, as shown in the figure below.

4G module

First, find the content of UART3 on the stm32mp157 schematic diagram of the baseboard.

Then determine the pins used by SART3 from the core board. It can be seen that USART3_TX and USART3_RX use the PB10 and PB12 pins respectively.

2. Software design

Select the serial port to be configured in Connectivity. In this section, the experiment uses USART3.

Select Assign to Cortex-M4 core and select Asynchronous mode in Mode. The serial port can be configured in Parameter Settings. The default settings are: baud rate 115200, 8 data bits, 1 stop bit, no parity bit. This is also the most commonly used configuration in serial ports. You can modify the serial port parameters according to your needs. In addition to these basic parameter configurations, there are some more advanced configuration parameters. This chapter only explains the most commonly used configurations.

The way to enable the USART interrupt is very simple, just check the interrupt enable of USART3 in the NVIC.

The USART3_TX and USART3_RX pins on the development board use PB10 and PB12 respectively. After configuring the serial port parameters, you need to select the pin where USART3 is located and set it to serial port mode.Set the PB10 pin to USART3_TX mode.

Set PB12 pin to USART3_RX mode

In the previous steps we have assigned USART3 to Cortex-M4, there is no need to reconfigure the pins to the M4 core here.

Enable HSE clock

Set the clock of the Cortex-M4 to 209Mhz

At the same time, you can also choose to adjust the clock of USART3

3. structure related to USART initialization.

The initialization settings of USART3 have been completed here, and the project code can be generated. Before we enter the code and see how USART3 is initialized and works, let’s first understand the structure related to USART initialization.

3.1 UART_HandleTypeDef structure

  The serial port uses the UART_HandleTypeDef structure to describe a serial port device. Some members are as follows:

1) Instance pointer: used to point to the base address of the serial port register used by the user;

2) Init serial port initialization structure: It is used to configure the communication parameters of the serial port, such as baud rate, serial port data bits, stop bits and so on. For detailed parameter description, please see the analysis of the initialization structure below;

3) AdvancedInit serial port advanced function configuration structure: It is used to configure the advanced functions of the serial port, such as automatic baud rate, MSB first and so on. This chapter is temporarily unavailable, so it will not be explained in detail;

4) PTXBuffPtr, TXXferSize, TXXferCount: are the address pointer of the data to be sent, the size of the data to be sent and the number of data to be sent;

5) PRXBuffPtr, RXXferSize, RXXferCount: are the address pointer to the stored data, the size of the received data, and the number of received data;

6) Mask: The serial port accepts the mask of the register, which is used to store the parity bit of the data, which is related to the Parity parameter in the initialization structure;

7) hdmatx, hdmarx structure: configure the DMA specific parameters of the serial port to send and receive data;

8) Lock: serial port object resource lock. This structure is mainly responsible for allocating lock resources. You can choose HAL_UNLOCKED or HAL_LOCKED as two parameters. If the value of gState is equal to HAL_UART_STATE_RESET, it is considered that the serial port is not initialized. At this time, the lock resource is allocated, and the HAL_UART_MspInit function is called to initialize the GPIO and clock of the serial port. This part of the code is used to implement the function of the bottom layer configuration of the serial port.

9) EState, RXState: The structure of the serial port’s sending state, the working state and the structure of the serial port’s receiving state, respectively. HAL_UART_StateTypeDef is an enumeration type that lists the state values ​​of the serial port in the working process. Some values ​​are only applicable to EState, such as HAL_UART_STATE_BUSY;

10) ErrorCode: Serial port error operation information. It is mainly used to store the error information of serial port operation.

11) RXISR: function pointer, usually used to handle serial port receive interrupts

12) TXISR: Function pointer, usually used to handle serial port send interrupts.

3.2 UART_InitTypeDefstructure

This structure is used to configure the communication mode of the serial port. It is embedded in the UART_HandleTypeDef structure and is defined as follows

1) BaudRate: Baud rate setting. Generally set to 2400, 9600, 19200, 115200. The standard library function will calculate the USARTDIV value according to the set value, see Equation 20-1, and set the USART_BRR register value.

2) WordLength: data frame word length, optional 8 bits or 9 bits. It sets the value of the M bit of the USART_CR1 register. If parity control is not enabled, 8 data bits are generally used; if parity is enabled, it is generally set to 9 data bits.

3) StopBits: stop bit setting, optional 0.5, 1, 1.5 and 2 stop bits, it sets the value of the STOP[1:0] bits of the USART_CR2 register, generally we choose 1 stop bit.

4) Parity: Parity control selection, optional USART_Parity_No (no parity), USART_Parity_Even (even parity) and USART_Parity_Odd (odd parity), which sets the value of the PCE bit and the PS bit of the USART_CR1 register.

5) Mode: USART mode selection, there are USART_Mode_Rx and USART_Mode_Tx, allowing to use logical OR operation to select two, it sets the RE bit and TE bit of the USART_CR1 register.

6) HwFlowCtl: Hardware flow control selection, only valid in hardware flow control mode, options are: enable RTS, enable CTS, enable both RTS and CTS, and disable hardware flow.

7) OverSampling: Oversampling selection, choose 8 times oversampling or 16 oversampling.

8) OneBitSampling: One sampling bit method is enabled. Either the three sample bit method or the one sample bit method can be selected.

9) ClockPrescaler: serial port clock frequency division factor. By default, no frequency division is selected.

3.3 MX_USART3_UART_Init serial port initialization function

After understanding the two structures described above, you can enter the MX_USART3_UART_Init serial port initialization function

The content in the MX_USART3_UART_Init function is also relatively simple. Some basic configurations are performed on USART3, and HAL_UART_Init is called to initialize huart3. The function of the HAL_UART_Init function is similar to that of the HAL_GPIO_Init function that we have explained directly. They all initialize some low-level registers. Interested readers can follow the ideas of our direct explanation of the HAL_GPIO_Init function to track how the serial port registers are initialized. Another point to note is that the HAL_UART_MspInit function is called in HAL_UART_Init to initialize the GPIO pins and clock. The HAL_UART_MspInit function is also generated by STM32CubeIDE for us. The detailed code is as follows:

The functions of the HAL_UART_MspInit function can be divided into setting the serial port clock, pin functions and interrupts. The configuration of the relative serial port is more low-level.

3.4 Serial transceiver function

Among the transceiver functions of the HAL library, the following two groups of transceiver functions are often used:


huart : UART_HandleTypeDef type structure pointer, which contains the base address of the serial port.

PData : The first address of sending (or receiving) data.

Size : The size of the sent (or received) data.

Timeout : The function timeout period.

return value

Success: HAL_OK

Failure: HAL_BUSY is returned when the serial port is occupied, HAL_TIMEOUT is returned when Timeout is exceeded, and HAL_ERROR is returned when the pData or Size parameter is incorrect.

When the two serial port transceiver functions are called, the function will send in a blocking manner, and when the sending is not completed when the timeout period expires, the sending function will exit.


huart : UART_HandleTypeDef type structure pointer, which contains the base address of the serial port.

pData : The first address of sending (or receiving) data.

Size : The size of the sent (or received) data.

return value

Success: HAL_OK

Failure: Return HAL_BUSY when the serial port is occupied, and return HAL_ERROR when the pData or Size parameter is incorrect.

When using the interrupted serial port transceiver function, two functions are mainly completed.

Enable the corresponding serial port receive or transmit interrupt.

Assign value to RxISR function pointer or TxISR function pointer in UART_HandleTypeDef.

After completing the interrupt sending and receiving, turn off the receiving or sending interrupt enable, and assign the RxISR function pointer or TxISR function pointer in UART_HandleTypeDef to NULL;

If you need more program code, please contact us.

STM32 development board (STM32MP157) function application field

The core board of the STM32 development board (STM32MP157) is equipped with 1GB DDR3 memory, 8GB stm32mp157 EMMC storage, high performance, low stm32mp157 power consumption, high cost performance, It can mainly focus on industrial automation control (smart gateways, power equipment, security engineering, handheld devices, digital terminals, intelligent transportation, medical electronics, instrumentation and other fields).

STM32 development board product

STM32 development board (STM32MP157) shipping standard list

1 of STM32MP157 development board
1 of power adapter
1 of Micro-USB data cable
1 of Typc data cable
1 of packing box

STM32 development board (STM32MP157) external expansion module

4.3 inch RBG screen 800*480
7 inch RGB screen 800*480
OV5640 camera module
4G module (with GPS)

If you want to buy STM32 development board, welcome to contact us.

You can click to view our other types of stm32 development board for dev board specs  and stm32 development board price.