Last edited 9 months ago

STM32CubeMP15 Package

Applicable for STM32MP15x lines

=link

This article introduces the structure and the content of the STM32CubeMP15 Package / STM32CubeMP1 Package (a.k.a., STM32CubeMP15 / STM32CubeMP1) , the embedded software part of STM32Cube™, running on the Arm® Cortex®-M4 coprocessor. It references also other interesting wiki articles to better understand and use the STM32CubeMP13 Package.

1. What is the STM32CubeMP15 Package?[edit source]

STM32CubeMP15 Package, running on the Arm® Cortex®-M4 coprocessor, consists of:

  • The hardware abstraction layer (HAL), enabling portability between different STM32 devices via standardized API calls
  • The low-layer API (LL), a light-weight, optimized, expert oriented set of APIs designed for runtime efficiency and so enhanced performance
  • The board support package drivers (BSP), based on HAL drivers, an API set for the evaluation board and third-party components.
  • A collection of middleware components (such as FreeRTOS)
  • A collection of examples, running on an MPU board and allowing demonstration of a basic implementation of features from a set of IPs

The STM32CubeMP15 Package is based on the STM32CubeMCU Package and has been adapted to a Linux framework (OpenSTLinux).


STM32CubeMP15 Package introduces new components such as OpenAMP and ResourceManager that allow easy communication and resource sharing between main processors running with Linux on Arm® Cortex®-A7, and MCU coprocessors running on Arm® Cortex®-M4.

  • OpenAMP is a library implementing the remote processor service framework (RPMsg) which is a virtio-based messaging bus that allows a local processor to communicate with remote processors available on the system.
  • ResourceManager is a utility that handles peripheral-accessibility requests and system-resource configuration.
Info white.png Information
Note:

2. Software architecture overview[edit source]

Software architecture overview is described in STM32CubeMP15 Package architecture.

3. STM32CubeMP15 Package structure[edit source]

This chapter describes the structure of the STM32CubeMP15 Package (drivers, middleware components...).

STM32CubeMP15 Package offers a highly portable Hardware Abstraction Layer (HAL), built around a generic and modular architecture.

This HAL allows the upper layers, middleware and application, to implement functions whatever the STM32MP1 device used. This improves the library code re-usability and guarantees easy portability from one device to another.

STM32CubeMP15 Package also offers a highly portable Low Layer interface (LL), which allows a quick, simple and optimized API to access the STM32MP15 registers.

The STM32CubeMP15 Package is provided with the structure shown below. STM32CubeMPUPackageStructurev3.png


4. STM32CubeMP15 Package content[edit source]

This chapter describes the content of the STM32CubeMP15 Package (drivers, middleware components...).

4.1. Drivers[edit source]

The Drivers folder contains all the STM32Cube Drivers, including BSP and HAL drivers.

The STM32CubeMP15 Package provides all driver user manuals:

Chapters, here after, give the list of available BSP, HAL and LL drivers.

4.1.1. HAL drivers[edit source]

STM32CubeMP15 HAL Driver items Description
ADC
 *          This driver provides firmware functions to manage the following 
 *          functionalities of the Analog to Digital Convertor (ADC)
 *          peripheral:
 *           + Initialization and de-initialization functions
 *             ++ Initialization and Configuration of ADC
 *           + Operation functions
 *             ++ Start, stop, get result of conversions of regular
 *                group, using 3 possible modes: polling, interruption or DMA.
 *           + Control functions
 *             ++ Channels configuration on regular group
 *             ++ Analog Watchdog configuration
 *           + State functions
 *             ++ ADC state machine management
 *             ++ Interrupts and flags management
 *           + Operation functions
 *             ++ Start, stop, get result of conversions of ADC group injected,
 *                using 2 possible modes: polling, interruption.
 *             ++ Calibration
 *               +++ ADC automatic self-calibration
 *               +++ Calibration factors get or set
 *             ++ Multimode feature when available
 *           + Control functions
 *             ++ Channels configuration on ADC group injected
 *           + State functions
 *             ++ ADC group injected contexts queue management
CEC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the High Definition Multimedia Interface
 *          Consumer Electronics Control Peripheral (CEC).
 *           + Initialization and de-initialization function
 *           + IO operation function
 *           + Peripheral Control function
CRC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Cyclic Redundancy Check (CRC) peripheral:
 *           + Initialization and de-initialization functions
 *           + Peripheral Control functions
 *           + Peripheral State functions
 *           + Extended features functions
CORTEX
 *          This driver provides firmware functions to manage the following
 *          functionalities of the CORTEX (MPU, Cache, …):
 *           + Initialization and de-initialization functions
 *           + Peripheral Control functions
