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
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.
We are pursuing UL3141 for Power Control Systems (PCS), this includes UL991 which is the Standard for Tests for Safety-Related Controls Employing Solid-State Devices, and it requires a critical component analysis. In our particular design, the STPM34 is a critical component used in our PCS. To avoid hardware redesign to add sensor redundancy or a self-test circuit, we can use a "computational method" by considering component FIT data. Typically we expect FIT data on the order of 10^6 or 10^9 hours. Do you have FIT data available for the STPM34, that is measured to an applicable standard? Does STMicro have critical component analysis data available for the STPM34? Does STMicro have internal resources to support customers with critical component analysis? Kind regards, Bryn
Are there STM32CubeMX files for the example projects in STM32Cube_FW_MP2? It would really help understand peripheral configuration. Specifically the .ioc file for the OpenAMP example project used in this tutorial.I am trying to better understand STM32CubeMX peripheral setup, especially in regard to how each peripheral can be selected for each core in secure or non secure mode. And how that interacts with the Linux device tree.
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 everyone, I'm working on a prototype, which is using a PM8805 to classify connected PoE types. However we are running into an issue, where neither T0, T1 or T2 are giving us any signals (giving always 1 on their open drain signals, making .the LEDs stay off). Suspecting an issue with our prototype, we went on to get a STEVAL-POE001V1, which is showing the same scenario: With our different PoE, PoE+ and PoE++ injectors (Both Ubiquity and TP-Link brand), the T0, T1 and T2 LEDs are remaining off. The PGD LED is however on in those tests. We tested with and without a load on the output (for example 5kOhm) to prevent the injectors going into standby mode. We checked and according to datasheets the TP-Link TL-POE160S is an active 802.3af/at compliant injector. Is my understanding correct? With the CLS 1 resistor at 36.5Ohm and the CLS2 resistor at 51.1Ohm, the T0, T1 and T2 signals should, as an example, be 0, 1, 1 respectively for a
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?
Hello,We are currently looking ahead at future options for stepper-motor control and are interested in ST’s longer-term direction beyond L6470 and powerSTEP01.For our application, sensorless detection of stall, obstruction/collision, and increased friction/load during motion is important. We have also looked at Trinamic TMC devices, which seem to offer more advanced sensorless feedback, but we would prefer to stay with ST if a suitable future device is planned.Is there any newer stepper-driver IC on the ST roadmap intended to improve sensorless load, back-EMF, stall, or obstruction detection compared with L6470 / powerSTEP01?And if such a device is planned, is it something expected in the near-to-medium term?Thank you.
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
Locking the controller (NUCLEO-C562RE - RDP level 2 with OEM key) works fine with J-Link / ST-Link (SWD). E.g.stm32_Programmer_CLI.exe -c port=JLINK -lockRDP2 0x11111111 0x11111111 0x11111111 0x11111111 -ob RDP_level=0x72 ------------------------------------------------------------------- STM32CubeProgrammer v2.22.0 ------------------------------------------------------------------- Connecting to J-Link/Flasher Probe Device=Cortex-M33 Device ID : 0x44E Voltage : 3.29V Frequency : 4000 KHz NVM size : 512 KBytes Lock RDP2 password successfully done UPLOADING OPTION BYTES DATA ... Bank : 0x00 Address : 0x40022050 Size : 112 Bytes ██████████████████████████████████████████████████ 100% Bank : 0x01 Address : 0x40022098 Size : 8 Bytes ██████████████████████████████████████████████████ 100% Bank : 0x02 Address : 0x40022070 Size : 8 Bytes ██████████████████████████████████████████████████ 100% Bank : 0x03 Address : 0x40022080 Size : 8 Bytes ███████████████████████████
I realise one cannot disable the watchdog, short of a full reset.One method would be to leave a "magic number" somewhere, say in one of the RTC locations, do a reboot, and if that is found at power-up, you don't enable the watchdog and you perform a shutdown, using the WFI etc method.But that's not really the point, and it is not safe.I wonder what would be the most effective thing possible. The watchdog will still be tripping so probably the best way would be to select slowest clock (I have a 25MHz external xtal and a 32768Hz external RTC xtal) and stay in a loop pulsing the watchdog. What is the best way to do this? Perhaps switching to the 16MHz internal oscillator and setting the PLL for the slowest clock?Any tips much appreciated.
Heyho,playing with the L073, partitioned the flash for bootloader "BL" (bank 1) and application (bank 2).No writing of app yet, just testing jumping back and forth.I just added a no-init variable for communication between BL and app, mainly to tell the BL to not jump back to app if the app requested so.at power up / reset, the uninitialized variable "u32AppRqstBootloader" is 0, so the BL jumps to the app, and just for checking: before the jump the BL sets u32AppRqstBootloader = 0xB0072ABBin the app u32AppRqstBootloader is printed via UART, and it shows the expected 0xB0072ABB, the printf is done immediately and takes ~ 2 ticks (1 tick = 1 ms)now I let the app jump to BL, before the jump the app sets u32AppRqstBootloader = 0xABB1B007 so the BL does not jumpSo far so good...But when the BL now jumps back to the app, all of a sudden in the app there's a ~ 1 second delay before u32AppRqstBootloader is printed - everything else is working fine - or so I think... (the next pri
Hello,I have some sort of experience working with linux on RPI.I wanted to increase my embedded linux experience with STM32MP.So I wonder, should I buy STM32MP2 because its newer, or STM32MP1 because it will probably have more support and more reference because its been here for some time now?Also, for STM32MP257F-DK, the debug port and the power supply are shared on the same USB-C, how can i do both at the same time? because I don't think the PC can supply it with enough powerWould I need anything to start other than the external USB-C power supply?Any other recommendations are welcome
Hello. We are developing a p2p application using two Wio-E5 mini modules based on stm32 WLE5JC.The problem I'm facing is HAL_DELAY not working. I created the project, chose HSE, LSE, then SysTick, and then after I selected SysTick, HAL_IncTick() was well declared in SysTick_Handler, and I also checked NVIC. But when I do HAL_GetTick() at any moment, I get zero. Isn't there a problem with this??The Ping Pong example also uses HAL_Delay, but I cannot understand why this happened. This is very critical for my project becaude when i set modem state in RX, it call timeout in next loop. please help me
Hi ST team,We are going to design variable programable power supply based on PFC + half bridge PWM controller (with fixed transformer turns ratio). Below is the requirementFor Model 1 Vout (Half bridge converter): 3V-63V/5A (180W maximum with auto ranging)For Model 2 Vout (Half bridge converter): 3V-23V/20A (210W maximum with auto ranging)PFC output wattage for one channel model: 230WPFC wattage for second channel model: 460W So could you please suggest can we use the L6563 for PFC and L6591 for our voltage and power application as mentioned above. RegardsVikram
If I don't enable RX line inversion, everything works fine. But when I enable inversion, I constantly get frame errors. The DMA operates in cyclic mode, without interruption. It's just like a ring buffer. In normal mode, everything works without problems. The signal source itself was tested on another device with a purely hardware signal inverter, and everything was fine. It's unclear why enabling inversion causes the problem. Perhaps someone can give me a hint as to what might be causing this? Thank you.
I am currently working on the STM32N6570-DK board for a camera-based project.Development SetupIDE: STM32CubeIDE (Version 2.1.1)Tool: STM32CubeMX (with STM32N6 package installed)Issue 1: Flashing & Boot BehaviorI tested the example GPIO_IOToggle programThe program is flashing and running properlyHowever, after pressing reset, the code is not running againTo make it run:I set BOOT1 = LOW and BOOT2 = LOWAfter reset, the AI demo code runs insteadMy requirement:How to properly flash the user application into internal flash memoryAfter reset, the same user code should run automaticallyIssue 2: Required Examples / GuidanceI need guidance or reference examples for the following:1. ST-LINK V3EC configurationSerial communication setup for debugging (UART / Virtual COM)Camera InterfaceCamera bring-up2. How to read camera dataEthernet & StreamingEthernet initialization (bring-up)UDP socket configurationStreaming camera data to display over EthernetProject GoalCapture camera data and stream
Hi SupportI have experience in STM32 with Zephyr but I am trying out AMP for the first time.So I am trying out OpenAMP example from STM32CubeIDE. I can compile the example but cannot flash the same.I have the following errorThe ST-Link device is present as shown below I have tried other boards like NUCLEO-G431RE with some simple UART example and work well.I have problems only with AMP board, I am not able to flash M4 and M7 core. My dev environmentUbuntu 22.04 and STM32CubeIDE ver1.1.8.1 Could anyone please help me understand the same?
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.