Last edited 10 months ago

STM32CubeMP15 Package

(Redirected from STM32CubeMP1 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 processor. It references also other interesting wiki articles to better understand and use the STM32CubeMP15 Package.

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

STM32CubeMP15 Package, running on the Armยฎ Cortexยฎ-M4 processor, 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 processors running with Linux on Armยฎ Cortexยฎ-A7, and processors 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.
Information
Note:

2. Software architecture overview[edit | edit source]

Software architecture overview is described in STM32CubeMP15 Package architecture.

3. STM32CubeMP15 Package structure[edit | 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.


4. STM32CubeMP15 Package content[edit | edit source]

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

4.1. Drivers[edit | 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 | 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 | 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 | 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 | edit source]

The Middlewares folder contains all available STM32Cube Middlewares including:

  • FreeRTOS
  • OpenAMP
Information
Note:

4.3. Projects[edit | 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.


ATemplate 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 STM32MP157x-EV1ย Evaluation board and STM32MP157x-DK2ย Discovery kit :

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

Legend:

  • (*)ย : List of STM32MP157x-DK2 and STM32MP157x-EV1 examples available with 3 IDEs ( STM32CubeIDE, IARTM, KEILยฎ), the others are only available with STM32CubeIDE.
Level Module Name Project Name Description STM32MP157x-DK2 STM32MP157x-EV1 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 referred 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 | 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.