CRYP
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Cryptography (CRYP) peripheral:
 *           + Initialization and de-initialization functions
 *           + AES processing functions
 *           + DES processing functions
 *           + TDES processing functions
 *           + DMA callback functions
 *           + CRYP IRQ handler management
 *           + Peripheral State functions
 *           + Extended AES processing functions
DAC
 *         This driver provides firmware functions to manage the following
 *         functionalities of the Digital to Analog Converter (DAC) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions
 *           + Peripheral State and Errors functions
 *           + Extended features functions
DCMI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Digital Camera Interface (DCMI) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions
 *           + Peripheral State and Error functions
DFSDM
 *          This driver provides firmware functions to manage the following 
 *          functionalities of the Digital Filter for Sigma-Delta Modulators
 *          (DFSDM) peripherals:
 *           + Initialization and configuration of channels and filters
 *           + Regular channels configuration
 *           + Injected channels configuration
 *           + Regular/Injected Channels DMA Configuration
 *           + Interrupts and flags management
 *           + Analog watchdog feature
 *           + Short-circuit detector feature
 *           + Extremes detector feature
 *           + Clock absence detector feature
 *           + Break generation on analog watchdog or short-circuit event
 *           + Set and get pulses skipping on channel.
DMA
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Direct Memory Access (DMA) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral State and errors functions
 *           + Extended features functions
EXTI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the General Purpose Input/Output (EXTI) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
FDCAN
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Flexible DataRate Controller Area Network
 *          (FDCAN) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Configuration and Control functions
 *           + Peripheral State and Error functions
FMC_SRAM
 *          This driver provides a generic firmware to drive SRAM memories
 *          mounted as external device.
GPIO
 *          This driver provides firmware functions to manage the following
 *          functionalities of the General Purpose Input/Output (GPIO) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Extended Peripheral Control functions
HAL
 *          This driver provides firmware functions to manage the following
 *          functionalities of HAL, Tick, SYSCFG, DBGMCU:
 *           + Initialization and de-initialization functions
 *           + HAL Initialization and de-initialization functions
 *           + Configure the source of the time base
 *           + HAL Control functions
 *           + Tick management (get/set/inc/priority/suspend/resume)
 *           + Get HAL revision, the device revision identifier, the device identifier
 *           + Enable/Disable DBG wake up on AIEC
 *           + Enable/Disable the Debug Module during Domain1 SLEEP mode
 *           + Enable/Disable the Debug Module during Domain1 STOP mode
 *           + Enable/Disable the Debug Module during Domain1 STANDBY mode
 *           + Configure the internal voltage reference buffer voltage scale
 *           + Configure the internal voltage reference buffer high impedance mode
 *           + Tune the Internal Voltage Reference buffer (VREFBUF)
 *           + Enable/Disable the Internal Voltage Reference buffer (VREFBUF)
 *           + Ethernet PHY Interface Selection either MII or RMII
 *           + Analog Switch control for dual analog pads
 *           + Enable/Disable the booster to reduce the total harmonic distortion of the analog
 *           + Enable/Power-down the I/O Compensation Cell
 *           + To Enable/Disable optimize the I/O speed when the product voltage is low
 *           + Code selection for the I/O Compensation cell
HASH
 *          This driver provides firmware functions to manage the following
 *          functionalities of the HASH peripheral:
 *           + Initialization and de-initialization methods
 *           + HASH or HMAC processing in polling mode
 *           + HASH or HMAC processing in interrupt mode
 *           + HASH or HMAC processing in DMA mode
 *           + Peripheral State methods
 *           + HASH or HMAC processing suspension/resumption
 *          Additionally, this driver provides functions to manage HMAC
 *          multi-buffer DMA-based processing for MD-5, SHA-1, SHA-224
 *          and SHA-256.
HSEM
 *          This driver provides firmware functions to manage the following
 *          functionalities of the semaphore peripheral:
 *           + Semaphore Take function (2-Step Procedure) , non blocking
 *           + Semaphore FastTake function (1-Step Procedure) , non blocking
 *           + Semaphore Status check
 *           + Semaphore Clear Key Set and Get
 *           + Release and release all functions
 *           + Semaphore notification enabling and disabling and callnack functions
 *           + IRQ handler management
I2C
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Inter Integrated Circuit (I2C) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral State and Errors functions
 *           + Extended features functions
IPCC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Inter-Processor communication controller
 *          peripherals (IPCC).
 *           + Initialization and de-initialization functions
 *           + Configuration, notification and interrupts handling
 *           + Peripheral State and Error functions
