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 everyone,I am currently trying to use the ADC with DMA on my STM32H7S78-DK. To do so, I am following this guide: https://community.st.com/t5/stm32-mcus/stm32h7r-s-how-to-configure-an-adc-dma-transfer-in-circular-mode/ta-p/737149. I've made little changes to the code compared to the guide. I am attaching my project. The problem is that the program ends up in the Error_Handler() when the HAL_ADC_Start_DMA() (or the HAL_ADCEx_Calibration_Start()) function is executed.During the execution of the HAL_ADC_Start_DMA(), the ADC_Enable() function returns HAL_ERROR: /* Enable the ADC peripheral */ tmp_hal_status = ADC_Enable(hadc); /* Start conversion if ADC is effectively enabled */ if (tmp_hal_status == HAL_OK)Inside the ADC_Enable() function, the execution lead to this part (ADC_ENABLE_TIMEOUT limit reached): if ((HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT) { /* New check to avoid false timeout detection in case of preemption */ if (__
Hi,I’m trying to generate code for a dual-BLDC FOC setup using an STEVAL-IHM039V1 together with two X-NUCLEO-IHM08M1 boards in MC Workbench 6.4.1.For this combination you need an adapter board to go from the motor-control connector to the Morpho connector.As far as I understand, there is no dedicated adapter board for this configuration, but it looks like the X-NUCLEO-IHM09M2 could be used when using double-sided equal length male headers and stacking the IHM08M1 on top of it.However, MC Workbench doesn’t allow me to insert the adapter board between the two boards. When I click “Add adapter”, the page stays empty.Is there any straightforward way to still define this connection inside MC Workbench? Maybe by editing the adapter JSON file or another configuration file? Or will there still be compatibility issues later on when generating the code?Thanks.
Hello,i am looking about affordable LC Displays with intergrated STM32 controller to evaluate the cabapilities of TouchGFXCurrently i only knew the displays from Reverdi. But i would like to compare them with others.Basic Requirements are:- Screen Size beteen 4 - 7 " - Should have native support by TouchGFX with templates - Mut be available for private personsDo you know other manufactureers providing such type of combuned/intelligent displaysThanks in advanceGreatingsMArc
Hello,I hope this is not a duplicate but I didn't find a similar issue.I'm developing for my company an Android app using the STSW-ST25SDK001 - Software Development Kit for ST25 Tags and Dynamic Tags (https://www.st.com/en/embedded-software/stsw-st25sdk001.html).To use your SDK i have to include two artifacts:st25sdk-1.13.0.jarst25_android_reader_interface-1.0.12-release.aar, specific for AndroidI see that the AAR includes an "application" tag in its AndroidManifest.xml, even if it's only a library and does not provide an Application class:<application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true" ></application>This cause Gradle to complain and fail build with the following error: Manifest merger failed : Attribute application@allowBackup value=(false) from AndroidManifest.xml:7:9-36is also present at [st25_android_reader_interface-1.0.12-release.aar] AndroidManifest.xml:10:9-35 value=(true).Suggestion: add 'tools:replace="andr
stack:Zephyr on stm32n6 (nucleo_n657x0_q)When sending a buffer over sai via i2s_write data is written into the buffer.I expected the TX buffer to be treated as read-only and remain unchanged by the driver.It's only ever the first 2 numbers.Why is that? Example code:int16_t tx_block_test[96] = {0}; In attachment a minimal version of a project that displays this issue.
I need clarification regarding the correct pinout for the specific part number I am designing with: STM32H7R7A8I6.I've noticed a discrepancy between the datasheet and the STM32CubeMX tool:Datasheet: The document shows two options for the UFBGA169 package: Figure 8 (UFBGA169 SMPS pinout) and Figure 10 (UFBGA169 GFx with SMPS pinout).STM32CubeMX: When I select the exact part number STM32H7R7A8I6 in Cube MX, it only displays the pin configuration that matches Figure 10 (UFBGA169 GFx with SMPS pinout).Can you please confirm if the ordering code STM32H7R7A8I6 guarantees the GFX pin configuration (Figure 10)? I need this confirmation to ensure my PCB design is correct before finalizing my purchase and manufacturing.
Hello ST Experts,I am using an STM32H755ZIT6 with W25Q256JV flash in Quad-SPI mode at 100 MHz.On our latest hardware revision, we observe occasional QSPI read failures and flash communication instability.During analysis we found:1. QSPI signal overshoot• QSPI_CLK and IO lines reach up to 4.7 V (measured on oscilloscope).• This exceeds STM32 specification (VDD + 0.3 V).According to AN5612 (ESD & internal clamp diode behavior):If an I/O pin exceeds VDD + diode drop, the internal clamp diode conducts, which may cause:Timing shiftSoft failuresFunctional instabilityQuestion:→ Is overshoot of 4.7 V likely to disturb QSPI timing even if the current is low?→ Is there a recommended clamp current limit for STM32H7 QSPI pins?2. QSPI routing differencesCompared to V2 hardware (working), V3 has:• All QSPI lines routed to 66.6 mm• Serpentine added on CLK, CS, RESET• Additional vias• Closer traces to noisy areas (buzzer, LEDs, ESP32)According to AN4661 – Section 8.4.3:CLK must NOT be serpentineCL
I am using STM32U083 MCU in a project that runs on a 3.6v Li-SOCL2 lithium thionyl chloride battery (OC voltage 3.65V / Nominal voltage at 1mA 3.6V).Currently I have used a LDO of 2.5v to power the MCU, but I was thinking if we can eliminate the LDO and directly power the MCU from the battery.Going through the datasheet I have found that the recommended input supply voltage is 1.55v-3.6v, and max is 4.0v, I have seen a mass produced device using the same battery directly on a STM32L053 MCU. I am expecting the same might be possible with U083 as well.Please suggest if this is okay or is there can be any potential issues that can happen.
So i'm following along with this video* https://www.youtube.com/watch?v=usQ_f6Swpok&list=PLTJzs51NlEICI7ARAHOyUqMhTgJE0UFv0&index=5 I have the same* STM32N6-DK board This is my build command for the GPIO_IO_Toggle application.* /opt/st/stm32cubeide_1.18.1/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.2.100.202412061334/tools/bin/STM32_SigningTool_CLI -bin GPIO_IOToggle_FSBL.bin -nk -of 0x80000000 -t fsbl -o GPIO_IOToggle_FSBL-Trusted.bin -hv 2.3 -dump GPIO_IOToggle_FSBL-Trusted.bin I tried this on 2 different boards and the same thing happened Bellow is the results from trying to program it. My output from generating the signed bin
The correct declaration should be:void initialise_monitor_handles( void )This is not very important... but it generates warnings
Hello, My usual workflow is to fire devcontainers with everything I need in order to have the right tools in every development computer used by the team.What I notice with the vscode for stm32 is that now it is harded to pack the tools prior to using the containers.Configuring the installed extension is not enough because then when the container runs, every st extension downloads a lot of data from the network.Working with a lot of containers and in a huge team does not scale well because everytime a devcontaner is opened more that 2GB of data are downloaded and unpacked.This is a waste of network, disk, time resource that could be better used. There is a way for having the tools packed in a devcontainer? They are the future of reproducible builds and sharing configuration between programmers. thank you in advanceAndrea
Nucleo-WB55RGThe docs mention that it can be run off a button cell & also mention that the 3V3 pin can be used to power the board. Is it possible to run the board off a 3.7V LiPo battery? My application is pulling 7ms & using BLE
I'm trying to find the cause of a hard fault in my code. The problem repeatedly appears after a few or more minutes after starting the code, sometimes not at all, sometimes every time at close startup after enabling interrupts, and somethimes after a few seconds, as if it were dependent on the compilation. Somethimes watchdog re-runs code.CubeIDE, STM32G0 I tried debugger IDE and here apears something like this: What does mean signal handler FFFFFFF1 and FFFFFF9 ? Maybe it helps me to find the problem.I dont use freertos, I dont use dynamic memory allocations. Only interrupts with 4 priority levels_Min_Heap_Size = 0x1000 ; /* required amount of heap */_Min_Stack_Size = 0x2000 ; /* required amount of stack */
Hello AutoDevKit Support Team,I’m setting up an AEK-MCU-C4MINI1 board and I’m unable to get a working debug session through the board’s mini-USB (P2). I’ve read the user manual, followed the bring-up steps, and tried several configurations, but OpenOCD never manages to see the device over JTAG.SummaryExpected: OpenOCD starts, identifies the SPC58 device, and GDB halts at main().Actual: OpenOCD starts but repeatedly reports JTAG scan/IDCODE errors (“all ones”; IR capture 0x3F). GDB then disconnects.HardwareBoard: AEK-MCU-C4MINI1 (power to J2 = 12 V, S1 ON; D10 LED on)Connection: single mini-USB to P2 (no external probe connected to J3)Windows Device Manager shows:Ports (COM & LPT): AEK-MCU-C4MINI1 (Interface 1) (COMx)USB devices: AEK-MCU-C4MINI1 (Interface 0)USB IDs seen via Zadig: 0483:049A for both interfacesHost / ToolsWindows 11 x64AutoDevKit Studio 2.6.1OpenOCD bundled with AutoDevKit: 0.12.0+dev-00318-g0e98d766eGDB: ppc-freevle-eabi-gdb.exe (AutoDevKit toolchain)ProjectNew SPC
Hey!I will explain my setup and then paste the code. I have three different timers (TIM1, TIM2, TIM3) sending out PWMs to different parts of my board. All timers are set up the same way; the only difference is that TIM1 is an advanced timer.What I do is initialize all my timers and start everything up. Then, much later, I switch my pins from GPIO output low to pin alternate mode to enable the PWM outputs. This works great 999 times out of 1000, but sometimes TIM1 (and it’s always TIM1) randomly decides to put the PWM high for a very long time and then, after about 20 ms, goes down to 0 and never starts again. Resetting the MCU fixes this, and everything works as expected. (Using STM32G051)Here is the initialization code for TIM1: TIM1.CR1.CMS = 0x1; //Set TIM1 center aligned mode, trigger interrupt flags on compares in downcount TIM1.CR2.MMS = 0x7; //OC4REFC signal is used as trigger output (TRGO) TIM1.ARR = PERIOD_SIXTH * 3; //Auto-reload register TIM1.CCMR1.OC1M = 0x6; //PW
Hi ST Team,I am working on the STM32F746G-DISCO board.I have ported ThreadX with TouchGFX to this board, and I want to use the ThreadX + TouchGFX sources generated by STM32CubeIDE.However, I am facing build errors during compilation.Please find the attached photos/screenshots of the errors.I request your support in resolving this issue.If possible, please share any relevant documentation, guides, or reference links that explain how to properly integrate ThreadX with TouchGFX on this board.Thank you,
Hi everyone, I'm encountering an issue with the STM32H747 dual-core MCU during the transition from bootloader to application. Here's a summary of the setup and observed behavior: Setup: Bootloader (CM7 core): When the BCM4 option byte is enabled, the CM4 core starts as expected. Application (CM7 core): After the bootloader jumps to the CM7 application, the CM4 core stops responding. What We have Tried : Manual CM4 Enable in Application Disabled CM4 in option bytes. Attempted to enable CM4 manually in the CM7 application: SYSCFG->UR1 = (1 << 0); // Set BCM4 = 1 RCC->GCR |= (1 << 3); // Set BOOT_C2 = 1 Result: System hangs. Recovery requires setting BOOT pin = 1, flash erase, and reprogramming. The issue seems to be with SYSCFG->UR1 = (1 << 0) 2. Option Byte Update via Flash APIManual CM4 Enable in
Hello,I am implementing SPI master communication on an STM32G474RE, transferring 68 bytes per transaction. However, I am unable to achieve the desired SPI clock speed of 5 MHz—currently the SPI clock only reaches approximately 3 MHz.The system clock is configured at 160 MHz, and I have tested the peripheral clock (PCLK) at both 80 MHz and 160 MHz. Based on these clock settings, I tried multiple SPI prescaler values (16 and 32) to obtain a 5 MHz SCK frequency. In addition, the SPI_SCK pin is configured in High-Speed mode. Despite these settings, the SPI output clock still does not exceed approximately 3 MHz.Has anyone experienced similar limitations, or is there an additional configuration step required to achieve a stable 5 MHz SPI SCK on the STM32G474RE? Any guidance or suggestions would be greatly appreciated.Thanks in advance.
I am logged into my STM user account.I get to the download page for STM32CubeCLT (https://www.st.com/en/development-tools/stm32cubeclt.html#get-software) and I try to download the latest version for Windows.A dialog pops up with 'Log in to MyST', 'Create a MyST Account' and down in the corner 'Download as a Guest'.I click 'Log in to MyST' and the dialog just closes and no download starts.
I'm going to use the STEVAL-MIC008A Dual MP23DB01HP MEMS daughter board with the STM32N6570-DK (by connecting to CN5). I looked at the STM32N6570-DK example project MDF_AudioRecorder and noticed that for using on board MIC (only one micophone) it uses instance0 (MDF1_SDIO, Pin PE8) with the following configuration:Bitstream Matrix: Falling frontInterleaved mode: No (which makes sense since it uses only one MEMS microphone)Since the STEVAL-MIC008A includes two microphones that share the same data and clock lines, can I still use instance 0 to receive interleaved data (left and right channels) from the STEVAL-MIC008A, or do I need to enable instance 1 as well?
Hi all,Is there documentation that shows the ThreadX functions with an explanation of the function's parameter? and which are mandatory and which optional?This is an example of a simple function call generated by cubeMX: /* Create tx first thread. */ tx_thread_create(&tx_app_thread, "tx first thread", tx_first_thread_entry, 0, pointer, TX_APP_STACK_SIZE, TX_APP_THREAD_PRIO, TX_APP_THREAD_PREEMPTION_THRESHOLD, TX_APP_THREAD_TIME_SLICE, TX_APP_THREAD_AUTO_START) I can tell what some of the parameters are by looking at their name but not all of them. I read "Azure RTOS ThreadX User Guide" from Microsoft. I've looked at the STM32 wiki and the threadX documentation on github but I can't find a document just for the functions calls (threads, semaphore, queues, etc) and its parameters (even a summary would be good). Is there such a document? Thanks
On a stm32u5, the SPI3 is in the SmartRun domain, which is designed to work down to STOP2 in autonomous peripheral mode with LPDMA. I'm now wondering if it is also possible to use SPI3 in autonomous mode with GPDMA but only to STOP1? Or do I need to use LPDMA to use SPI3 in autonomous mode regardless of the chosen stop mode?
Hi! I have Linux Mint 22.2. How can I configure CubeIDE colors so that all windows have a white background? Various combinations of Windows->General->Appearance settings allow you to achieve a maximum white background for all windows except the one where you edit the code.Version CubeIDE 2.2.0
Hello, I am using the Zephyr operating system with the STM32U5G9J-DK2 hardware. I intend to collect voltage data using the ADC, but so far, no progress has been made. Here are the steps I have taken: I used the zephyr\samples\drivers\adc\adc_sequence example from Zephyr 4.2.0. I created a new app.overlay file in the root Vmakelists.txt directory with the following content: / { aliases { adc0 = &adc1; }; }; &vbat1 { status = "okay"; io-channels = < &adc1 5 >; }; I compiled using this command:west build -p always -b stm32u5g9j_dk2 --sysbuild . Then I supplied 1V to the PA0 pin (silkscreen labeled PWM/D6), and the log is as follows: [16:22:28.487] RX←◆*** Booting Zephyr OS build v4.2.0 ***ADC sequence reading [0]: [16:22:29.493] RX←◆- adc@42028000, channel 5, 5 sequence samples: 2684 = 2162mV 1788 = 1440mV 1571 = 1265mV 1532 = 1234mV 1492 = 1202mV adc@42028000, channel 12, 5 sequence samples:
Hello Respected Members,I have a bootloader in CPU1 at address 0x08000000 and an image at 0x08024000. I have different BLE services in bootloader and in image. Problem is, once CPU2 has been started by bootloader, it jumps to image and hence the services of image cannot be loaded, BLE stack does not advertise. SHCI_SUB_EVT_CODE_READY event is never received in image as bootloader has already received it.I read about SHCI_C2_Reinit() in How to build wireless applications with STM32WB MCUs - Application note (AN5289). So, I called it in bootloader before jumping to image. But alas, I still did not get SHCI_SUB_EVT_CODE_READY. I need help in correct usage of this SHCI_C2_Reinit() so I can reinitialize different BLE services in image when jumping from bootloader.
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.