Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Split from this thread. Thank you for your previous responses and guidance. We are now planning to move to the STM32H750XBH6 (BGA package) with a 32-bit SDRAM (IS42S32400J-6TLSDRAM ) interface in our custom board design. Our project uses a 12.1-inch display with a 1024x768 resolution and the RGB to LVDS transmitter ic which is DS90C385AMTX_NOPB display ic In our previous design with a 16-bit SDRAM, we observed display rendering and FPS issues, which affected performance. To overcome this, we are considering upgrading to a 32-bit SDRAM for improved rendering speed and smoother graphics performance. Before proceeding further, we would like your confirmation on whether using a 32-bit SDRAM with the STM32H750XBH6 will actually improve the display rendering performance for our 1024x768 resolution. If there is no significant improvement even with 32-bit SDRAM, then moving ahead with this design would not be worthwhile. Please confirm this so that we can
Hello stm community. I am working on a project involving STM32H7 series MCU with Raw LCD panel of 24 bits. Since the display has no IC i am using the internal LTDC component to drive the lcd. So i have some questions can i drive the lcd backlight with My STM board or i just give some voltage to it . Some lcd says it needs 16 v power supply. Is there any complications in this and is it possible to do this way drive a Raw parallel 24 bit lcd with stm32 without lcd IC. give some expert opinions.
The serial port 1 code generated by the latest STM32CubeMX 6.13.0 will print garbled characters, and using the serial port routine UART_Printf in STM32Cube_FW_H7_V1.12.0 will also print garbled characters. It doesn't work when using the serial port routine UART_Printf in STM32Cube_FW_H7_V1.11.2. After comparison, there is a difference here. I can’t understand the function here. I will be careful whether changing it will affect other functions. *This post has been translated from Chinese to comply with the ST Community guidelines.
Hi everybody,This is the configuration of my setup:MC Motor Control Workbench v6.4.1LL library24V, 2 pole pairs, 5A, BLDC motor.Observer + PLL (Sensorless)Max speed 16000 rpmCustom board with STM32G491Control mode: speedCurrent measurement topology: 3 shuntI am testing motor control and tuning PID constants. When I apply some braking torque to the output shaft, sometimes the motor starts rotating in the opposite direction at full speed, and it stays there.I have experienced the same with v6.3.2It doesn't seem to be related to control constants.It looks like it has happened before in this forum (link) and it doesn't look like it was fixed.The plot with the reference and actual speed is attached.Has anybody experienced this before?Edit: 17/10/2025: add the missing attachment, board description, control mode and current measurement topology
Hey Guys,I’m facing an issue with motor operation using the STEVAL-ESC002V1 solution. Despite setting MC_set_speed(MAX_SPEED), the motor doesn’t reach full speed and runs unevenly with vibrations. It only rotates at a low speed instead of the expected maximum. I’ve attached my workspace configuration for reference. Kindly help me identify and resolve this issue to achieve smooth and stable motor operation. int main(void){ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init(); /* Configure the system clock */SystemClock_Config(); /* Initialize all configured peripherals */MX_GPIO_Init();#if (defined(POTENTIOMETER)||defined(CURRENT_SENSE_ADC)||defined(VBUS_SENSE_ADC)||defined(TEMP_SENSE_ADC))MX_ADC_Init();#endif#if defined(ST_PWM_INTERFACE)MX_IF_TIMx_Init();#endifMX_LF_TIMx_Init();MX_HF_TIMx_Init();MX_ZC_TIMx_Init();#if defined(UART_COMM)MX_UART_Init();#endif MC_SixStep_I
Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code. Hello! I connect one I2C target and one I3C target device both to PB6/PB7, which is configured to be "mixed I3C and I2C bus" through STM32CubeIDE. I3C parameter configuration is as below: /* USER CODE END I3C1_Init 1 */ hi3c1.Instance = I3C1; hi3c1.Mode = HAL_I3C_MODE_CONTROLLER; hi3c1.Init.CtrlBusCharacteristic.SDAHoldTime = HAL_I3C_SDA_HOLD_TIME_1_5; hi3c1.Init.CtrlBusCharacteristic.WaitTime = HAL_I3C_OWN_ACTIVITY_STATE_0; hi3c1.Init.CtrlBusCharacteristic.SCLPPLowDuration = 0x18; // 5MHz hi3c1.Init.CtrlBusCharacteristic.SCLI3CHighDuration = 0x18; hi3c1.Init.CtrlBusCharacteristic.SCLODLowDuration = 0x7b; //1MHz hi3c1.Init.CtrlBusCharacteristic.SCLI2CHighDuration = 0x7b; hi3c1.Init.CtrlBusCharacteristic.BusFreeDuration = 0x69; hi3c1.Init.CtrlBusCharacteristic.BusIdleDuratio
Hi,Im new to STM and trying to use 1 adc with DMA with 2 input and reading value.Board :STM32H753XI EVALADC 1 :INP0 rank 1INP1 rank 2Functions : void adc_dma_multi(void)void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) Results :I tried to swap rank between INP0 and INP1 to check if my second entry was read correctly and there were no hardware problems, and the result is the same: rank1 is read correctly but rank2 = 0. I have attached main.c and IOC.
I have four languagese/translation with their translations in TouchGFX DesignerIs there a way to reorder them? I would like to have IT GB ESP FR
I'm looking for an ST microcontroller that can do I2S receiving while remaining low power, presumably by keeping the core asleep and using DMA to copy I2S chunks to a buffer. I think I saw a video demo of this at some point somewhere on the website, but now I cant find it. When I say low power, I mean <1mA, preferably <200uA if possible. I assume this would be something like an M0 or M4 core.
I am new to STM32 programming.I am doing an stm32 project with STM32F407VET6 MCU, I want to implement a music player that can read a list of wav files from sd card and stream the music data to a external DAC chip (PCM5012a) using double buffering apporach. I have configured SDIO and FATFS with DMA enabled for perfrming the sd card interfacing and read files, which should be working normally. But the main problem is comming from I2S3 with DMA, as it doesnt continue stream subsequent audio chunks after the 1st one. Here is my i2s3 ioc configurations:I tested the playback in my main.c file, this is an abridged version:/* Includes ------------------------------------------------------------------*/ #include "main.h" #include "fatfs.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "lcd.h" #include "touch.h" #include <stdio.h> #include "sd_interface.h" /* USER CODE END Includes */ /* Private define -----------
I have purchased the STM32F469-DISCO development board. If I want to replace the chip or design my own development board, how can I use ST-Link or a serial port to flash the code?
When using SPI6 in Slave mode with TX DMA in Circular mode, the SPI FIFO is not updated with data from the DMA buffer for the first SPI FIFO size (8 bytes). Both the SPI Master and SPI Slave were debugged: The SPI Master transmits one frame. On the SPI Slave board, after checking the reception using LL_BDMA_IsActiveFlag_TC1(BDMA), the MISO data is updated. The SPI Master then checks the received data on the SPI Slave side using a breakpoint. static void MX_SPI6_Init(void) { LL_SPI_InitTypeDef SPI_InitStruct = {0}; LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI6; PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_D3PCLK1; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } LL_APB4_GRP1_EnableClock(LL_APB4_GRP1_PERIPH_SPI6); LL_AHB4_GRP1_EnableClock(LL_AHB4_GRP1_PERIPH_GPIOA); LL_AHB4_GRP1_EnableClock(LL_AHB4_GRP1_PERI
Hi all,Im using STM32F410 uart 1 to transmit and receive.I use DMA to transmit bytes. I then use TC interrupt to send a break,then push an event to an event queue to signal that the transmitter is free.void interface_uart_tx_eot_isr(if_uart_t* p) { if (p->tx_last_in_chunk) { // Transmit break at end of tx work LockFromISR(); p->uart_dev->usart->CR1 |= USART_CR1_SBK; UnlockFromISR(); // register event for more tx data p->transmit_empty_handlerI(p->event_source); } }On the same uart I use DMA in circular mode to dump incoming bytes.Im using framing error interrupt to wake up a worker to deal with the received data.For the sake of this explanation, I have three stm32f410 devices connected in a ring1Tx -> 2Rx, 2Tx -> 3Rx, 3Tx -> 1Rx.So it is possible for, eg, device 2 to be recieving data as it is sending data.This is working well except:I find occasionally that I am missing a break interrupt and I'm pretty lost figuring it out.Oscilloscope shot uart_brea
Hello, I have a problem with a STM32L431CC generating a circular PWM burst with the DMA. I am using the Timer1 to generate 4 PWM signals on the Pins PA8, PA9, PA10, PA11. The systemclock of the Timer 1 is 80 MHz. The frequency of the PWM signal should be 20kHz. I have attached the code snipped were i configured the GPIO, Timer and DMA in the software. I get no PWM signal from the GPIO pins. When I manipulate the CCRx registers of the Timer1 with the ST Link debugger, I am able to generate PWM signals with the correct frequency and duty cycle. I suspect that the Timer1 do not make a DMA request and I am not able to find the failure. The DMA do not set any interrupt flags. Also when I manipulate the DMAR register of Timer1, I can see a valid PWM signal. Would be great when someone can support me Thanks Patrick #define TIM1_PSC_INIT 0u #define TIM1_ARR_INIT 3999u /* ~20 kHz at 80MHz systemclock frequency */ #define TIM1_RCR_INIT 0u uint16_t volatile tim1_dma_buffer[] = {
rm0456 describes CKDIV belonging to the FDCAN register structure, However the actual header in the cmsis_device_u5 repo make it a member of the FDCAN_Config_TypeDef. This is missleading! Probably FDCAN_Config_TypeDef. is some structure found in the MCAN IP. There is no description of FDCAN_Config in the reference manual. A description is welcome,
Hello,I would like to build a project using a STM32WL33 µC on IAR Embedded Workbench IDE v9.30.1. Unfortunately, this version of IAR does not support this µC and I would like to import it but i cannot find any package suitable for IAR. Do you have an easy solution? Best regards, Schaeffer Guillaume
Hello,I use a STM32F777 with FreeRTOS and LwIP. I also run a display control with TouchGFX and partial framebuffer via SPI. I have configured the Ethernet and LwIP as shown in the following link: https://community.st.com/t5/stm32-mcus/implementing-a-lwip-and-freertos-v1-udp-echo-server-on-the/ta-p/780261 .The Ethernet works so far after booting. However, there are always artifacts on the display, as LwIP seems to write to the areas of the frame buffer.However, I have created the Linkerscript configuration as in the tutorial from the link and also added a LwIP heap section. Unfortunately it still does not work stable.What do I have to adjust so that it works without errors?Here is my configuration:
We are using the STM32H7R7L8H6H microcontroller in our product design.During firmware initialization, we observed inconsistent behavior related to the USB voltage detector on different boards that share the same hardware design and firmware.Specifically, the following code auto generated by STM32Cube ide (stm32h7rsxx_hal_msp.c), this causes the MCU to halt on certain boards:if (HAL_PWREx_EnableUSBVoltageDetector() != HAL_OK) { Error_Handler(); } On some boards, the code runs normally, but on others, it enters Error_Handler() immediately after executing this function.Both boards have identical hardware configuration — USB is not used, and VDD33USB and VDD50USB are tied to 3.3 V.- Advise whether disabling the USB voltage detector is the recommended workaround when USB is not used.- Provide any official ST guidance or firmware-level / Hardware level workaround for this behaviour. - Should we modify the voltage level on the VDDUSB pin, or
I flashed firmware that sets. Now STM32Cubeprogrammer refuses to connect to the STLINK portion.How to recover from this / debrick the boards ? I tried pulling up PA14 / boot0 pin with a pull-up to CN7 pin 7, but no such luck...
I'm implementing "User defined skeleton" application. I correctly join to gateway and server chirpstack is logging 'join accept', 'join_request. When i can send some data to server i get 2 errors from library Lorawan, 'LORAMAC_HANDLER_ERROR' in function 'OnJoinRequest' and 'LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT'. Server says that join request is OK, and accepts Join.Gateway is working Ok because it works with another node.MCU: STM32WLE5CCU6,Params Lorawan: #define ACTIVE_REGION LORAMAC_REGION_EU868#define APP_TX_DUTYCYCLE 10000//#define APP_TX_DUTYCYCLE_RND 1000#define LORAWAN_USER_APP_PORT 2#define LORAWAN_SWITCH_CLASS_PORT 3#define LORAWAN_DEFAULT_CLASS CLASS_C#define LORAWAN_ADR_STATE LORAMAC_HANDLER_ADR_ON ///LORAMAC_HANDLER_ADR_ON#define LORAWAN_DEFAULT_DATA_RATE DR_0#define LORAWAN_DEFAULT_TX_POWER TX_POWER_3#define LORAWAN_DEFAULT_ACTIVATION_TYPE ACTIVATION_TYPE_OTAA#define LORAWAN_DEFAULT_CONFIRMED_MSG_STATE LORAMAC_HANDLER_UNCONFIRMED_MSG#define LORAWAN_DEFAULT_PING_SLOT_
I cannot get STM32WLE5 (on a RAK3172 module) to exit from stop mode on either RTC timer or rising EXTI pin. I'm using STM Cube HAL functions and the stm32_lpm_if.c library. I have tried pin PB3 as either EXTI3 or as PWR_WKUP3. If I use EXTI3, I set an interrupt handler. The handler gets called when the pin goes high in normal running, but when in stop2 mode, it does not wake up. Does anyone have example code using this chip/module to do a wakeup on timer OR external pin?
Hi there,I was trying to generate a STSPING4 project with MCSDK 5.Y.4.All the config and pin checks are successful.However, there is an error in the attached picture; also, the full LOG is attached.Seems some paths are incorrect, but I don't know how to fix them.Maybe I need to install something more? Or need to copy some folder somewhere?Thank you very much.
I have a few screenshots from a slide deck about the STSPIN32F0,but I can’t find the original presentation.It looks like it’s about PCB layout guidelines.Does anyone know where to get the full slide?
Hi, I have a doubt. I made some changes in the secure bootloader to achieve certain functionality, but I am unsure whether the code in the secure bootloader is developed by ST (such as drivers or APIs), or if it is intended for user modifications. Specifically, I modified the sfu_interface_crypto_scheme.c file to achieve my functionality.As far as I understand, apart from the Secure Engine project and the we can't modify Bootloader project HAL and LL APIs, CMSIS APIs, and middleware like Secure Engine, KMS, and Crypto. Please correct me if I am wrong.For reference, I am using the STM32WLE5CC controller.
When connecting via USB to a STM32 board in DFU mode, it is possible to read a serial number from the instance path.However, in runtime, the serial number exposed via USB must be programed by the user... It would be nice then if ST provided the algorithm they used to create this string.We do have some hints though. When generating a STCube project, by default a `Get_SerialNum` function is generated in usbd_desc.c.However, it does not produce the same string as the bootloader does. Can anyone please tell us what is the algorithm stored in ROM of each type STM32 to generate the USB serial number string based on the 96-bit UID?On STM32F76/STM32F77, I have found that this function outputs a string that matches the one produced in ROM:`static void Get_SerialNum(void){ uint32_t deviceserial0, deviceserial1, deviceserial2; deviceserial0 = *(uint32_t *)DEVICE_ID1; deviceserial1 = *(uint32_t *)DEVICE_ID2; deviceserial2 = *(uint32_t *)DEVI
ST Community highlights – April to June 2026
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.