LPTIM
 *          This driver provides firmware functions to manage the following 
 *          functionalities of the Low Power Timer (LPTIM) peripheral:
 *           + Initialization and de-initialization functions.
 *           + Start/Stop operation functions in polling mode.
 *           + Start/Stop operation functions in interrupt mode.
 *           + Reading operation functions.
 *           + Peripheral State functions.
MDIOS
 *          This driver provides firmware functions to manage the following 
 *          functionalities of the MDIOS Peripheral.
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions
MDMA
 *         This driver provides firmware functions to manage the following
 *         functionalities of the Master Direct Memory Access (MDMA) peripheral:
 *           + Initialization/de-initialization functions
 *           + I/O operation functions
 *           + Peripheral State and errors functions
PWR
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Power Controller (PWR) peripheral:
 *           + Initialization and de-initialization functions
 *           + Peripheral Control functions
 *           + Peripheral Extended features functions
QUADSPI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the QuadSPI interface (QSPI).
 *           + Initialization and de-initialization functions
 *           + Indirect functional mode management
 *           + Memory-mapped functional mode management
 *           + Auto-polling functional mode management
 *           + Interrupts and flags management
 *           + MDMA channel configuration for indirect functional mode
 *           + Errors management and abort functionality
RCC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Reset and Clock Control (RCC) peripheral:
 *           + Initialization and de-initialization functions
 *           + Peripheral Control functions
 *           + Extended Peripheral Control functions
RNG
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Random Number Generator (RNG) peripheral:
 *           + Initialization and configuration functions
 *           + Peripheral Control functions
 *           + Peripheral State functions
RTC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Real-Time Clock (RTC) peripheral:
 *           + Initialization/de-initialization functions
 *           + Calendar (Time and Date) configuration
 *           + Alarms (Alarm A and Alarm B) configuration
 *           + WakeUp Timer configuration
 *           + TimeStamp configuration
 *           + Tampers configuration
 *           + Backup Data Registers configuration
 *           + RTC Tamper and TimeStamp Pins Selection
 *           + Interrupts and flags management
SAI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Serial Audio Interface (SAI) peripheral:
 *           + Initialization/de-initialization functions
 *           + I/O operation functions
 *           + Peripheral Control functions
 *           + Peripheral State functions
 *           + Modify PDM microphone delays.
SD
 *          This driver provides firmware functions to manage the following 
 *          functionalities of the Secure Digital (SD) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions 
 *           + Peripheral State functions
 *           + Extended features functions
SMARTCARD
 *          This driver provides firmware functions to manage the following
 *          functionalities of the SMARTCARD peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions
 *           + Peripheral State and Error functions
 *           + Extended features functions
SMBUS
 *          This driver provides firmware functions to manage the following
 *          functionalities of the System Management Bus (SMBus) peripheral,
 *          based on I2C principles of operation :
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral State and Errors functions
SPDIFRX
 *          This driver provides firmware functions to manage the following
 *          functionalities of the SPDIFRX audio interface:
 *           + Initialization and Configuration
 *           + Data transfers functions
 *           + DMA transfers management
 *           + Interrupts and flags management
SPI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Serial Peripheral Interface (SPI) peripheral:
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions
 *           + Peripheral State functions
 *           + IO operation functions
 *           + Peripheral Control functions
TIMER
 *          This driver provides firmware functions to manage the following 
 *          functionalities of the Timer (TIM) peripheral:
 *           + Time Base Initialization
 *           + Time Base Start
 *           + Time Base Start Interruption
 *           + Time Base Start DMA
 *           + Time Output Compare/PWM Initialization
 *           + Time Output Compare/PWM Channel Configuration
 *           + Time Output Compare/PWM  Start
 *           + Time Output Compare/PWM  Start Interruption
 *           + Time Output Compare/PWM Start DMA
 *           + Time Input Capture Initialization
 *           + Time Input Capture Channel Configuration
 *           + Time Input Capture Start
 *           + Time Input Capture Start Interruption 
 *           + Time Input Capture Start DMA
 *           + Time One Pulse Initialization
 *           + Time One Pulse Channel Configuration
 *           + Time One Pulse Start 
 *           + Time Encoder Interface Initialization
 *           + Time Encoder Interface Start
 *           + Time Encoder Interface Start Interruption
 *           + Time Encoder Interface Start DMA
 *           + Commutation Event configuration with Interruption and DMA
 *           + Time OCRef clear configuration
 *           + Time External Clock configuration
 *           + Time Hall Sensor Interface Initialization
 *           + Time Hall Sensor Interface Start
 *           + Time Complementary signal bread and dead time configuration  
 *           + Time Master and Slave synchronization configuration
 *           + Time Output Compare/PWM Channel Configuration (for channels 5 and 6)
 *           + Time OCRef clear configuration
 *           + Timer remapping capabilities configuration
