Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I am currently working on the STM32N6570-DK board and need support for MIPI camera interfacing using CSI (not USB).RequirementInterface a MIPI camera using CSIRead camera dataEncode the dataSend it to a PC via Ethernet using UDP streamingSupport NeededHow to configure and enable CSI (MIPI camera interface)Any reference examples/projects for camera bring-upGuidance on reading camera data from CSIAny examples for encoding + Ethernet (UDP) streamingKindly provide any documentation or example projects that can help achieve this.
Post edited by ST community moderator. In next time please use </> to share a code. HI, I have Implemented ADC1 - DMA with one channel and ADC2 - DMA with 7 channels and im transmitting data through UART IT. I want to know if this code works usually. void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if (hadc->Instance == ADC1) Print_ADC_Values_IT(); if (hadc->Instance == hadc2.Instance) Print_ADC_Values_IT(); } hadc2 is workin only when i disable HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adc1_value, 1); Here's the overview of my code: MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_ADC2_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ // HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED); HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED); // Start ADC1 (1 channel) // HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adc1_value, 1); // Start ADC2 (7 channels) HAL_ADC_Start_DMA(&hadc2, (uint32_t*)adc2_values, ADC2_CHANNE
Hello, I am using an STM32H755 Nucleo board in a system where the board is plugged into a custom PCB via headers. The system has been working for about two weeks without any issues. Occasionally I remove the Nucleo board to update the firmware and then plug it back into the PCB. Today the system stopped responding to UART commands. When I connected the board to my PC, STM32CubeIDE reported: "No ST-LINK detected! Please connect ST-LINK and restart the debug session." I also tried STM32 ST-LINK Utility and got: "Can not connect to target! Please select 'Connect Under Reset' mode..." However, STLinkUpgrade is able to detect the ST-LINK and perform a firmware upgrade. Another important observation: The ST-LINK MCU on the board (STM32F7) is getting very hot. Additional diagnostics: - The board was completely removed from the external PCB. - Even when powered independently, the ST-LINK MCU still overheats. - The board draws significantly higher current than normal. - I cannot measure proper
Hi,I am using STM32H755 where M7 and M4 runs bare-metal firmware using OpenAMP (RPMsg).Sampling rate is set to 250 SPS. The data is sent from M4 to M7 using OPENAMP_send() function.Observation: Data loss of approximately 10% is observed during transmission from M4 to M7. The loss does not follow a fixed pattern.Questions:- Is this an expected behavior with RPPMsg/OpenAMP at this rate?- How can I ensure reliable transfer without data loss? Thanks & Regards,Bhagyashree Ghosh Roy
I am currently working with MC Workbench and the ST Motor Pilot tool for motor control development. While setting up and attempting to establish a connection using the latest version of ST Motor Pilot, I am encountering a connection issue that appears to be caused by a bug in the current release.As suggested in the community forums, I also tried using an older version of ST Motor Pilot. However, this introduces dependency conflicts, as other required components and tools in the workflow depend on the latest versions and are not fully compatible with the older Motor Pilot version.Board- STEVAL-ESC001V1
Hello, I am currently working with the NUCLEO-WB05KN1 development board (STM32WB05KN MCU) and I would like to implement FOTA (Firmware Over-The-Air) / OTA update over Bluetooth. However, I could not find any clear reference documentation, application note, or example project related to: Bootloader implementation for OTA Memory partitioning (dual bank / slot usage) BLE-based firmware update flow Any official FOTA example for STM32WB05 series I checked the datasheet and reference manual, but there is no clear explanation of: Whether a built-in/system bootloader supports OTA via BLE How to structure the flash (bootloader + application separation) Any middleware/library support for firmware update Currently, my memory usage is: FLASH: ~34% RAM: ~49% So I still have space to implement a custom bootloader if needed. My questions: Is there any official ST example or application note for OTA/FOTA on STM32WB05KN? Does STM32WB05 series support BLE OTA natively (like STM32WB55)? If not, wh
Hi All,I've this requirement, can someone suggest how do I proceed.I'm using stm32u535 and over usart it's connected to Silicon labs chip. Silicon labs chip has Wi-Fi and I want to update firmware of STM32U535. This silicon labs chip is connected to cloud over Wi-Fi.
Hi everyone,I'm using an STM32H723 for a project with Hall sensor encoders on two BLDC motors.**Hardware:**- Left motor: PE7, PE8, PE9 (U,V,W)- Right motor: PD3, PD4, PD2 (U,V,W)**Problem:**Right motor encoder works perfectly. Left motor has issues:1. Tick count is much lower than right motor (82 vs 236 ticks for same movement)**Debug Output:*ENC:0,1|DIR:STOP,CW ← Left STOP, Right movingENC:6,11|DIR:CW,CW ← Both OK brieflyENC:8,21|DIR:STOP,CW ← Left STOP againENC:82,236|DIR:CW,CW ← Huge tick difference**What I've Tried:**- Added debouncing- Removed direction reset on invalid transitions- Verified signals on oscilloscope (clean)- External pull-ups (4.7kΩ)**Key Difference:**- Right motor: Dedicated EXTI2, EXTI3, EXTI4 handlers → WORKS- Left motor: Shared EXTI9_5_IRQHandler for all 3 pins → PROBLEMS**Questions:**1. Can shared EXTI9_5_IRQHandler cause missed transitions when two pins change simultaneously?2. Should I move left motor to pins with dedicated EXTI lines (0-4)?3. Is there any w
We are currently working with a custom PCB using an STM32N6 chip and an MX25UM512G flash chip. The flash is connected identically to the Nucleo development board.When powering up the board in Dev Boot mode, it is not possible to read the flash chip using CubeProgrammer. The MCU crashes, which we assume based on the reduced power consumption observed afterward.If we first load a firmware image into SRAM using CubeIDE (which successfully connects to and reads the flash memory), then reading and writing the flash via CubeProgrammer works as expected.However, after a power cycle without reloading the firmware into SRAM, the flash becomes inaccessible again.Additionally, after flashing the firmware using this workaround (i.e., initializing the flash via our own firmware and then booting in Flash mode), the software is not executed from flash and the system does not boot.Our assumption is that the flash is not correctly initialized by the boot ROM. Any help or suggestions would be highly app
Hello community, I am working with different ibis model of STM32H7, however, this is the only one that's giving me an error in my Altium Designer – could you have a look at it? The file is stm32h723_730_733_lqfp144.ibs Kind regards,Javier.
I am developing a project using the STM32U5G9J. In particular I based our board on the STM32U5G9J-DK2 board. My project includes over the air update for which I am using the external flash that comes on the DK2 board for temporary firmware swapping storage. The external loader MX66LM1G45G_STM32U5G9J-DK2.stldr looks like is not accessing beyond 64MBytes, giving the impression of mirroring the first 64MBytes. I need to be able to have the external loader handle fully the 128 MBytes, as well as my application being able to access the 128 MBytes by code. I am using the STM32CubeIDE 1.19.0. which the IOC file configuration for HSPI is in OCTO SPI mode with the capacity to read 128MBytes. I am using the external loader to manually write certain pieces for debugging purposes. I cannot verify if my code works until the external loader is being able to access the full 128MBytes. Please help me providing the right external loader, as well as the certainty that the IOC file can have the HSPI acce
Title edited to clarify that this refers to a NUCLEO-WBA65RI board.Hello, I am currently using STM32WBA65RI with Standby mode. According to datasheet, this mode should be able to reach 120nA current consumption with the 16 GPIO wake-up pins (RTC disabled). However running the Standby example and shutting down the RTC I am still getting 3uA of current consumption. What can I do to decrease the current consumption up to the nanoA?Best regards.
Was trying to figure out an issue I was having with the SWDCLK pin, and realized there was a difference between the STLink V3-MINIE and the V3-SET.When idle (either just plugged into a computer, or after programming), the SWDCLK idles high on the MINIE, while on the SET it idles low.Is this an intentional difference? Is there any way to make the SWDCLK idle low on the MINIE as well?
Greetings!I am trying to establish a connection between STM32F439IIH6 (Slave) and a customize board (Master) through SPI DMA application. The customize board has its own built-in driver with SPI application. The communication between STM32F4 and customize board eventually broke down after few thousands of cycles. Through some investigation, I found out that the SPI_WaitOnFlagUntilTimeout() hangs inside SPI_DMATransmitReceiveCplt(). It sutcks inside the else statement of SPI_WaitOnFlagUntilTimeout(). The clock used in customize board (Master) is 80Mhz with clock division 4/** * @brief This function handles SPI Communication Timeout. * @PAram hspi: pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval HAL status */ static HAL_StatusTypeDef SPI_WaitOnFlagUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus Status, uint32_t Timeout) { uint32_t tickstart = 0; /* Get tick */ tickstart =
Hello everyone. I am running into a USB Host <--> Device connectivity issue. I have 2 STM32L496 MCUs, one as Host and other as Device. I cannot get the CDC connectivity to work for some reason. The connections are as follows: D+ <> D+, D- <>D-, GND<>GND.I have VBUS, SOF and NOE disabled. CubeMX forces to set Drive_VBUS as well over a GPIO, however, I am not using that in my circuit. Even though it is a recommendation in USB connectivity in AN4879, I believe it is possible for a simple connectivity without it as well. Would this be a wrong assumption (and hence the culprit)? As a connection stability, I tested both MCUs individually as Devices, connecting to my PC and it sent data over USB just fine. The attached code has NucleoL496 as the host. Would appreciate your support.
Hi everyone,I built a Windows tool — a simpler frontend for ST-LINK CLI that replaces the entire command loop with a single drag-and-drop action. Designed to simplify the process for beginners and save time for experts.AMN STM32 Flasher — drop your .bin file onto the window and it automatically handles the full pipeline: erase → program → verify → read protection. No commands, no configuration, no setup.Key features:Auto-detects ST-LINK CLI path — no manual configurationInstant Flash Mode — flashes the moment you drop the file, no button click neededOne-click RDP1 read protection toggleNative Win32 drag-and-drop via ctypesFull keyboard shortcut supportWorks with STM32 over SWD. Requires ST-LINK Utility installed — the app finds it automatically.Free and open source under Apache 2.0.DOWNLOAD: AMN STM32 Flasher Would appreciate feedback from the community.Aneesh Murali Nariyampully
Hi, I am implementing a Dual Active Bridge (DAB) DC-DC converter on an STM32L476RG Nucleo board. The goal is to generate 8 complementary PWM signals using TIM1 (Bridge 1) and TIM8 (Bridge 2), both at 5 kHz with 50% duty cycle, and to control the power transfer by adjusting the phase shift between the two timers. The phase shift must be adjustable at runtime (via button, potentiometer, or PID controller) without affecting the 50% duty cycle. I tried three synchronization approaches, all of which failed: 1. Reset Mode (SMS=100): TIM1 sends a TRGO at the end of each period. TIM8 receives it and resets CNT to 0, which cancels any preloaded phase offset every 200 µs. The phase shift cannot be maintained. 2. Trigger Mode (SMS=110): TIM8 starts on the first TRGO then runs freely. The initial phase is correct but there is no ongoing synchronization, which could cause drift over time. 3. CCR1 as TRGO source (MMS=011): Using CCR1 to time the trigger woul
..
I have enabled USB with the following settings:Following USB middleware is enabled like so:In the linker script I have moved everything from DTCMRAM to RAM.Additional section is specified like so.dma_buffer : { *(.dma_buffer) } >RAM_D2And used like so:/** Received data over USB are stored in this buffer */ __attribute__((section(".dma_buffer"))) uint8_t UserRxBufferHS[APP_RX_DATA_SIZE]; /** Data to send over USB CDC are stored in this buffer */ __attribute__((section(".dma_buffer"))) uint8_t UserTxBufferHS[APP_TX_DATA_SIZE]; At this point USB device enumerates but looks like no descriptors are transferred to the host.I also tried to enable MPU like so:But that did not do the trick.However, when RAM region base address (0x24000000) is used instead of RAM_D2 (0x30000000) for MPU, device enumerates correctly:and there is no need for:__attribute__((section(".dma_buffer")))on rx and tx buffers anymore.Now the question. How to correctly place only the USB related stuff to
Hi.I'm using an STM32G051 and would like to use 12 ADC channels which are not sequential. I have thus set up the ADC for 'sequencer set to not fully configurable' as show below:Ignore for the moment that IN9 is red, I think I was trying something with one of the comparators to see if that helped.I'm using the DMA to kick off a new conversion and the callback reports back raw values which I print out as seen below.If I enable IN0, IN9 or IN10 then I get bad data from the ADC (possibly mixed up channels) as seen below where the VREF+ is being reoprted as over 5V when it should be 3.3V.VREF+: 5362 mV.CPU Temperature (STM32): 1870.0 °C.Sample Temperature: 0.0 °C.LED feedback current: 0 mV.raw vref ADC value: 0x3a5.raw DET0 ADC value: 0x184.raw DET1 ADC value: 0xfff.raw DET2 ADC value: 0xffe.raw DET3 ADC value: 0xffd.raw DET4 ADC value: 0xfff.raw DET5 ADC value: 0xffe.raw DET6 ADC value: 0x5e4.raw STM32 temp value: 0xffe.raw LED feedback current value: 0x00e.If I disable IN8, IN9 and IN10 (
Hi, I am using STM32WBA55G-DK1 as a BLE TMAP Peripheral, I have a transmitter, which is transmitting 4 channels/subgroups of data. But the device is stucking at Syncing PA, but when the same is given with 2 channels(BIS), I am able to to connect and listen the music. What are the changes to be made to avoid this issue. Thank you
I am working with the STM32WB5MMG and implementing firmware updates using OTA. For testing, I am using the ST BLE Sensor Android application. What I Tested I first tested OTA using the example projects available in the STM32CubeWB firmware package: Heartrate_ota P2PServer_ota Both examples work correctly. I can: Flash the example firmware Connect using the ST BLE Sensor app Upload another firmware via OTA successfully My Custom Firmware After verifying OTA with the examples, I created my own firmware that includes: Custom BLE service Custom characteristics Custom UUIDs and device name When I upload this custom firmware via OTA from the example firmware, the update completes successfully and the device runs my application correctly. Problem After my custom firmware starts running: The device no longer appears in the ST BLE Sensor app as OTA-capable. I cannot upload another firmware via OTA. The device does not advertise as an OTA device like the Heartrate_ota
Hello, Is my understanding correct that it's impossible to internally detect short (<100ns) drops of VCORE internally? Reading RM0481 page 154 it seems impossible to directly monitor VCORE through the tamper mechanism which I assume forces the use of an ADC+WDG, which probably puts the detection range in the µs? Which means the target is sensitive to fault injections?
Hi,I am new to ST platform, i am facing an issue as below.C:/Users/Yuvaraj/Desktop/Test/1/Middlewares/Third_Party/LwIP/src/apps/http/fs.c', needed by 'Middlewares/LwIP/apps/http/fs.o'. StopI am opened the project from examples codes.Can anyone help ? How to resolve this? Regards,Yuvaraj V
Hello, Is there any resource or reference available like tutorial video or presentations to set up a minimal working configuration for the IPM30B? I have experience on a low power setup with X-NUCLEO-IHM16M1 but I am new to hardware assemblying with ST and I am trying to understand how to correctly configure a basic setup to make the motor start. My goal is to have a minimal working system, including: - IPM30B power stage - G431RB or G474RE development board, with the suitable motor control connector and with flat cable - Two separate low voltage DC supplies (one for auxilliary 15V port and the other one for Vdc bus) - Low power PMSM with 24V nominal voltage - Basic configuration using Motor Control Workbench / MCSDK for PMSM sensorless basic operation At the moment, I am not sure about the correct jumper connections required to match the configuration settings in ST Motor Control Workbench, the proper wiring details between the IPM30
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.