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
Hi,is there a possibility to do the complete chain to product state "closed" by non secure user code ?I have a custom bootloader which usually did a set of the old RDP Level.Now, with a STM32H57 device we have to use the new product state. I'm able to set the state to provisioning. But when i use RSSLIB_PFUNC->NSC.DataProvisioning i end up in a hard fault. I tried to set the provisioning data by ST Cube programmer later on which succeeded. But unfortunately i can not regress to open because the password is wrong. Any hints about that ? Thanks in advance.
Hi,I'm looking into creating a custom tool to provision our STM32H533 boards which will allow a non-trusted 3rd party to flash the firmware, configure the Option Bytes and program secret keys into the OptionByte Key storage areas.I cannot see any way to program the OB Key data via the API. Is it possible?For reference, the CLI parameter would be -sdp secret_key_file.obkThanks in advance.Michael Waites
Hi everyone, I'm using an STM32H743 MCU with an LTDC display and lvgl for management.I'm using the graphics accelerator correctly to decode an mjpeg video in YCbCr, but I can't convert it to RGB565 with DMA2D.If I try to convert without DMA2D, I get times of about 350 ms per frame (792*408). Decoding is successful in DMA. static void video_playback_task(lv_timer_t * t) { if (!MJPEG_GetNextFrame(Video_Buffer, Video_Size, &offset, &frame)) { lv_timer_del(video_timer); video_timer = NULL; printf("Fine video\n"); return; } JPEG_Decode_DMA(&hjpeg, frame.start, frame.size, Frame_Buffer); DMA2D_CopyBuffer((uint32_t*)Frame_Buffer, uint32_t*)Frame_Buffer_Rgb, IMAGE_WIDTH, IMAGE_HEIGHT); img_dsc.data = Frame_Buffer_Rgb; lv_img_set_src(img, &img_dsc); lv_obj_invalidate(img); HAL_GPIO_TogglePin(Check_ADAS_GPIO_Port, Check_ADAS_Pin); } static void JPEG_Decode_DMA(JPEG_HandleTypeDef *hjpeg, uint8_t *FrameSrc, uint32_t FrameSize, uint8_t *YCbCr_Dst) { JPEGSourceAdd
Hello,I have been working with a NUCLEO-WBA55CG board and the X-NUCLEO-IKS02A1 expansion board. I am running into an issue where the project fails to build after I enable the X-CUBE-MEMS software pack.Here are the steps to reproduce the problem:In STM32CubeIDE, create a new STM32 project using the "Board Selector" for the NUCLEO-WBA55CG.In the Pinout & Configuration view, enable the I2C1 peripheral and assign it to pins PB1 and PB2.Under "Software Packs," enable X-CUBE-MEMS1 for the IKS02A1 and select I2C1 as the communication interface.Generate the code and build the project.After building, I receive the following error messages in the console.../Drivers/BSP/STM32WBAxx_Nucleo/stm32wbaxx_nucleo.c: In function 'BSP_PB_Init': ../Drivers/BSP/STM32WBAxx_Nucleo/stm32wbaxx_nucleo.c:316:56: error: 'BSP_B1_IT_PRIORITY' undeclared (first use in this function) 316 | uint32_t BSP_BUTTON_IT_PRIO[BUTTONn] = {BSP_B1_IT_PRIORITY, | ^~~~~~~~~~~~~~~~~~ ../Drivers/BSP/STM32WBAxx_Nucleo/stm32wbaxx_
Hello,I have an issue reading and writing to and from the M95P32. So far it has never worked. I tried using the official ST driver https://github.com/STMicroelectronics/stm32-m95p32/tree/main but nothing happened. I don't know if the write was successfull but when I tried to read back the data, I only receive 0x00. Here is a sample of the code used#define USE_SPI #include "m95p32.h" std::int32_t eeprom_init() { return 0; } std::int32_t eeprom_deinit() { return 0; } std::int32_t eeprom_read( uint8_t *data, uint8_t size ) { silentlib::spi_lock cs_pin{ device::instance().eeprom_cs }; return HAL_SPI_Receive( &hspi3, data, size, 1000U ) == HAL_OK ? 0 : -1; } std::int32_t eeprom_write( uint8_t *data, uint32_t size ) { silentlib::spi_lock cs_pin{ device::instance().eeprom_cs }; return HAL_SPI_Transmit( &hspi3, data, size, 1000U ) == HAL_OK ? 0 : -1; } std::int32_t eeprom_sendrecv( uint8_t *data_transmit, uint8_t *data_receive, uint16_t size ) { sile
I am having trouble understanding the behavior of the Timers on the STM32F429I-DISC board. I have an application using TouchGFX with FreeRTOS, which is kind of working as expected but the timer-based activity seems to be too slow, so I am trying to debug and verify the clock frequency (which is triggering my ADC conversions), but nothing is matching or giving anything as expected. I commented out everything else on the code (including FreeRTOS, TouchGFX etc) and leaving just the timer and ADC initialization. Main system clock is set to PLL with a frequency of 144MHz and I am using Timer8 to trigger ADC on triple simultaneous regular mode and Timer11 to try to measure this interval. At first I've set Timer8 also to trigger an output event (pin toggle), and measuring it with the oscilloscope gave me exactly the expected frequency (Timer frequency / 2). But debugging is not showing anything useful at all. Here is the initialization of the timers:void MX_TIM8_Init(void) { /* U
Can somebody please help me. The code below is initializing the RTC. The clock works I can set and read time and date no problem. Somehow if I change these register: hrtc.Init.AsynchPrediv = 131; hrtc.Init.SynchPrediv = 10; It has no impact on the clock accuracy I keep on gaining time. I would have thought by "tweaking" the values it will either speed up or slow down the RTC. Code was generated by using the STM32 cube IDE. /** Initialize RTC */ hrtc.Instance = RTC; hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 131; hrtc.Init.SynchPrediv = 10; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if (HAL_RTC_Init(&hrtc) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN Check_RTC_BKUP */ /* USER CODE END Check_RTC_BKUP */ /** Initialize RTC and set the Time and Date */ sTime.Hours =
Hi,I have a toubles with a debuging my program.I started from the begining... so I create a empty project in VSCode for this MCU (setup is CLANG only). I build the empty program. It has 702 B. Debuging is working at this point.But after create a "data" in flash with this code: #include <stdint.h> #include <sys/cdefs.h> #define TARGET_FLASH_SIZE_B (64*1024) extern const uint8_t size_filler[TARGET_FLASH_SIZE_B]; void __attribute__((noinline)) force_data_use(void) { volatile const uint8_t *ptr = size_filler; uint8_t dummy = ptr[0]; } const uint8_t size_filler[TARGET_FLASH_SIZE_B] = { [0] = 0xAA, [TARGET_FLASH_SIZE_B - 1] = 0x55 }; int main(void) { /* Loop forever */ force_data_use(); for(;;); }Debug can't be launched... But if you replace line 4 with:#define TARGET_FLASH_SIZE_B (63*1024)it works... So I think there is some problem with flash size erasing / flashing. The MCU has 2 kB per page and two banks. Here is DEBUG CONSOLE: STMicroe
Able to spin the motor using 446 + IHM08M1 – 6 Step – Hall Sensor - Open Loop Mode, using MCSDK.But don’t know how to analyse the SW & HW.HW based: How to see the Hall Sensor & PWM action? (Got a CRT, no DSO). Any Monitor or Watch Window?SW Based: PWM_PERIOD_CYCLES or M1_HALL_TIM_PERIOD or M1_HALL_IC_FILTER – How to search & see the configured values in code?CubeMonitorRF/Power/UCPD – Possible to use for my application?Also, Want to change the direction – FOR & REV – With a Ramp up & Down.Guidance Required.
Hello, I am looking for the programming specification document in order to develop a socket and algorithm to program this device. I am aware the device is in obsolete state. Appreciate if anyone can share this information. Thanks
We're using the following circuit to measure a battery voltage @ 20 kHz for use in motor control.We are having some issues though, where the ADC suddenly starts measuring 0 V (0 in the data register) and gets locked in this state. In this state, we also measured 0 V at the MCU pin on the board, and a resistance < 20 Ohm between the pin and GND, both using a multimeter. The issue is not fixed by a reset (pulse on the NRST pin), only removing the battery and power cycling the MCU.How and why can/does this happen?We initially thought it was overvoltage and tried connecting a PSU directly to an ADC pin on the STM32G474RE NUCLEO board. We only started seeing abnormalities at 6 V and destroyed the ADC at around 9 V, so this does not seem to be the reason.The ADC is clocked 170/4 = 42.5 MHz and configured as follows (from IOC file):ADC1.CommonPathInternal=null|null|null|null ADC1.DMAContinuousRequests=DISABLE ADC1.EOCSelection=ADC_EOC_SEQ_CONV ADC1.EnableAnalogWatchDog1=false ADC
hi team,I'm facing issue connecting stm32mp25 gui tool with the STEVAL$USBI2CFTA bridge, the GUi tool says No bridge connected.I still haven't connected the other end of the USBI2C bridge to PMIC stpmic25a.I have installed the required FTDI 260Q drivers, and also the FTDI testing software which detects the usbi2c bridge and im able to send the i2c messages and detect the slave, but the STPMIC25 GUI says no bridge connected.FYR im using windows 11.Hoping for a quick reply for this issue. Thanks in Advance.
HelloAfter upgrade STM32CubeIDE to 2.0.0 I have problem with programming multi core STM32WL55. Can download program to CM4 core, but not to CM0+. Before upgrading it worked OK. Now it generate message when programming CM0+: Erasing memory corresponding to segment 0: Erasing internal memory sectors [64 77] Download in Progress: Error: failed to download Sector[0] Error: failed to download the File Encountered Error when opening C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.2.300.202508131133\tools\bin\STM32_Programmer_CLI.exe Error in STM32CubeProgrammer Shutting down... Exit.It suggest the software try to program sector [0] dedicated for CM4 instead sector [64] dedicated for CM0+.When I erase whole chip in Cube programmer, I can download firmware for first time.Also path suggest older version of software (C:\ST\STM32CubeIDE_1.19.0\STM32CubeIDE)
Translator I would like to identify the following two diodes, please.
Hi @all @stforum @stforum2 @stforum.tormod9 @stforum23 @jkn_stforum I’m using STM32U535CBTx MCU, using STM32Cube IDE.Peripherals in use:I2C1UART4LPUART1SPI2GPIO PB8, PB9, PB10 for LEDsIssue: SPI2 works fine when TRNG is disabled.After enabling TRNG, SPI2 stops working.I’ve attached both .ioc files (with TRNG enabled and disabled). Could someone please review them and suggest a solution?Could anyone please:Review my .ioc filesExplain why this happens and how to fix this issue?Suggest how to use TRNG and SPI2 togetherI have attached two .ioc files for reference:sensor nodewith TRNG.ioc – this version has the TRNG peripheral enabled.sensor node without TRNG.ioc – this version does not use TRNG and SPI2 works correctly.Please review and help identify why SPI2 stops working when TRNG is enabled.”Thanks in advance!
Hi, I am using encoder mode TI1 and TI2 on TIM1 and TM3 to read encoder, however the polarity is just rising edge or falling edge. How do I know this encoder in x1, x2 or x4 mode?Thank you!
Hi,I'm experiencing an issue with the X-Cube-AI Pack (version 10.2.0) on Windows 10.After using the X-Cube-AI Pack, the syscalls.c file is either not generated at all, or if it already existed in the project, it gets deleted during the process.This is causing build failures since the file is required for proper compilation. I've tried this on multiple projects and observed the same behavior consistently.Could you please investigate this issue? It would be helpful if you could confirm whether this is a known problem or if there are any workarounds in the meantime.Thanks in advance for your support!Best regards
I have an application that needs to use several VL53l0x ToF sensors. The measurements need to be fairly responsive to a slow moving object approaching the sensor; so something like taking readings at 10Hz would be reasonable. Having tried a quick prototype with a single sensor on an Nucleo-F767ZI board it seems there is going to be a lot of I2C communication which will more-or-less saturate the CPU and not leave much spare time for the application functionality. One thought was if there is any way to use DMA to offload the heavyweight I2C communication. Something like setting the sensor(s) in continuous reading mode and then getting DMA to gather the readings and drop them into memory from where the application could pick them up as and when it needs them.The application is not especially 'critical' so there is no great need for accurate timing synchronisation or anything like that - just so long as the readings give a reasonable indication of a slow moving obje
Hello,I am exploring the STEVAL-25R200A, and I want to build a pollingTagDetect application, using NFC10A1_PollingTagDetect that comes with the X-CUBE-NFC10 package, in STEVAL-25R200-STM32G0B1.ioc but i can't get it to work.When i flash the code into the steval, this prints in the com4 port:Welcome to X-NUCLEO-NFC10A1Toggling Wake Up mode ONAnd that's it, nfc tags are never detected.I made sure to update the IPs for the ones that STEVAL-25R200-STM32G0B1.ioc includes. The steval works just fine in ST25R200 EVAL GUI and ST25PC-NFC GUI.I appreciate your help
My STMCubeIDE is not opening the ioc files or creating STM32 projects, it is acting like the ioc files are text files, not using the STMCubeMX mode to open them. I'd already tried reinstalling the STMCubeIDE a few times, in the C folder and in other disk, tried checking for updates, confirming the installed plugins, deleting the folder after uninstalling the program and many other ways to fix it. Can someone help me?? Please
The most viewed and commented post on the Imaging page had to do with an Init failure on the multizone part. These parts have large I2C writes at the beginning, which is downloading the Firmware (on the L5 and L7) and downloading patch updates on the L8. The solution was: uint8_t WrMulti(VL53L8CX_Platform *p_platform, uint16_t RegisterAddress, uint8_t *p_values, uint32_t size) { uint8_t status = HAL_OK; // Initialize status as HAL_OK uint32_t remaining_size = size; // Calculate remaining size to write uint16_t current_address = RegisterAddress; // Initialize current address // Loop until all data is written while (remaining_size > 0) { // Calculate the current chunk size to write uint32_t current_chunk_size = (remaining_size > chunk_size) ? chunk_size : remaining_size; // Perform write operation for current chunk status = HAL_I2C_Mem_Write(&hi2c2, addr, current_address, I2C_MEMADD_SIZE_16BIT, p_values, current_chunk_size, 100); // Check for error if (status
We are pleased to announce that STM32CubeMX 6.16.0 release is available. What is new in 6.16.0: Added support for new microcontrollers across the STM32WBA, STM32N6 and STM32H5 series and the STM32WL3x product line. The related new boards include the NUCLEO-WL3RKB1 and NUCLEO-WL3RKB2. Implemented the "Start from Board" feature for NUCLEO-WL3RKB1 and NUCLEO-WL3RKB2: Preconfigured board setup through the Start From Board feature simplifies project creation and significantly reduces development time. Released a new installer that natively supports Apple® Silicon : Native support of ARM64 for mac computers. Implemented the memory management tool for STM32N6: This feature is designed to assist developers in configuring and optimizing the memory layout of their STM32N6 projects efficiently. Enhanced the build process using CMake: Default configuration: ST ARM CLANG with its own linker instead of GCC linker. Picolib is selected as default library for the b
Hi,I'm attempting to write to an SD Card using a Riverdi STM32U5A9 display board. Since TouchGFX natively uses FreeRTOS, I'm attempting to keep it within FreeRTOS. Porting to ThreadX has caused it's own issues which I have in a separate thread. In the Configurator, there is no longer an option for FATFS, so I'm using the STM32U5 Classic MW Git Repository as recommended by the FAE. I copy over and update the templates as required, but am still getting a Hard Fault during f_mkfs while the HAL library is initializing the SDMMC. I believe that my configuration is incorrect, but the example is only for SDRAM, so I'm not entirely sure where I've gone wrong... I have it setup for 4-bit width and I've changed the clocks to be 24MHz at the SDMMC clock output. The examples within the configuration are for older MCUs and have a tab to enable the DMA. My understanding is that the STM32U5 has an Internal DMA, so it's not required to setup the DMA with
hi, I'm trying to debug stm32mp157f-dk2 by using stm32cubeide by using open OCD and gdbAfter connection, I'm constantly getting below error.I can't even single step in or run. "failed to insert all hardware breakpoints; you may have requested too many hardware breakpoints/watchpoints"
I have been trying for a while now to do something simular to this with threadxhttps://community.st.com/t5/stm32-mcus/how-to-use-stm32u5-with-freertos-in-tickless-mode/tac-p/857701#M1715I want to be able to put the MCU into STOP and wake from uart traffic, I am using threadx not freertos. I should note here that I have written a lot of code on the STM32U575 in the last couple years and have used threadx successfully quite a few times. Ultimately I want to add this to FW that is already running on a product so I would rather not change to freertos. For the purposes of figuring this out I am working on the nucleo board.The problem I am encountering is that the MCU never enters Stop at all unless I kill SRAM3. As a sanity check I also tried doing this without an RTOS:https://community.st.com/t5/stm32-mcus/how-to-wake-up-the-stm32u5-from-stop2-using-lpuart/ta-p/49436Its the same thing as the first link just without freertos or my threadx adaptation. It w
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.