U(S)ART
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Universal (Synchronous) Asynchronous Receiver Transmitter
 *          Peripheral (U(S)ART).
 *           + Initialization and de-initialization functions
 *           + IO operation functions
 *           + Peripheral Control functions
 *           + Peripheral State and Error functions
 *           + Peripheral Control functions
WWDG
 *          This driver provides firmware functions to manage the following
 *          functionalities of the Window Watchdog (WWDG) peripheral:
 *           + Initialization and Configuration functions
 *           + IO operation functions

4.1.2. LL drivers[edit source]

STM32CubeMP15 LL Driver items Description
ADC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the ADC peripheral:
 *           + Initialization/de-initialization functions
 *           + Configuration functions (ADC instance, group regular, group injected,
 *             channels, analog watchdog, oversampling, multimode)
 *           + IT/FLAGS management functions
BUS
 *          This driver provides firmware functions to manage the following
 *          functionalities of the BUS peripheral:
 *           + Enable/disable/reset clocks for all system BUS (AHB2, AHB3, AHB4, AHB5, AHB6,
 *             AXI, MLAHB, APB1, APB2, APB3, APB4, APB5)
CORTEX
 *          This driver contains a set of generic APIs that can be used by user:
 *           + SYSTICK configuration used by @ref LL_mDelay and @ref LL_Init1msTick functions
 *           + Low power mode configuration (SCB register of Cortex®-MCU)
 *           + API to access to MCU info (CPUID register)
DMA
 *          This driver provides firmware functions to manage the following
 *          functionalities of the DMA peripheral:
 *           + Initialization/de-initialization functions
 *           + Configuration functions
 *           + IT/FLAGS management functions
DMAMUX
 *          This driver provides firmware functions to manage the following
 *          functionalities of the DMAMUX peripheral:
 *           + Initialization/de-initialization functions
 *           + IT/FLAGS management functions
EXTI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the EXTI peripheral:
 *           + Initialization/de-initialization functions
 *           + IT/FLAGS/Trigger management functions
 *           + Configuration functions
FMC_SRAM
 *          This driver provides firmware functions to manage the following
 *          functionalities of the PSRAM peripheral:
 *           + Initialization/de-initialization functions
 *           + Timing management functions
 *           + Configuration functions
GPIO
 *          This driver provides firmware functions to manage the following
 *          functionalities of the GPIO peripheral:
 *           + Initialization/de-initialization functions
 *           + Data access functions
 *           + Port configuration functions
HSEM
 *          This driver provides firmware functions to manage the following
 *          functionalities of the HSEM peripheral:
 *           + IT/FLAGS management functions
 *           +Data management functions
I2C
 *          This driver provides firmware functions to manage the following
 *          functionalities of the I2C peripheral:
 *           + Initialization/de-initialization functions
 *           + IT/FLAGS management functions
 *           +Data management functions
 *           + Configuration functions
IPCC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the IPCC peripheral:
 *           + IT/FLAGS management functions
 *           + Enable/disable transmit and receive channels functions
LPTIM
 *          This driver provides firmware functions to manage the following
 *          functionalities of the LPTIM peripheral:
 *           + Initialization/de-initialization functions
 *           + IT/FLAGS management functions
 *           + Configuration (Trigger / Clock / Encoder / LPTIM) functions
PWR
 *          This driver provides firmware functions to manage the following
 *          functionalities of the PWR peripheral:
 *           + Initialization/de-initialization functions
 *           + FLAGS management functions
 *           + Configuration functions
RCC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the RCC peripheral:
 *           + Clocks management functions (HSE/HSI/CSI/LSE/LSI/MCO/PLL) 
 *           + RTC/TIMERS functions
 *           + IT/FLAGS management functions
 *           + De-initialization functions
 *           + Get system and peripherals clocks frequency functions
RTC
 *          This driver provides firmware functions to manage the following
 *          functionalities of the RTC peripheral:
 *           + Initialization/de-initialization functions
 *           + TIME/DATE/ALM functions
 *           + Configuration functions
SPI
 *          This driver provides firmware functions to manage the following
 *          functionalities of the SPI peripheral:
 *           + Initialization/de-initialization functions
 *           + IT/FLAGS management functions
 *           + Data / DMA management functions
 *           + Configuration functions
