Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I have a project in which I try to sync my assembly code on a signal on a GPIO, using WFE for minimum latency and jitter.I use a Rust HAL ony for initialisation of the clock and to put some GPIOs into input mode, and one in output mode that I use to check the timings of my assembly code with an oscilloscope.The synchronization works (PA15 in input mode, using EXTI line 15 to send the wake-up event), but the WFE also wakes up at regular interval. Apparently every second when no debuger is connected, and maybe a bit slower when openocd / gdb is connected.I try to understand why it does wake-up, but really can't find anything. Here are the sources of wake-up I checked:- Interruptions:SEVONPEND is zero (gdb) x/t 0xE000ED10 0xe000ed10: 00000000000000000000000000000000 and if I replace the stack with $AAAAAAAAs, I see no trace of an interruption being called when the core wakes up.- Event on EXTI lines:EXTI_EMR1 and EXTI_EMR2 only activate Px15 (gdb) x/t 0x40010404 0x40010404: 00000000000000
Hi, The STM32G474CEU6 LQFPN48 was previously used in our projects with a 3.3 V supply, where we successfully operated a 25 MHz FL2500326 crystal using 6.8 pF load capacitors, and the crystal oscillation was stable.In the current design, the same controller is powered at 1.8 V for all VDD, VDDA, and VREF+ pins, while using the same crystal and the same load capacitors. However, under this configuration, the crystal oscillator does not start, and no crystal output is observed.As an alternative, we are currently using HSI clock (16 MHz) as system clock in our application. It is observed in other posts that HSI cannot be used for high speed peripherals like USB and Ethernet due to it's low accuracy, and also it varies with temperature. In our application, we are using 2 - UARTs, 2 - I2Cs and one SPI along with few GPIOs. Is it recommendable to run the STM32g474 with 1.8V VDD? Also can someone give advice on the HSI system clock mode? Please let us know how to sol
Hello,I am using an STM32H747I-DISCO with the MB1166-A09 display and a standard TouchGFX project.I want to run the board as USB Host on CN1 (USB OTG HS, ULPI PHY) and connect a USB Full-Speed device (STM32H503 Nucleo running in device mode).VBUS is forced ON via ULPI_D0 and works fine in a non-TouchGFX project.However, as soon as I add USB Host to a TouchGFX project:The display becomes blackTouchGFX no longer rendersCubeMX reports conflicts with FMC (SDRAM) when USB OTG HS is enabledTouchGFX works without USB, and USB works without TouchGFX, but not together.It looks like USB HS (ULPI) and TouchGFX (DSI + SDRAM) conflict, possibly due to clocks or FMC being partially disabled.Question:Are there any reference projects or examples where TouchGFX and USB Host on CN1 coexist correctly on STM32H747I-DISCO?Is this a known limitation?Thanks in advance.
Hi, I tried to set up and use HPDMA with ADC on my Nucleo-H7S3L8,but I have some questions about how to use it.I could not find documentation on using HPDMA with STM32 MCU, only for GPDMA.I found an HPDMA example for the Nucleo-H7S3L8 (ADC_SingleConversion_TriggerSW_HPDMA), but I don't get the logic. Why are both HAL_ADC_Start_DMA() and HAL_ADC_Start() used together? Normally, you'd just use HAL_ADC_Start_DMA(), right? Continuing from my previous question, if I want to modify this example to support multiple channels, Continuous Conversion Mode, and DMA circular mode, how should I do it?I tried modifying the ADC parameters to Continuous Conversion Mode and DMA circular mode, but it still only runs once.Then I tried enabling Circular Mode in HPDMA, but it gets stuck at HAL_ADC_Start_DMA.If possible, could you teach me how to modify it for multiple channels? I'm not sure whether to use End of single conversion or End of sequence of conversion. I have 9 channels.I'm also not sur
Hi everyone,I’m looking for the latest condition-based predictive maintenance kits or devices with the following features:1. Vibration monitoring2. Acoustic sensing3. Temperature monitoring4. Battery Powered, Low Voltage5. Wi-Fi connectivity6. AI-based anomaly detection/failure prediction7. Cloud connectivity. Could you please let me know the latest and best recommended product that meets these requirements? Any details on specs, AI capabilities, and cloud integration would be greatly appreciated.Thanks!Sajid
Hello everyone,I’m looking for any Wi-Fi connectivity implementation examples for the STEVAL-STWINBX1 (STM32U5). Ideally, I’m searching for a solution that integrates with the eLooM framework, or at least a reference on how to properly add Wi-Fi tasks within eLooM.Specifically, I’m trying to find:Wi-Fi driver/task examples compatible with STWINBX1Any eLooM-based implementation of Wi-Fi or network communicationExample projects that connect to AWS IoT using Wi-Fi (HTTP)Documentation or sample code showing recommended methods for enabling Wi-Fi cloud communication on STWINBX1So far, I haven’t found a clear reference project for STWINBX1 + Wi-Fi, especially one supporting cloud connectivity or integrating with the eLooM architecture.If anyone can share links, example projects, or guidance on how to implement this, it would be greatly appreciated.Thank you!Sajid
Hello,I am looking for help debugging an issue with both ADCs running in continuous conversion mode with multiple channels, using DMA on an STM32H7 device.Hardware / ToolsBoard: NUCLEO-H7S3L8MCU family: STM32H7RSPeripherals: ADC1 and ADC2Mode: Continuous conversion, multi-channel (scan mode)Data transfer: DMAConfiguration OverviewBoth ADCs are configured in continuous conversion modeEach ADC scans multiple channelsDMA is used to transfer conversion results into memory buffersDMA buffers are statically allocated and placed in DMA-accessible memoryD-Cache is enabled on the H7Problem DescriptionBoth ADCs are running and DMA transfers are occurring, but the sampled data in the buffer is always 0In the SFR it shows that the ADC is working, but the DMA is idle/not set up correctly. Also the DMA buffers are in a non-cacheble region protercted by my MPU.static void MPU_Config(void) { MPU_Region_InitTypeDef MPU_InitStruct = {0}; /* Disables the MPU */ HAL_MPU_Disable(); /* Disables all MP
I am using two UARTs simultaneously.The CPU is STM32H743. One UART is on UART 4 that transmits information to pc uartAnd the other UART on UART 5 receives information from pcIf these UARTS function alone, they function well.I am using the DMA idle function on the receive and the DMA function on the transmitWhen they function together, the information is not properly received from the PC on UART 5.Please help me resolve this issue
Hello, I am trying to use SAES with a wrapped key to decrypt firmware updates on an stm32u5g9vjtxq. I am not sure how I should be changing the InitVect in CRYP_AES_CBC mode after hcryp is already initialized with HAL_CRYP_Init. To elaborate on what I am trying to do I have created a wrapped key that is being stored in OTP memory along with the IV used to encrypt / decrypt that wrapped key. My bootloader calls HAL_CRYPEx_UnwrapKey using the OTP memory address of the wrapped key and the IV also stored in OTP. I then want to change the IV to match that of what was used to encrypt the new firmware image, the unwrapped key is what was used to encrypt the firmware image. I am not sure how to accomplish this without having to call HAL_CRYP_Init again...I think the second call to HAL_CRYP_Init looses the unwrapped key and replaces it with whatever is defined in hcryp.Init.KeySelect which I have set to CRYP_KEYSEL_HW.To summarize I need to be abl
I created a 10Hz sine function with phase of pi/4, amplitude of 1000, bias of 2000, a sampling rate of 1kHz, and 2048 samples (20 periods in total) and saved it into q15_t input[2048].I created a fft stract by arm_rfft_init_q15(&S, 2048, 0, 0)I entered the input into arm_rfft_q15: arm_rfft_q15(&S, input, output), while output define as q15_t output[4096]I took the input and output and copied them to Python.I used fft in Python on the input data.In addition, I arranged in Python the output of arm_rfft_q15 by calculating the magnitude of the numbers (where each pair of consecutive indexes represents the real and imaginary parts of a number) and then I applied fftshift on the data.The input, and the fft from python and arm_fft_q15 are attached.I don't understand why I do not get the same result from python and from arm_fft. Python's result seems logical (one peak at the oscillation frequency) and arm_fft's result are not make sense. Why do I get a lot of peaks and how do I convert
Hello, we intend to implement a time-dependent channel change via the operational amplifier in voltage follower mode, as described in AN5306 - Rev 1 Page 31, 5.1. However, when checking the output, there is an unwanted gain (x2) on channel 2. Any idea where it comes from or what could be set incorrectly? Switching between channels using a timer and MUX works as expected, but the second channel has a gain of 2, although in voltage follower mode this should not be the case.For testing, 1 volt was connected to both channels and it was expected that 1 volt would come out at the output, despite the change via the MUX, but it changes between 1 volt and 2 volts because the second channel has this unwanted gain. CubeMX Configuration: OPATimer:Pins: code settings: /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Configure the main int
Hello,I'm researching possibilites to teach DSP undergraduate course using boards STM32H750B-DK, that we alreadyuse in other courses related to low leve programming. So far, I've identified two possible workflows:1. it seems possible to create project for board to act as USB sound card that could be interfaced to GNU octave environment and first steps of audio processing could be done there2. we would like to create first simple audio pass-through app for our board with two inputs (MEMS mic or line-in) and several outputs, but mostly headphone output. 3. after initial example in 2., we could add also audio processing algorithms that could be prototyped in 1. and code in C on the board. We would also love to do some audio analysis (Amplitude response, Spectrograms etc)... I have found quote some starting points, but also a lot of questions raised that there is a lot of non-working examples. My starting points would be BSP package for our board, also some examples for STM32F769
Tried running DMA with ADC simultaneously by configuring both in CubeMX, but I am not getting correct ADC values in the buffer. The sin wave from the signal generator is completely distorted. The ADC works individually without the DMA by filling the buffer through interrupts. The DMA is configured in circular mode. I even tried running the sample code of ADCgainCompensation from ST(modified a little to get values in a buffer), but had no success.
HelloI am trying to drive a MEMS mirror via I2C communication using the nucleo-h723zg board.This is the clock configuration: Then I activated the I2C1 as follow: I used the pins PB8 and PB9 for SCL and SDA:I'm using the DAC called MCP47x6A0T, so the address should be:static const uint8_t DAC_Address= 0x60; Then I give an input data:static const uint8_t MEMS_Digital_Input2= 0x1C;and then I use the function Master Transmit in the while loop:HAL_I2C_Master_Transmit(&hi2c1, DAC_Address, MEMS_Digital_Input2, 1, HAL_MAX_DELAY);I've this circuit connected to the microcontroller: Using an oscilloscope and a multimeter I'm always measuring 0V and I can't see the SCL and SDA signals.Do you know where am I doing wrong?Kind regards
Hello,I am using the STM32U5G9ZJTXQ with TouchGFX on a 4.3-inch display (480×272). The display works fine, but the touch is not working. The touch controller IC is GT911.
Hey Folks, Description:I am using STM32N6570-DK with Azure RTOS (ThreadX + FileX) to store camera frames on an SD card using SDMMC2.Use case:Capture camera frames (RGB565, 320×240) using DCMIPPDisplay frames via LTDCContinuously write frames to SD card using fx_file_write()Issue:Small file read/write (text file) works correctly.When continuously writing video frames (~153 KB per frame), FileX fails after 2–3 frames.FileX returns FX_IO_ERROR (144).Failure occurs during media flush / directory update, not directly in application code. Configuration:From fx_stm32_sd_driver.h:#define FX_STM32_SD_DMA_API 1#define FX_STM32_SD_CACHE_MAINTENANCE 0#define FX_STM32_SD_MAX_TRANSFER_SECTOR 16#define FX_STM32_SD_DEFAULT_SECTOR_SIZE 512FX_STM32_SD_WRITE_CPLT_NOTIFY() waits on a ThreadX semaphore
Hello,i have a STM32F114 (Black Pill V3.0) and a strange timer problem. We all know that when setting the APB1 clock divisior is > 1, the APB1 timers gets twice as fast (2x, TIMPRE bit is not set). However, my timers are 4x when the divisor is > 2 (RCC_CFGR_PPRE1_DIV4, RCC_CFGR_PPRE1_DIV8, ...). It doesn't matter if i use HSI, HSE or PLL as sys clock source. My timer interrupt is twice as fast compared to a APB1 divisor of 1 or 2:APB1 divisor = 1: timer interrupt each 0.1 ms (10 KHz)APB1 divisor = 2: timer interrupt each 0.1 msAPB1 divisor = 4: timer interrupt each 0.05 ms (20 KHz)...I checked different frequencies (16 MHz, 48 MHz and 100 MHz sysclock). AHB and APB2 divisors are 1. I used two STM32F114 devices for testing. I double checked everything. Code:// reset state assumed, HSI is 16 MHz unsigned long cfgr = RCC->CFGR; cfgr = (cfgr & ~RCC_CFGR_HPRE) | RCC_CFGR_HPRE_DIV1; // AHB clock = 16 MHz cfgr = (cfgr & ~RCC_CFGR_PPRE1) | RCC_CFGR_PPRE1_DIV8; // AP
Hello! Quick question about ST patches for MbedTLS 3.6.5 (stm32-mw-mbedtls).Why was the defined(MBEDTLS_MD_SOME_PSA) added here (in library/md.c)?When MBEDTLS_PSA_CRYPTO_C is defined, the only way to define MBEDTLS_MD_SOME_PSA is to define one of MBEDTLS_PSA_ACCEL_ALG_XXX which, I think, is an internal macro of MbedTLS. Should I just remove the patch or does it serve a purpose? Would it be better to define MBEDTLS_PSA_ACCEL_ALG_XXX?#if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && defined(MBEDTLS_MD_SOME_PSA) int mbedtls_md_error_from_psa(psa_status_t status) { return PSA_TO_MBEDTLS_ERR_LIST(status, psa_to_md_errors, psa_generic_status_to_mbedtls); } #endif /* MBEDTLS_PSA_CRYPTO_CLIENT and MBEDTLS_MD_SOME_PSA */Thank you in advance.
Hello Team,We are developing our new project by using STM32H7S7L8H6. We want to use STM32H7S7L8H6 in SMPS mode. So, refer attached schematic design image with SMPS mode. Request you to please review it and provide your valuable inputs.Note : In our application we are not used USB. Thanks & Regards,Jignesh Karena
Hello,I'm facing a issue with DMA2D to blend some images.From the naming ARGB means that the order of the colors should be Alpha, Red, Green and Blue.But if I have a PNG file which contains my image with Alpha, how I have to convert to a static image for my MCU to be able to work correctly with it with DMA2D?Normally PNG is using RGBA format in big-endian. But if I'm converting this file to ARGB format and try to blend it over another image, it will work?Also I'm confused with endianess, because I know that ARM normally is using little-endian.Which is the best approach to load the image?A struct like this:typedef struct { uint8_t A: 8; uint8_t R: 8; uint8_t G: 8; uint8_t B: 8; } ARGB_TypeDef; typedef struct { const uint16_t width; const uint16_t height; ARGB_TypeDef *data; } FCU_Labels_TypeDef;Should work with DMA2D which requires uint32_t data for source and destination?Thanks.
We are using STM32U5G9's I2C with a diff-I2C to single ended I2C converter IC PCA9616. PCA9616 is used to program the STM32 MCU over I2C1 by converting diff-I2C to single ended I2C.However, while probing the I2C1 of the STM32U5G9, we are seeing negative overshoot and level shifting on it. It seems like MCU is taking control of the I2C while in the slave mode. See I2C_SCL_waveform1.pngAlso, we have tried disabling I2C1 of the MCU (by configuring it as a GPIO input only), by doing this we are able to mitigate the negative overshoot problem. I think the problem is with MCU, looks like it is taking control even if it is a SLAVE. See I2C_SCL_waveform2.jpgKindly let us know the exact reason and how to mitigate this issue.
Hello,We are currently using the STM32G070CBT6 microcontroller in one of our data logger devices, which operates on a three-phase power supply and is used in a transformer application. In our design, the microcontroller triggers a relay, and the relay controls a contactor. We are facing an issue where the STM32G070CBT6 is continuously rebooting during normal operation, which is affecting the overall functionality and reliability of the product. For your reference, we have attached the reset circuit schematic used in our design. We kindly request you to review the schematic and help us identify the possible causes of the continuous reboot behavior. Please let us know if any additional information, measurements, or test data are required from our side to assist in the analysis. Thank you for your support.
Hi.I'm having an issue with the error: failed to erase memory on STM32F407.I'm using the board https://github.com/mcauser/BLACK_F407VEand the debugger https://github.com/WeActStudio/WeActStudio.MiniDebugger.and the original STM32F407VET6 chip.Yesterday there was no issue, but today when I tried to continue my project, the problem appeared. I have set the SWD frequency from Auto to 100 kHz. At some point, it worked with BT0 = 0 and BT1 = 0 after several attempts of pressing the reset button before starting the debug. I have replaced the debugger twice and tried it on the same chip type on a different board, and it worked. However, it did not work on the chip on my project board. I tried it with the STM32Programmer, and the same problem occurred—it could not erase during download. Strangely, full chip erasure could be done, and the connection was normal with no issues.STMicroelectronics ST-LINK GDB server. Version 7.12.0 Copyright (c) 2025, STMicroelectronics. All rights reserved.
Hello everyone,I am working with an STM32H7 device using the DSI host interface and would like some clarification regarding supported display resolutions.As per the STM32H7 datasheet, it is mentioned that:“Extended resolutions beyond the DPI standard maximum resolution of 800×480 pixels; the maximum resolution is limited by the available DSI physical link bandwidth.”Based on this statement, I would like to confirm the following:Can a 640×480 display be reliably connected to the STM32H7 using the DSI interface?Are there any practical limitations related to DSI lane count, lane speed, or refresh rate that would prevent using 640×480, even though it is below 800×480?Has anyone successfully driven a 640×480 display (at 60 Hz or other refresh rates) on STM32H7 using DSI + LTDC?Is the limitation purely bandwidth-based, or are there additional constraints in the STM32 DSI/LTDC implementation?Attaching the clock configuration of STM32CubeMX of DSI.Any insights, calculations, or real-world expe
Hello,I am using the VENC_RTSP_Server example located iSTM32Cube\Repository\STM32Cube_FW_N6_V1.2.0\Projects\STM32N6570-DK\Applications\VENCThis example shows how to use the VENC block and stream H.264 video through RTP/RTSP using Ethernet.I want to send the encoded H.264 video stream to another controller through SPI instead of RTP/RTSP.My questions are:1. What is the input data format of the H.264 encoder (VENC)? Is it receiving YUV420/NV12 from DCMIPP, or some other format?2. Is there an API in the VENC example that allows access to the encoded H.264 bitstream buffer (pointer + size), before it is sent through the RTSP server?3. Is there any example or documentation that shows how to use the H.264 encoder output without RTP/RTSP? For example: Camera → DCMIPP → VENC(H264) → SPII only need to sending the encoded H.264 data through SPI to another controller.Thank you!
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.