Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello,I am using the STM32H7S78-DK Discovery kit, which includes the MB1400 Wi-Fi module (as described in the UM3289 documentation).I am developing with Keil µVision 5, and I would like to update the firmware of the MB1400 Wi-Fi module, but I cannot find any detailed procedure for doing this using the STM32H7S78-DK board.Could you please clarify:Where can I download the latest MB1400 (EMW3080B) firmware compatible with the STM32H7S78-DK?What is the exact update procedure (UART or SPI interface, boot mode pin settings, required tools, etc.)?Is there any example project or script showing how to perform the firmware update directly from the STM32H7S78-DK (similar to the approach used in AN5534 for other boards)?Thank you very much for your support and guidance.Best regards
Hello:I think I have found how to enable the i-cache on the STM32N657X0 using the STM Cube IDE through using the Pinout & Configuration of the project. Two questions:1. Is the icache actually enabled, or did I just made it available to be programmed?2. How do I enable the dcache? I am using the NUCLEO-N657 development board.If I need to enable them via a software routine, is there an example that I can use?Thank you.kag
I have been developing a IMU board based on the STM32WBA52KG. I'm using STM32CubeIDE 1.15.1 with STM32WPAN firmware 1.30.0. (I've tried using cubeide 1.16.0 with firmware 1.40.0 but was unable to get the code to compile: see this issue: https://community.st.com/t5/stm32-mcus-wireless/ble-wrap-files-missing-after-cube-generation/m-p/700832)Despite the fact I have low power mode disabled in STM32WPAN config, it seems as though radio active events cause the sysclk frequency to double and then return to normal. Attached is a scope trace of Timer 1 PWM output--the timer is nominally 500 Hz at 50% duty cycle (1 ms high and 1ms low). I've verified that the timers running on different APB clocks stay synchronized to each other so this is happening higher up the clock tree, probably around sysclk. I've also scoped the the HSE oscillator and verified that it stays at 32 MHz while the PWM frequency changes.This behavior is present in my WBA52-based board and in the S
Hi,There is confusion with NUCLEO-WL55JC frequency range. Maybe 2 distinct Web pages should be considered for NUCLEO-WL55JC1 and NUCLEO-WL55JC2.Board page: https://www.st.com/en/evaluation-tools/nucleo-wl55jc.htmlFrequency range indicated: 150 MHz to 960 MHz (none JC1 or JC2 precision, as there were only one model)AN5406 - How to build a LoRa® application with STM32CubeWLFrequency range indicated for NUCLEO-WL55JC2 at page 7: 470 MHz and 520 MHzFrequency range indicated for NUCLEO-WL55JC1 at page 7: 865 MHz and 930 MHzUM2592 - STM32WL Nucleo-64 board (MB1389)Frequency range indicated for NUCLEO-WL55JC2 at page 3: 433 to 510 MHzFrequency range indicated for NUCLEO-WL55JC1 at page 3: 865 to 928 MHzWhat is the real frequency range of NUCLEO-WL55JC2 and NUCLEO-WL55JC1?When I bought the boards, I did not pay attention to the JC2 precision, since I wanted a 915 MHz frequency band as it is indicated in the board page. I lost a lot of time strugglin
I have STM32H747I-Disco board i was trying to blink two leds in diffrent core , but not able to do so . it's showing some error while building the project.
Hi everyone,I'm using STM32H573I-DK, since I wanted to experiment with it a little bit. I want to do some audio processing, so I wanted to configure I2S (not planning on using the on board audio codec) to use DMA for circular buffering of RX (using GPDMA1_Channel4 for it) and TX (GPDMA1_Channel5 for it). I didn't know that the DMA changed so much in configuring it, but oh well, I started learning the linked-list mode since it uses it anyway for circular mode. I looked up at different tutorials and posts here, but I still have a problem. I also followed the procedure for setting up the I2S transfer using DMA from 52.9.16 section, Programing Examples.Anyway, I tried to set it up using the node configuration in CubeMX and using HAL functions, but I just could't get it to work. Whenever I looked at the Linked List registers in GPDMA_XXXX (as in for example GPDMA_C4SAR, GPDMA_C4CCR) they were filled with zeros. So I started to use LL so that I can be sure that I write the correct confi
Hi,I'm encountering an issue with OCTOSPI auto-polling on the STM32U5G9NJ-DK1 Discovery Kit while following the "Octo-SPI FLASH in Regular-command protocol example" from AN5050 (Rev 12, February 2025). Specifically, in the OctalPollingWEL() function, HAL_OSPI_AutoPolling() always times out while waiting for HAL_OSPI_FLAG_SM (Status Match) to set. It calls OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_SM, SET, tickstart, Timeout) and returns an error, triggering Error_Handler().Link for Application Note:- https://www.st.com/resource/en/application_note/an5050-getting-started-with-octospi-hexadecaspi-and-xspi-interface-on-stm32-mcus-stmicroelectronics.pdf /* Octal polling Write enable latch function */ void OctalPollingWEL(void) { OSPI_AutoPollingTypeDef sConfig; OSPI_RegularCmdTypeDef sCommand; /* Initialize Indirect read mode for Software Polling to wait until WEL=1 */ sCommand.OperationType = HAL_OSPI_OPTYPE_COMMON_CFG; sCommand.FlashId = HAL_
I am trying to use pins on ADC3 of an STM32h735g in Zephyr, but I am getting a "Could not read (-22)" error, despite not having issues with ADC1. Is ADC3 supported? If so, can you help me with how to configure it?This is based on the Zephyr samples/drivers/adc/adc_dt and I am using the stm32h735g Discovery Kit to test this.I modified boards/stm32h735g_disco.overlay to/* Copyright (c) 2021 STMicroelectronics SPDX-License-Identifier: Apache-2.0 */ / { zephyr,user { /* Adding adc3 1 to the existing definition of io-channels */ io-channels = <&adc1 0>, <&adc3 1>; }; }; &adc1 { #address-cells = <1>; #size-cells = <0>; channel@0 { reg = <0>; zephyr,gain = "ADC_GAIN_1"; zephyr,reference = "ADC_REF_INTERNAL"; zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>; zephyr,resolution = <16>; }; }; /* The following I defined for adc3 */ &adc3 { #address-cells = <1>; #size-cells = <0>; /* Compiler requiess
Hello,I’m working on a motor control application using STM32 and configuring the project with MC Workbench.After generating the project, I manually customize the CubeMX (.ioc) file to adapt it to my hardware (e.g., adding peripherals, changing pin assignments, etc.).However, every time I regenerate the project from MC Workbench, my CubeMX modifications are overwritten, and I have to redo them manually.:backhand_index_pointing_right: My question:Is there a recommended way to:preserve custom CubeMX changes after regenerating from MC Workbench?or integrate these adjustments directly into MC Workbench so they are included during generation?Thanks in advance for your help!
I have been trying to reduce current consumption in a custom board and have seen that current is not getting below 9mA for microcontroller , i am running system on MSI at 2MHz and ABP and AHB peripherals both are at 2MHz ,and to enter in low power run mode i use HAL_PWREx_EnableLowPowerRunMode(), but no effect same current at 2MHz and at 48MHz about 6mA ,can it reduced to 1mA or even in microAmperes
Hello,I have a STM32G0B1KBU3N MCU for my USB-C PD board. I am a new with this so learning. I am currently finished assemble my own PCB and have some issue with programming the controller. I can program controller with ST link V3-minie but have Zero luck to go connect with ST LInk v2. Is my controller supports only V3 hardware? I saw in the Programmer menu with V2 hardware there is only 4 kHz frequency and V3 hardware offers 8 kHz (same as controller internal clock) am I right? Thank you.
Hello. I am trying to develop a BLDC motor driver. With Workbench, I can easily change the motor parameter. But whenever I change the motor, I should reconfigure and re-compile. So I would like to make a FW can change motor parameter dynamically. Is it possible with MCSDK? Thank you in advance.
Hello,I try to jump into the default bootloader of the STM32H563 from user code by setting the NSBOOTADDR:extern void HalRebootInBootloaderMode(void) { FLASH_OBProgramInitTypeDef options; HAL_FLASHEx_OBGetConfig(&options); options.BootAddr = 0x0BF97000u; // From AN2606. Also tried 0x0BF80000 start of sytem memory found in table 48 of RM0481 options.BootConfig = OB_BOOT_NS; options.OptionType = OPTIONBYTE_BOOTADDR; HAL_FLASH_Unlock(); //Returns HAL_OK HAL_FLASH_OB_Unlock(); //Returns HAL_OK HAL_FLASHEx_OBProgram(&options); //Returns HAL_OK HAL_FLASH_OB_Launch(); //Returns HAL_ERROR, because of OPT_CHANGE_ERR HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); HAL_NVIC_SystemReset(); }A similar mechanism worked pretty well on STM32H743 (using registers BOOT_ADDR1 and BOOT_ADDR_0 instead on that MCU).But the snippet above fails on the H563 (HAL_FLASH_OB_Launch() returns HAL_ERROR, and my application always start in my user code).However HAL_FLASH_OB_Launch() return HAL_OF if
Hello ST Community,I'm T. Bala, a middle student in Westchester County New York working on an 8th grade science fair project on embedded systems with the STM32N6570-DK kit. While visiting MIT for a fair accompanying my older sister, I had visited your booth and got an idea for my project this year. We plan to measure vital signs like heart rate, but the current ~$180 price (impacted by tariffs) is a barrier for our budget. Does ST offer educational discounts for schools/students? If so, what's the process (e.g., proof of school ID, bulk order)? Any promo codes or distributor partners for education? I request this because for last year’s fair, I had built a robotic hand that would move based off human flex movements in real time, using a glove with flex sensors attached to the fingers and some Arduino code to let the Robotic fingers bend and curl based off of the amount of resistance the flex fingers gave. It was a big hit and it inspired me to dive deeper into the world of engine
I am working with the STM32U5G9J-DK2 discovery board and trying to interface an SPI peripheralHowever, I am unable to get the SPI communication working.I configured SPI in STM32CubeIDE but I’m not sure which SPI instance and pins are actually free to use. I suspect some pins are already connected internally to the LCD or Octo-SPI flash.
Post edited by ST moderator to be inline with the community rules especially with the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code In STM32C092 board, when I configured in ioc file for ADC, with scan conversion mode and:- enable analog channel 0 only, it is able to measure the analog channel 0 correctly.- enable analog channel 1 only, it is unable to measure the analog channel 1 correctly.- enable analog channels 0 & 1, it is able to measure the analog channel 0 correctly but channel 1 is mirroring the value of channel 0, instead of giving an independent value on changing voltages. I tried:- ranking ADC sequence manually, since in ioc file, it doesn't give options for ranking.- verified the GPIO settings for analog function.- increased sampling time for channel 1.- gave sampling time for channel0 as 1.5 cycles and for channel1 as 160.5 cycles. Am I doing something wrong here?The IOC default cod
I want to change the font at runtime for a TextAreaWithOneWildcard.I figured it would be as simple as:1. update the text in the wildcard buffer (previously set by calling setWildcardTextArea)2. call setTypedText( id ) where 'id' is a designer defined text entry that uses the predefined font I want to use (different to the one used for the TextArea in the designer)3. call invalidate()It seems that the string associated with the 'id' text entry takes precedence over the string I update in the wildcard buffer. I've tried calling in a different order with no success. Is this by design or a bug?I've seen a suggested workaround that uses multiple languages to define the same string but with different fonts. My application is multi-lingual so that's not an option.Why doesn't TextArea have support for selecting a font that is already defined in the application or am I missing something?Thanks
Hello Everybody,Here are the software and boards in this case:1. MC workbench 6.4.12. STM32 FW V1.28.2I’m using the generated code from ST MCSDK and noticed an issue on the microcontroller’s U-phase and V-phase channels (see pins Ch. U and Ch. V in picture 1; the same happens on W-phase, but I didn’t capture that waveform).The blue waveform never completes its falling edge where it should go low, so the whole period looks like a constant high (see picture 2).Is this behavior normal? If not, how can I fix it? Could it be related to the duty-cycle settings of PWM?My gate-driver chip already provides hardware dead-time, so I set the software dead-time to 0; the motor still spins.Thank you!
HI,I need help because I'm going crazy.I’m trying to use SD card with STM32H747 on the M4 core using FatFS and SDMMC1 and FreeRTOS, but the MDMA write never completes and the write complete callback is never called. This happens when I try to format the SD card with f_mkfs, f_mkfs calls SD_write, which eventually triggers HAL_SD_WriteBlocks_DMA. and in which i it crashes. Reading works OK problem occurs only in writing. Tested on many SD cards.Here’s a snippet of SD_write function with debug:uint8_t res; printf("[SD_write] Starting DMA write: %lu blocks to sector %lu...\n", count, sector); res = BSP_SD_WriteBlocks_DMA((uint32_t*)buff, sector, count); if (res == MSD_OK) { printf("[SD_write] DMA write started OK. Waiting for queue event...\n"); #if (osCMSIS < 0x20000U) event = osMessageGet(SDQueueID, SD_TIMEOUT); if (event.status == osEventMessage && event.value.v == WRITE_CPLT_MSG) { printf("[SD_write] Write complete received\n"); } #else status = osMessage
I am working on a 3ph motor control with EVSPIN32G4. I want to know how to measure motor speed through GPIO (To match with the measured quantities in motor pilot). Where can i find the details of that?
Hi everyone, I'm having some strange issues with my ws2812b neopixels, and can't quite figure out what's causing them. Some color settings work perfectly, while others trigger this odd behaviour. Even weirder, certain fixes just seem to shift the issue to different color settings instead or resolving it entirely. And to make things more confusing - it doesn't happen every time. When I send color data to my ws2812b, certain colors cause the first led to appear much brighter with an excessive amount of green. This happens only on the first led. No matter how many leds are in the chain, the rest display the correct colors. I've tested multiple ws2812b rings and strips, but the issue persists. To rule out voltage level problems i added a level shifter to shift both, supply voltage and data line voltage to 5 volts. The problem remained, just brighter :) I can't quite put my finger on whats happening because it's just so bizarre. I am using the nucleo stm32C071RB board. It works at 48MHz. I
I'm using the STM32H562. The STM side is configured as a slave and is successfully communicating with another board via SPI. Now, I'm trying to incorporate DMA into the setup, but it's not working as expected. The transfer complete interrupt is being handled correctly, but the send/receive results are not as expected on either the external board or the STM32 board. Although fixed values are being transmitted and received, the results are coming out as 0 or 0xFF. The GPDMA configuration is as follows. (stm32h5xx_hal_msp.c) /* SPI3 DMA Init */ /* GPDMA1_REQUEST_SPI3_TX Init */ handle_GPDMA1_Channel5.Instance = GPDMA1_Channel5; handle_GPDMA1_Channel5.Init.Request = GPDMA1_REQUEST_SPI3_TX; handle_GPDMA1_Channel5.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST; handle_GPDMA1_Channel5.Init.Direction = DMA_MEMORY_TO_PERIPH; handle_GPDMA1_Channel5.Init.SrcInc = DMA_SINC_INCREMENTED; handle_GPDMA1_Channel5.Init.DestInc = DMA_DINC_FIXED; handle_GPDMA1_Channel5.Init.SrcDataWidth = DMA_SRC_DATAWI
Hi all,I hope everyone is progressing well with their projects.I'm currently working with the STM32H47 series microcontroller. In my project, I log certain values and store them in external flash memory. Later, I use USB host functionality to retrieve this data from flash. Under normal conditions, the project works as expected.However, I’ve encountered an issue: when using a specific brand of USB drive, the device is recognized and functions properly. But when I try other USB brands, the STM32 fails to detect them. I’ve tested the hardware setup and found no issues there, which led me to believe the problem might lie in the USB host code—possibly in the files generated by STM32CubeIDE.Do you have any suggestions or best practices on how to standardize USB host support to ensure compatibility across various USB drive brands? Any recommendations on what to check or modify in the generated code would be greatly appreciated.Thanks in advance for your support!Best regards,
Post edited by ST moderator to be inline with the community rules especially with the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code Hello, I need to calculate SHA-256 on STM32L562 MCU. I need a final single Hash output digest for an input of 8192 keys where each key is of 32 bytes. I am accumulating each key using: HAL_HASHEx_SHA256_Accmlt(&hhash, data, 32); upto 8191 keys. The final key i.e. 8192th key is fed to Hash engine using: HAL_HASHEx_SHA256_Accmlt_End(&hhash, last_data, 32, out_digest, 0xFF); Using this above approach I understood that a final "out_digest" will result a final 32-byte Hash value but I am not obtaining the correct Hash. I tried to reduce keys from 8192 to 2048 thinking that a small data may be processed correctly by Hash processor but still got the wrong Hash value. Instead of accumulating keys one by one, if I take a buffer of size (2048 * 32) bytes and accumul
Hello,I am a beginner with TouchGFX. I created two screens with a slide transition and found some questions would like to confirm.1) Text brokenI found that when the B screen transitions to the A screen, the Big Text contains text broken during transition and is recoverable.CPU frequency = 280MHz (recoverable) (00:00:07, with 0.25 speed)video link: https://drive.google.com/file/d/1CLOdeWr4uZ_r9ffi9f0Zoa8mLxGHqC14/view?usp=sharingContains Black pixelsCPU frequency = 160MHz (irrecoverable)video link: https://drive.google.com/file/d/1GZGT-tRYJ5CKWq-NUqbRcbQ5Ftn7lW1n/view?usp=drive_linkText pixels always missing after transition How the CPU frequency influence this issue?Could it be fixed if using double buffer for TouchGFX? ---------------------------------------------------------------------------------------------------------------------------------------------------------2) Animation StorageAccording to the instructions, I should set a full-screen size buffer for th
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.