SYSTEM
 *          This driver provides firmware functions to manage the following
 *          functionalities of the SYSTEM peripheral:
 *           + SYSCFG and DBGMCU functions
TIM
 *          This driver provides firmware functions to manage the following
 *          functionalities of the TIM peripheral:
 *           + Initialization/de-initialization functions
 *           + Configuration functions (Time base, Capture Compare, Output and Input Channel,
 *             Timer Synchro, Break, DMA Burst Mode )
 *           + Counter clock selection functions
 *           + Timer input remapping functions
 *           + IT/FLAGS management functions
 *           + DMA management functions
 *           + Event management functions
USART
 *          This driver provides firmware functions to manage the following
 *          functionalities of the USART peripheral:
 *           + Initialization/de-initialization functions
 *           + Configuration functions (Irda, Smartcard, Half duplex,
 *             SPI Slave, LIN, Driver enable)
 *           + Advanced configurations services functions
 *           + IT/FLAGS management functions
 *           + DMA management functions
 *           + Data management functions
 *           + Execution functions
UTILS
 *          This driver provides firmware functions to manage the following
 *          functionalities of the UTILS peripheral:
 *           + Device Electronic Signature functions
 *           + DELAY functions
 *           + SYSTEM functions
WWDG
 *          This driver provides firmware functions to manage the following
 *          functionalities of the WWDG peripheral:
 *           + Enable / Disable functions
 *           + Configuration functions
 *           + IT/FLAGS management functions

4.1.3. BSP drivers[edit source]

The BSP drivers offer a set of APIs relative to the hardware components available in the hardware boards (LEDs, Buttons and COM port).

 ├── STM32MP15xx_DISCO
 │   ├── bumpversion.cfg
 │   ├── Release_Notes.html
 │   ├── STM32MP15xx_DISCO_BSP_User_Manual.chm
 │   ├── stm32mp15xx_disco_bus.c
 │   ├── stm32mp15xx_disco_bus.h
 │   ├── stm32mp15xx_disco.c
 │   ├── stm32mp15xx_disco_conf_template.h
 │   ├── stm32mp15xx_disco_errno.h
 │   ├── stm32mp15xx_disco.h
 │   ├── stm32mp15xx_disco_stpmic1.c
 │   └── stm32mp15xx_disco_stpmic1.h
 └── STM32MP15xx_EVAL
 │   ├── bumpversion.cfg
 │   ├── Release_Notes.html
 │   ├── STM32MP15xx_EVAL_BSP_User_Manual.chm
 │   ├── stm32mp15xx_eval_bus.c
 │   ├── stm32mp15xx_eval_bus.h
 │   ├── stm32mp15xx_eval.c
 │   ├── stm32mp15xx_eval_conf_template.h
 │   ├── stm32mp15xx_eval_errno.h
 │   ├── stm32mp15xx_eval.h
 │   ├── stm32mp15xx_eval_stpmic1.c
 │   └── stm32mp15xx_eval_stpmic1.h

4.2. Middlewares[edit source]

The Middlewares folder contains all available STM32Cube Middlewares including:

  • FreeRTOS
  • OpenAMP
Info white.png Information
Note:

4.3. Projects[edit source]

The "Projects" folder contains all STM32Cube examples that are classified in 3 levels as described below :

  • Level 0 : Examples. It uses only the HAL drivers without any middleware component. They are available in directory Firmware/Projects/<board_name>/Examples.
  • Level 1 : Applications. It provides typical use cases of each middleware component. They are available in directory Firmware/Projects/<board_name>/Applications.
  • Level 2 : Demonstrations. It involves all the HAL, BSP and middleware components. They are available in directory Firmware/Projects/<board_name>/Demonstrations.


A Template folder is available in Firmware/Projects/<board_name>/Templates and allows quick creation and building of any firmware application on a given board.

All examples respect the same structure :


   ├── OpenAMP_TTY_echo
   │   ├── readme.txt               describes the example behavior and the setup required to make it work
   │   ├── Inc                      contains all header files
   │   ├── Remoteproc               (optional): contains specific files related to the use of Linux® remote processor framework to load STM32Cube Cortex-M4 firmware
   │   ├── Src                      contains all the sources code files
   │   └── STM32CubeIDE                 contains the preconfigured project for Eclipse IDE


You will find below a list of examples, applications and demonstrations available for STM32MP157C-EV1 Evaluation board Warning.png and STM32MP157C-DK2 Discovery kit Warning.png:

Find below, the list of available projects for those boards:

