Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
I'm using the STM32G474 at 170MHz. Is it possible to simulate hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV512; since the G474 only recognizes up to ADC_CLOCK_ASYNC_DIV256; I need very slow readings from the ADC. Thank you Valter
I am unable to inspect the device registers for my STM32U545 project. I can see the Cortex core Registers, and see them update as I step through the initialization.The tooltip mentions an svd file, how can I check if it's set up correctly?
Hi,How do I generate a project for STM32CubeIDE using STM32cubeMX2? Apparently, the only options are cmake, IAR, and open-cmsis (Keil). And is it possible to open examples from STM32CubeC5 using STM32CubeIDE?Ari
How is the best configuration for setting MTF as free-running timer ?void MFT_Configuration() { MFT_InitType timer_init; NVIC_InitType NVIC_InitStructure; SysCtrl_PeripheralClockCmd(CLOCK_PERIPH_MTFX1, ENABLE); /* Init MFT1 in mode 2 */ timer_init.MFT_Clock1 = MFT_PRESCALED_CLK; timer_init.MFT_Clock2 = MFT_NO_CLK; timer_init.MFT_Mode = MFT_MODE_2; timer_init.MFT_CRA = 0xFFFF; timer_init.MFT_CRB = 0xFFFF; /* If a square waveform is @ input with a frequency of 10kHz => T = 100 us * * with Prescaler = 16 - 1; => 1us sampling period * the counter number within a period is 100. * * with Prescaler = 1 - 1; => 62.5ns sampling period * the counter number within a period is 16000. More resolution. */ timer_init.MFT_Prescaler = 1-1; MFT_Init(MFT1, &timer_init); /* Set the TnCNT1 at the max value. No matter about the TnCNT2 since it is not used. */ MFT_SetCounter(MFT1, 0xFFFF, 0xFFFF); /* Enable MFT irq */ NVIC_InitStructure.NVIC_IRQChannel = MFT1A
Hi,I'm using two STM32WLE5 LoRa as TX and RX and added AES-ECB Encryption with Hardware Accelerator in the TX side and receive and decrypt it in RX side with the same Key. Now I want to change the TX module and want to implement same logic of AES Encryption in the TX side. Is there any documentation on how that can be implemented in the C/Python code for sending the same data with different module? I have used PyCryptodome Python library for sending the data with encryption but it didn't work as expected. So, Is there any other library or documentation for implementing Encryption by which Receiver can be able to decrypt as before?Configuration of AES in Both TX and RX sidesAny insights or guidance would be greatly appreciated.Thanks in Advance.
Hello,I'm working on the STM32H735G-DK and try to change LTDC pixel format mode on the fly, but it doesn't work. I'm using the BSP example from example board pack in CubeMX for this board. After reset is possible setup the first time pixel format, but whatever I did after it never work. I tried even did full deinit with HAL_Deinit(), but it simply doesn't work. Pckage version is STM32Cube_FW_H7_V1.12.1For example this functionality (changing LTDC pixel format) working without any problem on the STM32U5G9J-DK2. The main() function where I tried doing this looks like:int main(void) { MPU_Config(); CPU_CACHE_Enable(); HAL_Init(); /* Configure the system clock to 520 MHz */ SystemClock_Config() HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); BSP_LED_Init(LED1); /*##-1- Initialize the LCD #################################################*/ /* Initialize the LCD */ //BSP_LCD_Init(0, LCD_ORIENTATION_LANDSCAPE); BSP_LCD_InitEx(0, 1, LCD_PIXEL_FOR
Hi I am using an STM32N6570-DK board. For my project, I need to measure the total MCU power consumption (core power plus the power consumed by the I/O pins while interfacing with the SDRAM and OSPI flash). I have reviewed the documentation regarding power measurement, but I am confused because there are multiple power supplies. Which pins on CN2 should I use for my measurements, and is there a common point to measure the total power?How to measure power on the STM32N6 - STMicroelectronics Community
Hello,I am using STM32U575RGT6 with CubeMX 6.17 and the bundled X-CUBE-FREERTOS v1.4.0. After enabling USE_TICKLESS_IDLE, I observed that the tick period becomes inaccurate.Specifically, the delay appears to be consistently shortened to about 0.875× of the expected value.void StartDefaultTask(void const *argument) { while (1) { HAL_GPIO_TogglePin(LED_RED_GPIO_Port, LED_RED_Pin); vTaskDelay(400); } }With USE_TICKLESS_IDLE disabled, the delay is approximately 400 ms as expected.After enabling it, the delay is reduced to about 350 ms.I have created a minimal project to reproduce the issue, and it shows the same behavior consistently. The project is attached.Could anyone help explain the cause or suggest a fix?Thank you.
Hi, I’m working with the STM32H7S7L86H and using the SAES peripheral to encrypt and decrypt data stored in an SPI flash .I currently have the peripheral working correctly using HAL functions in polling mode. I also managed to get it working with interrupt mode, including proper input/output callbacks.However, I would like to use DMA to offload the CPU, but I haven’t been able to find any HAL-based examples for SAES with DMA. When I try to use DMA, the transfer does not seem to complete and no callback is triggered.Could you help me understand how to properly configure SAES with DMA using HAL, or point me to a working example?void HAL_CRYP_MspInit(CRYP_HandleTypeDef* hcryp){ if(hcryp->Instance==SAES) { /* USER CODE BEGIN SAES_MspInit 0 */ /* USER CODE END SAES_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_SAES_CLK_ENABLE(); /* SAES DMA Init */ /* GPDMA1_REQUEST_SAES_OUT Init */ handle_GPDMA1_Channel13.Instance = GPDMA1_Channel13; handle_GPDMA1_Channel13.Init.Request = GPDMA1_R
CubeProgrammer is reading from some suspicious addresses on the stm32u031.For example, sector erase from the GUI:09:24:20:751 : r ap 0 @0x1FFF37FE 0x00000001 bytes Data 0xFFFFFFB109:24:20:755 : Flash sector erase ...09:24:20:755 : r ap 0 @0x40022040 0x00000004 bytes Data 0x0000000009:24:20:755 : Flash erase...and from the CLI:...r ap 0 @0x1FFF777C 0x00000004 bytes Data 0x00000000...Erase sector(s) ...r ap 0 @0x40022040 0x00000004 bytes Data 0x00000000Flash erase...0x40022040 is offset 0x40 into the FLASH block which is labelled as reserved in RM0503 3.7.22 Table 19.0x1FFF37FE and 0x1FFF777C are high in the option bytes block.
I am using STM32h743XIH6 MCU with qspi flash MT25QL512ABB8ESF-0SIT same as STM32H743I-EVAL. when i try to load data to qspi flash using STM32CubeProgrammer and loader MT25TL01G_STM32H743I-EVAL.stldr provided by ST, data read/write working without any on eval board. But when i try the same in my custom board with same configuration it is not working. In my custom board if I erase and read flash content i am getting data as shown in QspiFlashMemoryErase.pngWhen i write data and read it back, i am getting data as shown in QspiFlashMemoryDataWrite.pngData is being written correctly on every even bytes, but all odd number bytes are wrong and always showing as 0x99I have chechked all signals on scope, all signals are coming.i have replaced the flash IC, just to confirm IC functionality, but still not working.
Hi,I am working on a custom Battery Management System (BMS) using STM32L476RG as the MCU, interfacing with an external battery monitor AFE (BQ79656‑Q1).I first validated the MCU hardware and basic firmware by testing the on‑board LEDs and UART communication via test points using USART2. These tests were successful and confirmed that the STM32 configuration and standard UART peripheral are working as expected.After this initial validation, I started implementing the communication between the STM32 and the AFE. For this communication path, LPUART1 is used, while USART2 remains dedicated only for basic UART testing and debug output.As part of this implementation, I took a Single Device Read command frame from a reference software design document for a similar AFE and directly programmed the frame transmission in STM32CubeIDE using HAL UART APIs.While debugging the firmware in STM32CubeIDE, I consistently encounter a “Target not available” issue during execution, particularly when reaching
Dear Community, I am researching how to use a 50Mpx MIPI CSI-2 2 LANE RAW 10 sensor with stm32N647.The idea is not to use the full sensor, instead using analogue/digital crop and windowing on the sensor to capture a specific part of the image and downsize it to a smaller size before entering the ISP of the MCU. The sensor doesn't have scaling.So after all steps I am left with a frame size that varies from 11.4 to 2.4 Mpx depending on cases.From there the image needs to be downsized to a buffer with a maximum size of 1024x768 px for the display.The question is whether the scaling of the ISP of the STM32N647 can handle downsizing and at what cost. The ISP is rated at 5Mpx 30fps but specifies it is possible above, the datasheet is vague about this.Thanks for the help.
Hello, I am experiencing an issue with my STM32U5G9J-DK2 board. Description: Board powered through STLINK USB LED LD7 is ON LED LD6 is ON LED LD1 is OFF I measured about 0.8 Ω between 3V3 and GND Component U16 overheats a few seconds after power-up No external circuit is connected I already tried: Another USB cable and power source Disconnecting all external peripherals My question:Could someone help identify where the problem might come from?Could U16 be defective or indicate a short circuit on the 3.3V rail? Thank you for your help.
Section 5.1.1 Step 3 says that Copy the dts file from the directory: x-linux-gnss1-app\linux-kernel\patch\5.15\kernel to the kernelsource directory at <KERNEL SOURCE PATH>/ arch/arm/boot/dts/But in the latest X-LINUX-GNSS1 package, the linux kernel is 6.1.11 and there are 3 patch files and 1 fragment file is present. It is unclear what to copy exactly. @Saurabh.Rawat
Hello.I created a project for the STM32F769I-DISCO board using CubeMX.I am trying to follow an LVGL example, but the example uses BSP-based libraries, and they are not working in my project. After checking, I found that there is no BSP included anywhere in the generated project.From what I understand, when selecting a board in CubeMX, the BSP should normally be included automatically. However, in my case, it is not.I tried downloading the STM32F769I-DISCO BSP from GitHub and manually copying it into the Drivers folder. However, this caused many build errors, possibly due to missing dependencies or incomplete integration, so I reverted those changes.Could you please advise how to properly include or enable BSP for this board when using CubeMX?Thank you.
Hello,I have STM32F7 controller, using Free RTOS, trying to interface external NOR flash, S29GL128S10TFIV13.I have one source file say testCode.cpp, which I want to move completely in external NOR flash, but every time I ran then code it give Hardfault.MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K EXT_FLASH (rx) : ORIGIN = 0x64000000, LENGTH = 16M EXT_SRAM_HEAP (xrw) : ORIGIN = 0x60000000, LENGTH = 256K EXT_SRAM_STACK (rw) : ORIGIN = 0x60040000, LENGTH = 256K } SECTIONS { .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4); } >FLASH .ext_flash_code : { . = ALIGN(4); _sextflash_run = .; *(.ext_flash_data*) *(.ext_flash_data*) . = ALIGN(4); _eextflash_run = .; } > EXT_FLASH /* 2. SECTION FOR MANUAL ATTRIBUTES (For Arrays) */ .ext_flash_data : { . = ALIGN(4); *(.ext_flash_data) /* Targets __attribute__((section(".ext_flash_data"))) */ *(.ext_flash_data*) . = ALIGN(4
Hello,Trying to move complete *.cpp.obj to external SRAM configure via FMC. Check the below .ld file for STM32F7 controller.MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K EXT_SRAM_DATA (rw) : ORIGIN = 0x60000000, LENGTH = 256K EXT_SRAM_MODULES (rw) : ORIGIN = 0x60040000, LENGTH = 256K } /* ========== Section for Buffers / Variables (up to 256KB) ========= */ .ext_sram_data : { . = ALIGN(8); KEEP(*(.ext_sram_data)) KEEP(*(.ext_sram_data*)) . = ALIGN(8); } > EXT_SRAM_DATA AT> FLASH .ext_sram_modules : { . = ALIGN(8); KEEP(*(testModule.cpp.obj)) . = ALIGN(8); } >EXT_SRAM_MODULES AT> FLASH After code compile, I can see the build details asMemory region Used Size Region Size %age Used RAM: 119928 B 512 KB 22.87% FLASH: 246444 B 2 MB 11.75% EXT_SRAM_DATA: 0 B 256 KB 0.00% EXT_SRAM_MODULES: 0 B 256 KB 0.00%And .map file as below.ext_sram_data 0x60000000 0x0 load address 0x0803c2ac 0x60000000 . =
Hello,I was trying to create two heap regions, sing internal RAM and external SRAM. So I tried below, but the code at some point crash and generate hardfault error. Just want to know does the procedure is correct or am I missing something?//in .ld file MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 2048K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K EXT_SRAM (xrw) : ORIGIN = 0x60000000, LENGTH = 512K EXT_PSRAM(xrw) : ORIGIN = 0x6C000000, LENGTH = 8M } _estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */ _Min_Heap_Size = 0x0; _Min_Stack_Size = 0x400; ._user_heap_stack (NOLOAD) : { . = ALIGN(8); PROVIDE ( end = . ); PROVIDE ( _end = . ); . = . + _Min_Heap_Size; . = . + _Min_Stack_Size; . = ALIGN(8); } >RAM .heap_internal (NOLOAD): { . = ALIGN(8); _heap_internal_start = .; . = . + 0x2000; /* 8 KB internal heap */ _heap_internal_end = .; . = ALIGN(8); } >RAM .heap_ext (NOLOAD) : { . = ALIGN(8); _heap_start = .; . = . + 0x40000; /* 256 KB for heap */
Despite my best efforts to populate and boot the the image of the STM32MP157-DK2 using the .tsv files I am met with a mixed result To date I have yet to establish a USB connection despite following the procedures at wiki. The UART connection is working. My environment is as follows ...Ubuntu 24.04.4 LTS - stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18 - STM32CubeProgrammer v2.22.0 and STM32_Programmer_CLI Be it that I use STM32CubeProg or the STM32_Programmer_CLI terminal interface the FlashLayout_sdcard_stm32mp157f-dk2-optee.tsv is not found despite the path being correct. Yet I am able to flash tf-a-stm32mp157c-dk2-optee-programmer-usb.stm32 0x01 or tf-a-stm32mp157f-dk2-optee-programmer-usb.stm32 0x01 using the terminal which was the first value in a sequence of the .tsv file (see kate as an example). The same conundrum occurs using STM32CubeProg. Might you suggest how I might resolve this problem - be it in establishing a USB connection or flashing the sd card usin
Hi, I'm trying to create a project to display data on an OLED screen. Even before programming my screen, upon simple connection, the connection constantly drops, and I can't maintain a stable link. I don't know where the idle setting is located in the SDK. It doesn't seem to be a truly stable parameter. Perhaps my code isn't stable. Everything else works perfectly; my services are added and functioning, but I still experience this disconnection, often after sending data. If I remain inactive for a long time, after a few seconds, the connection breaks. Thank
In STM32CubeMX v6.17.0, in the left side of the Pinout & Configuration panel, if the mouse cursor is within a table that lists peripherals, the scroll wheel doesn't do anything. I expect it to scroll the window. You need to move it outside of the table but still within the bounds of the "Categories" tab in order to scroll up and down. This is super annoying because it means you have to have the cursor on the far left or far right of this window otherwise a table will appear when scrolling and the mouse wheel will stop working.In the screenshot, having the cursor anywhere in the red box will stop it from scrolling. I expect it to scroll the green scrollbar.
I connected the VD55G1 promodule on the LS-CAM-I3C and connected it to the NUCLEO-H563ZI.The Display X-NUCLEO-GFX02Z1 is also connected.This is exactly the same configuration from the README.md.I get always an error in "ret = platform_i3c_assign_dynamic_address(p_dev->p_ctx);" (Line 82 display_qvga_streaming_i3C.c) I3C ErrorAccording to https://www.st.com/resource/en/user_manual/um3224-how-to-integrate-and-configure-the-vd55g1-sensor-stmicroelectronics.pdf Page35 I assume a ACK at the second W=0x7E (ENTDAA).I have a very shot cable between the NUCLEO Board and the LS-CAM-I3C.What could be the Problem
I've relocated the .text section of a test project to SRAM1 through the C-bus address (starting at 0x0A00 0000). I have relocated the main function into SRAM1.The code runs fine, and if I suspend the chip and navigate to the 0x0A00 0000 address space on the disassembly view the code and debug information (function names, source code references, etc.) is present and visible.Navigating to 0x2000 0000 on the disassembly view also displays the same assembly instructions but without any debug informationWith main located in SRAM1, the debugger fails to stop on entry into main, despite the debug configuration setting.If I set a breakpoint on any code that is located in SRAM1, the debugger does not suspend on those breakpoints, UNLESS I set a breakpoint in the reset handler (which is in FLASH), hit the breakpoint after a reset, and step into main from the reset handler, then it stops on breakpoints normally. This behavior occurs regardless of whether code is accessed via C-bus or S-bus.If I r
As is well known, the ADC sampling rate is on the order of microseconds, while the display task may only refresh once every 100 milliseconds. In an RTOS, how can the display task and ADC sampling values be synchronized? With such a long display refresh cycle, how are the numerous ADC sampling values handled—should they be discarded or stored in a buffer? If stored in a buffer, would it occupy substantial memory space? How do people handle this issue in actual applications?
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.