Skip to main content
Laurids_PETERSEN
ST Community Manager
February 18, 2025

STM32H5 workshop

  • February 18, 2025
  • 9 replies
  • 5800 views

Join our 3-hour online workshop explore the STM32H5's performance, communication, and security features of the STM32H5. Our experts demonstrate how these features can enhance your design.

See the STM32H5 in action with a live embedded application example. Learn about GPIO states retention, I3C, GPDMA, a new mechanism to protect memory content, and more. Try them out yourself with guidance from our STM32 specialists.

The NUCLEO-H563ZI board is used for this workshop. 

What you'll learn

  • Beginner topics: learn basic peripheral use cases, such as GPIO control (in low power modes) and printf.
  • Intermediate topics: understand more complex peripherals like GPDMA, I3C, low power modes, and new memory readout protection mechanism (product state).
  • Expert topics: discover advanced new peripherals (for example, USB) and their integration with middleware libraries and stacks like USBX.

Ready to get started?

You can find a list of prerequisites in the first video starting at 0:45. Installation guide of the software component can be found here.

The video series is available at our YouTube playlist embedded below, or at the URL:
https://www.youtube.com/playlist?list=PLnMKNibPkDnEX2L5VcdJRQ5fb1FDwgQZC

Join the discussion

Share your thoughts, ask questions, and engage with fellow developers. Our experts are active in this post and are excited to hear your feedback.

Additional resources

9 replies

Explorer
April 8, 2025

@Laurids_PETERSEN Hello,

I am trying to implement the GPDMA on stm32H563zi as same that you did in stm32H5 workshop, but it is not working in my case.
I have made the same setup, and the configuration of .ioc file for standard request mode and Linked-List mode.

kindly please share and suggest updated document to follow along to implement the GPDMA on stm32H563zi peripherals in both standard request mode as well as Linked-List mode.

Regards.

ST Employee
April 9, 2025

Hello,

Thank you for your remark. Could you please share with me the setup (versions of the tools) you have used during your tests and which of GPDMA labs have you tested on your side (basic or Linked List), please?

We will check it on our side and provide you the solution.

Thank you

ST Employee
April 25, 2025

Hello @YM0 

Let me share with you the link to our additional materials related to STM32H5 workshop we have organized some time ago. You can find there the complete set of step-by-step examples with GPDMA in various modes.

STM32H5 step-by-step workshop 

I hope it helps.

Best Regards,

 

Associate III
September 8, 2025

Hello,

Do you have a tutorial about implementing USB CDC without THREADX on the STM32H5 MCU?

I would like to implement it in a baremetal project?

ST Employee
September 8, 2025

Hello,

We have more examples on one of our Gihub repositories, but there is no video o those.

The one most useful for you could be the one created on STM32U5 platform:

https://github.com/ST-TOMAS-Examples-USB/U5_USBX_Device_CDC_ACM_Standalone

I hope it helps.

Best Regards,

Associate III
September 9, 2025

Thanks you for the link @Artur IWANICKI 

Is there also a reference implementation using FreeRTOS?

MichaelDevine
Associate II
November 8, 2025

The X-Nucleo-IKS0103 is discontinued. Do you have a suggestion for another expansion board with a component that supports i3c, for the i3c portion of the workshop?

Visitor II
January 11, 2026

Hello,

Thank you for sharing your example. I am also trying to use GPDMA to transfer data blocks via SPI with precise time slots. I repeated your example on the Nucleo H503RB and everything worked as expected.

As a first step, I just tried to address the “data” buffer on the SPI, but it doesn't work.

These are the lines of code I modified:

In main.c
ATOMIC_SET_BIT(hspi2.Instance->CFG1, SPI_CFG1_TXDMAEN);
__HAL_SPI_ENABLE(&hspi2);

in linkedlist.c
pNodeConfig.SrcAddress = (uint32_t)data;
pNodeConfig.DstAddress = (uint32_t)&(SPI2->TXDR); /* was (uint32_t)&(USART1->TDR) */

(The SPI2 configuration is not visible here, but I tested it by using the HAL and I see it working both with and without DMA).

 

Any suggestions are greatly appreciated. Thanks in advance, Flavio.

 

Andrei Chichak
Lead
March 2, 2026

@fgiava There's some issues with the H5 startup code with DMA and SPI that is generated by CubeMX.

From what I've seen, the only configuration that works is when using 8-bit transfers. This avoids a bug where the transfer sizes (byte/halfword/word) are not filled in in the descriptors. Byte is encoded as zero, which happens to match the uninitialized descriptor, and the SPI is started. For halfword and word transfers, the size does not match the uninitialized zero, and the SPI start fails with HAL_ERROR.

I'm waiting on an assistance request (through my vendor) but it's been about 3 weeks and there are requests on this issue through these communities going back over 2 years.