Legend:

  • (*) : List of STM32MP157C-DK2 Warning.png and STM32MP157C-EV1 Warning.png examples available with 3 IDEs ( STM32CubeIDE, IARTM, KEIL®), the others are only available with STM32CubeIDE.
Level Module Name Project Name Description STM32MP157C-DK2 Warning.png STM32MP157C-EV1 Warning.png Mode Core
Examples
ADC ADC_SingleConversion_TriggerTimer_DMA Use the ADC to convert a single channel at each trig from a timer. The conversion data is transferred by DMA into an array, indefinitely (circular mode). x (*) x Production & Engineering Cortex®-M4
ADC ADC_AnalogWatchdog How to use the ADC peripheral to perform conversions with an analog watchdog and out-of-window interrupts enabled. - x Production & Engineering Cortex®-M4
ADC ADC_OverSampler How to configure and use the ADC to convert an external analog input combined with oversampling feature to increase resolution through the HAL API. - x Production & Engineering Cortex®-M4
ADC ADC_MultiChannelSingleConversion How to use an ADC peripheral to convert several channels. ADC conversions are performed successively in a scan sequence. - x Production & Engineering Cortex®-M4
CRC CRC_UserDefinedPolynomial This example demonstrates the configuration of the CRC using the HAL API. The CRC (cyclic redundancy check) calculation unit computes the 8-bit CRC code for a given buffer of 32-bit data words, based on a user-defined generating polynomial. x (*) x Production & Engineering Cortex®-M4
CRYP CRYP_AES_DMA This example provides a short description of how to use the CRYPTO peripheral to encrypt and decrypt data using AES-128 algorithm with ECB chaining mode. x (*) x Production & Engineering Cortex®-M4
CORTEX CORTEXM_MPU Presentation of the MPU feature. This example configures a memory area as privileged read-only, and attempts to perform read and write operations in different modes. x (*) x Production & Engineering Cortex®-M4
DAC DAC_SimpleConversion How to use the DAC peripheral to do a simple conversion. - x Production & Engineering Cortex®-M4
DMA DMA_FIFOMode This example provides a description of how to use a DMA to transfer a word data buffer from Flash memory to embedded SRAM with FIFO mode enabled through the HAL API. x (*) x Production & Engineering Cortex®-M4
FDCAN FDCAN_Loopback How to configure the FDCAN to operate in loopback mode. x (*) x Engineering Only Cortex®-M4
GPIO GPIO_EXTI How to configure external interrupt lines. x (*) x (*) Production & Engineering Cortex®-M4
HASH HASH_SHA224SHA256_DMA This example provides a short description of how to use the HASH peripheral to hash data using SHA224 and SHA256 algorithms. x (*) x Production & Engineering Cortex®-M4
I2C I2C_TwoBoards_ComDMA How to handle I2C transmit / receive data buffer between two boards, via DMA. - x Production & Engineering Cortex®-M4
I2C I2C_TwoBoards_ComIT How to handle I2C transmit / receive data buffer between two boards, using an interrupt. x (*) x Production & Engineering Cortex®-M4
LPTIM LPTIM_PulseCounter How to configure and use LPTIM to count pulses through the LPTIM HAL API. x (*) x Production (DK2) & Engineering (EV1 and DK2) Cortex®-M4
LPTIM LPTIM_PWM_LSE This example describes how to configure and use LPTIM to generate a PWM in low power mode using the LSE as a counter clock, through the HAL LPTIM API. - x Production & Engineering Cortex®-M4
PWR PWR_STOP_CoPro How to enter the CSTOP and STOP modes using CM4 core (also refered to as coprocessor) and wake up from this mode by using external wakeup interrupt. x (*) x Production Only Cortex®-M4
QSPI QSPI_ReadWrite_IT How to erase part of the QSPI memory, write data in IT mode, read data in IT mode and compare the result in an infinite loop. - x Production & Engineering Cortex®-M4
SPI SPI_FullDuplex_ComDMA_Master Data buffer transmission/reception between two boards via SPI in Polling mode. x (*) x Production & Engineering Cortex®-M4
SPI SPI_FullDuplex_ComDMA_Slave Data buffer transmission/reception between two boards via SPI using DMA mode. x (*) x Production & Engineering Cortex®-M4
SPI SPI_FullDuplex_ComIT_Master Data buffer transmission/reception between two boards via SPI using Interrupt mode. x (*) - Production & Engineering Cortex®-M4
SPI SPI_FullDuplex_ComIT_Slave Data buffer transmission/reception between two boards via SPI using Interrupt mode. x (*) - Production & Engineering Cortex®-M4
TIM TIM_DMABurst How to update the TIM2_CH4 timer period and the duty cycle using the DMA burst timer feature. x (*) x Production & Engineering Cortex®-M4
TIM TIM_OnePulse This example shows how to use the TIMER peripheral to generate a single pulse when a rising edge of an external signal is received on the TIMER Input pin. - x Production & Engineering Cortex®-M4
TIM TIM_PWMOutput This example shows how to configure the TIM peripheral in PWM (Pulse Width Modulation) mode. - x Production & Engineering Cortex®-M4
TIM TIM_Synchronization This example shows how to synchronize TIM2 and Timers (TIM8 and TIM1) in parallel mode. - x Production & Engineering Cortex®-M4
TIM TIM_TimeBase This example shows how to configure the TIM peripheral to generate a time base of one second with the corresponding Interrupt request. - x Production & Engineering Cortex®-M4
UART UART_TwoBoards_ComDMA UART transmission (transmit/receive) in DMA mode between two boards. x (*) - Production & Engineering Cortex®-M4
UART UART_TwoBoards_ComIT UART transmission (transmit/receive) in Interrupt mode between two boards. x (*) x Production & Engineering Cortex®-M4
UART UART_Receive_Transmit_Console UART transmission (printf/getchar) via console with user interaction. x (*) x Production & Engineering Cortex®-M4
WWDG WWDG_Example Configuration of the HAL API to periodically update the WWDG counter and simulate a software fault that generates an MCU WWDG reset when a predefined time period has elapsed. x (*) x Production & Engineering Cortex®-M4
Total number of examples: 48 20 28
Applications
CoproSync CoproSync_ShutDown Send a shutdown notification to the Cortex®-M4 so that it is able to take necessary actions before going to reset state. x (*) x Production Cortex®-M4
FreeRTOSTM FreeRTOS_ThreadCreation How to implement thread creation using CMSIS RTOS API. x (*) x (*) Production & Engineering Cortex®-M4
OpenAMP OpenAMP_Dynamic_ResMgr How to use OpenAMP MW + Virtual UART to create an Inter-Processor Communication channel seen as TTY device in Linux® OS. - x Production Cortex®-M4
OpenAMP OpenAMP_TTY_echo How to use OpenAMP MW + Virtual UART to create an Inter-Processor Communication channel seen as TTY device in Linux® OS x (*) x Production Cortex®-M4
OpenAMP OpenAMP_TTY_echo_wakeup How to use OpenAMP MW to enter in different power system operating mode (Run, Stop and Standby). x x Production Cortex®-M4
OpenAMP OpenAMP_raw How to use OpenAMP MW to create an Inter-Processor Communication channel x(*) x (*) Production Cortex®-M4
OpenAMP OpenAMP_for_signed_fw How to use OpenAMP MW + Virtual UART to create an
Inter-Processor Communication channel seen as TTY device in Linux OS for protected firmware loaded by OP-TEE secure application.
x(*) x Production Cortex®-M4
OpenAMP OpenAMP_FreeRTOS_echo How to use OpenAMP MW with FreeRTOSTM. x x Production Cortex®-M4
Total number of applications: 15 7 8
Demonstrations
AI AI_Character_Recognition This project demonstrates a complex application that is running on both CPU1(CA7) and CPU2(CM4) x x Production Cortex®-M4
Total number of demonstrations: 2 1 1
Templates
- Starter project This projects provides a reference template that can be used to build any firmware application in Engineering mode on Cortex®-M4 x (*) x (*) Engineering Cortex®-M4
Total number of templates: 2 1 1
Total number of projects: 67 29 38


  • Examples, applications and demonstrations for STM32MP157C-EV1
   ├── STM32MP157C-EV1           
   │   ├── Applications
   │   │   ├── CoproSync
   │   │       ├── CoproSync_ShutDown
   │   │   ├── FreeRTOS
   │   │       ├── FreeRTOS_ThreadCreation
   │   │   └── OpenAMP
   │   │       ├── OpenAMP_Dynamic_ResMgr
   │   │       ├── OpenAMP_for_signed_fw
   │   │       ├── OpenAMP_FreeRTOS_echo
   │   │       ├── OpenAMP_raw
   │   │       ├── OpenAMP_TTY_echo
   │   │       └── OpenAMP_TTY_echo_wakeup
   │   ├── Demonstrations
   │   │   └── AI_Character_Recognition
   │   ├── Examples
   │   │   ├── ADC
   │   │   │   └── ADC_AnalogWatchdog
   │   │   │   └── ADC_MultiChannelSingleConversion
   │   │   │   └── ADC_OverSampler
   │   │   │   └── ADC_SingleConversion_TriggerTimer_DMA
   │   │   ├── Cortex
   │   │   │   └── CORTEXM_MPU
   │   │   ├── CRC
   │   │   │   └── CRC_UserDefinedPolynomial
   │   │   ├── CRYP
   │   │   │   └── CRYP_AES_DMA
   │   │   ├── DAC
   │   │   │   └── DAC_SimpleConversion
   │   │   ├── DMA
   │   │   │   └── DMA_FIFOMode
   │   │   ├── FDCAN
   │   │   │   └── FDCAN_Loopback
   │   │   ├── GPIO
   │   │   │   └── GPIO_EXTI
   │   │   ├── HASH
   │   │   │   └── HASH_SHA224SHA256_DMA
   │   │   ├── I2C
   │   │   │   ├── I2C_TwoBoards_ComDMA
   │   │   │   └── I2C_TwoBoards_ComIT
   │   │   ├── LPTIM
   │   │   │   └──  LPTIM_PulseCounter
   │   │   │   └── LPTIM_PWM_LSE
   │   │   ├── PWR
   │   │   │   └── PWR_STOP_CoPro
   │   │   ├── QSPI
   │   │   │   └── QSPI_ReadWrite_IT
   │   │   ├── SPI
   │   │   │   ├── SPI_FullDuplex_ComDMA_Master
   │   │   │   └── SPI_FullDuplex_ComDMA_Slave
   │   │   ├── TIM
   │   │   │   └── TIM_DMABurst
   │   │   │   └── TIM_OnePulse
   │   │   │   └──TIM_PWMOutput
   │   │   │   └── TIM_Synchronization
   │   │   │   └── TIM_TimeBase
   │   │   ├── UART
   │   │   │   └── UART_Receive_Transmit_Console
   │   │   │   └── UART_TwoBoards_ComIT
   │   │   └── WWDG
   │   │       └── WWDG_Example
  • Examples, applications and demonstrations for STM32MP157C-DK2
   ├── STM32MP157C-DK2          
   │   ├── Applications
   │   │   ├── CoproSync
   │   │       ├── CoproSync_ShutDown
   │   │   ├── FreeRTOS
   │   │       ├── FreeRTOS_ThreadCreation
   │   │   └── OpenAMP
   │   │       ├── OpenAMP_for_signed_fw
   │   │       ├── OpenAMP_FreeRTOS_echo
   │   │       ├── OpenAMP_raw
   │   │       ├── OpenAMP_TTY_echo
   │   │       └── OpenAMP_TTY_echo_wakeup
   │   ├── Demonstrations
   │   │   └── AI_Character_Recognition
   │   ├── Examples
   │   │   ├── ADC
   │   │   │   └── ADC_SingleConversion_TriggerTimer_DMA
   │   │   ├── Cortex
   │   │   │   └── CORTEXM_MPU
   │   │   ├── CRC
   │   │   │   └── CRC_UserDefinedPolynomial
   │   │   ├── CRYP
   │   │   │   └── CRYP_AES_DMA
   │   │   ├── DMA
   │   │   │   └── DMA_FIFOMode
   │   │   ├── FDCAN
   │   │   │   └── FDCAN_Loopback
   │   │   ├── GPIO
   │   │   │   └── GPIO_EXTI
   │   │   ├── HASH
   │   │   │   └── HASH_SHA224SHA256_DMA
   │   │   ├── I2C
   │   │   │   └── I2C_TwoBoards_ComIT
   │   │   ├── LPTIM
   │   │   │   └── LPTIM_PulseCounter
   │   │   ├── PWR
   │   │   │   └── PWR_STOP_CoPro
   │   │   ├── SPI
   │   │   │   ├── SPI_FullDuplex_ComDMA_Master
   │   │   │   ├── SPI_FullDuplex_ComDMA_Slave
   │   │   │   ├── SPI_FullDuplex_ComIT_Master
   │   │   │   └── SPI_FullDuplex_ComIT_Slave
   │   │   ├── TIM
   │   │   │   └── TIM_DMABurst
   │   │   ├── UART
   │   │   │   └── UART_Receive_Transmit_Console
   │   │   │   ├── UART_TwoBoards_ComDMA
   │   │   │   └── UART_TwoBoards_ComIT
   │   │   └── WWDG
   │   │       └── WWDG_Example


5. Get started with STM32CubeMP15 Package[edit source]

The STM32CubeMP15 Package is available through the three packages (starter, developer, and distribution). To know how to get them, read STM32CubeMP15_Package_-_Getting_started article.