Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi all!I am using the IHM08M1 power board for a BLDC/PMSM motor application, and I have a doubt regarding the L6398 gate driver input logic.My question is:If I use PWM to control the high-side MOSFET and a GPIO to control the low-side MOSFET, is this approach correct when working with the L6398 gate driver?I am asking because I am currently using complementary PWM mode on my microcontroller. In complementary mode, the signals are inverted (PWM and its opposite), so HIN and LIN cannot receive the same logic level. Because of this, the L6398 truth table does not match, since the driver expects:HIN = HIGH, LIN = HIGH → High-side ONHIN = LOW, LIN = LOW → Low-side ONWith complementary PWM, this is impossible because the two signals are always opposite.So I am considering using:PWM → HIN (high-side)GPIO → LIN (low-side)I would like to know whether this method is valid, or if there is a better recommended way to drive the L6398 when only complementary PWM outputs are available.Please let me k
Hi,I made a custom bootloader to upload my application using the virtual com port by the USB interface.This works nicely, but my application also has a part in flash to store its configuration. When I flash my user program, I do not want to overwrite the configuration. Therefore, this is a special part in the flash memory.Is it possible in the STM32CubeIDE to generate a bin-file for this configuration to have a default configuration?Is it also possible to generate a bin-file using my bootloader, by reading the flash memory where the configuration starts? Because it would be great to backup a configuration.Greetings,ErX
P-NUCLEO-WB55Just a sanity check really.I'm using the DWT unit to time a chunk of code, am I right that each tick is at 1/32MHz?
Hi. I'm new to STM32, and I'm using STM32F103C8T6. I want to run Loopback mode to test CAN BUS without another board first. When I go to debug, I find it stuck at HAL_CAN_START. It returns error code 131072. Can you guys please help me find out the problem? I also give the main.c below. Thanks for reading./* USER CODE BEGIN Header *//********************************************************************************* @file : main.c* @brief : Main program body******************************************************************************* @attention** Copyright (c) 2026 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************//* USER CODE END Header *//* Includes -------------------------------------------------------------
Hallo,i try to run an B-G473E-ZEST1S with STEVAL-LVLP01A. I generate code with the default setting from MCSDK 6.4.1., STM32CubeMX 6.16.1, STM32 FW V1.6.1 (Recommended)I changed nothing on the board hardware or MCSDK settings, i choose the 2 boards and generate code, but after startup I end always in an "<signal handler called at 0xffffffe9>".The error occours after MX_NVIC_Init(); without MX_NVIC_Init(); the code is running, so it has something to do with the interrupts, but I don't get it.Does anyone know what could be the cause of this error? Has anyone successfully used this board with the MCSDK 6.4.1?Thank you!
Hello ST team,I am developing a camera application on STM32N6570-DK + IMX335.The entire capture/display pipeline follows the official DCMIPP_ContinuousMode example: IMX335 RAW10 → CSI → ISP → PixelPacker RGB565 → LTDC However, the LCD output shows a corrupted pattern like in the attached video:The image reacts to hand movement (so the sensor is streaming), but the content becomes color-shifted, diagonal, and distorted. The pattern matches the behavior when:RAW10 is fed directly into the PixelPacker interpreted as RGB565,meaning the ISP output is never routed to Pipe1. What currently works1. IMX335 is clearly streaming (image brightness changes when covering the lens).2. CSI + Pipe1 receive real frames.3. LTDC and framebuffer work correctly (solid-color test OK).4. All registers after DCMIPP init match the official demo.5. ISP_Init() and ISP_Start() both return OK (0).6. ISP_BackgroundProcess() also returns OK. What is incorrectAfter ISP_Start()
Hi, I have been trying to deploy the 66GYMAI1 Camera on the STM32 N657X0Q Nucleo board with the Load and Run mode. However, there is a problem that I could not solve, which is that the project can not jump from FSBL to APPLI. Because I am trying to jump from FSBL to APPLI to print something by USART, but it doesn't work.I would be grateful if someone could check it.
Hello. I got my hands on a wba55cg nucleo board and i'm currently studying about ble.I want to create a BLE Beacon that changes its adv_data whenever a user presses one of the button. From messing around using the p2p_server and beacon st examples, i implemented the following steps:1) Create a task that updates the adv_data and register it to the ble back ground sequencer. Added the following line in app_conf.h CFG_TASK_ADV_DATA_UPDATE, 2)Set my device as eddystone uuid. Again added the following line in app_conf.h #define CFG_BEACON_TYPE (CFG_EDDYSTONE_UID_BEACON_TYPE ) 3)On app_ble_init in app_ble.c registered a function to handle my task UTIL_SEQ_RegTask(1U << CFG_TASK_ADV_DATA_UPDATE, UTIL_SEQ_RFU,Ble_adv_data_update); 4) Implemented the adv_data_update_function inside app_ble.c static void Ble_adv_data_update(void) { const char str1[] = "ESS"; const char str2[] = "TODAY IS 11"; uint8_t adv_data[31]; uint8_t len =
I am using Nucleo L476RG for controlling BLDC motor. In the FOC control, i need to change the motor ID in the code. What is the procedure to change motor ID??
I am just curious about information in the flash. #ifndef DEVICE_VERSIONING_INFORMATION_H #define DEVICE_VERSIONING_INFORMATION_H typedef struct { uint32_t magic; // 0x46575652 = 'FWVR' uint8_t major; uint8_t minor; uint8_t patch; uint8_t build; } fw_version_t; __attribute__((used, section(".fw_version"))) const fw_version_t fw_version = { .magic = 0x46575652, .major = 1, .minor = 3, .patch = 2, .build = 7, }; #endif // DEVICE_VERSIONING_INFORMATION_H I wrote in the linked script file (.ld) some versioning information. I guess it is the best way to store the device versioning information because that way allows the swd to get directly from the flash the version, although, I can get it too by request and response by uart. However, why there is more data after the version information in the flash memory?Is this normal? Should the user defined constants in the flash be followed by other information?/* ******************************************************
Has anyone been able to get DAC2 Channel 1 on the NUCLEO-H7A3ZI-Q board to work at all? For anything? With DMA?
Hello Expert, Could you please provide guidance on the issue below? We are using the following setup:- MCU: STM32G0B1CCTx- Software: X-CUBE-TCPP 4.2.0 with USBPD Application 4.2.0 Dual Role- Board Part: TCPP0203 v1.2.3 We are developing a USB PD board.When we plug in an Android smartphone (USB Type-C port), the phone does not detect the connection.Attached is the log showing three plug-in/plug-out attempts.(we plug in and out 3 times)From the log, it appears that after attachment, the connection detaches immediately, then the roles switch, followed by another detachment.We have already tried increasing the CAD source/sink toggle time from 100 ms to 144 ms, but the issue persists.Could you advise on possible causes or solutions? Thanks. DEBUG 86569 0 -- BSP_USBPD_PWR_SetRole : SNK -- 96DEBUG 86609 0 -- BSP_USBPD_PWR_SetRole : SRC -- 97DEBUG 86653 0 -- BSP_USBPD_PWR_SetRole : SNK -- 98DEBUG 86693 0 -- BSP_USBPD_PWR_SetRole : SRC -- 99DEBUG 86705 0 -- BSP_USBPD_P
Hello All,We are developing 2 MCU (STM32U5 and STM32N6) based solution which has a Wi-Fi module. There is a need that should allow either STM32U5 or STM32N6 to communicate with ST67W611M1A6BTR Wi-Fi module at any given time. The FW is under our control, and we know that at any given time only one MCU will interact with Wi-Fi module. Do I need to use a multiplexer to decide which MCU to communicate or is it possible with the help of FW. Please suggest what needs to be done on schematic and FW. Regards,Sakshi
the STM32L431 can trigger per 0.102S by WDI, but WDO always have a reset signal, why ?
Hi everyone,I am working on a project with the NUCLEO-H7S3L8 and trying to read 2 ADCs simultaneously in Continuous Conversion mode using HPDMA.The Goal:ADC1 & ADC2: Reading 7 channels each (14 channels total).Mode: Continuous Conversion, Circular Mode.Transfer: HPDMA to SRAM (AHB SRAM).The Problem: I am receiving data, but the values are extremely unstable/fluctuating.When running a smaller example from a ST-Employee, values were stable (around 400).With the full 7-channel scan, the data fluctuates significantly, at a level where data should be wrong.Can someone take a look at it? They both use the same bootloader. I honestly cant see any issues with my custom config.Thanks in advance. This is also my linker if relevant:/* ****************************************************************************** ** ** @file : LinkerScript.ld ** ** @author : STM32CubeIDE ** ** Abstract : Linker script for STM32H7Sxx Device ** 128KBytes FLASH ** 456KBytes RAM ** ** Set heap size, sta
I have a new STM32N6570-DK MCU, I am running a simple program configuring ADC1 with the help of STMcubeIDE, selecting application mode, in secure mode, I have connected one sensor who is biased at 1.5V to A2 of MCU as well as ground of sensor and MCU are connected, code has been generated with some basic settings, It is not getting Debug properly, sometimes code is crashing before entering in main, sometimes board is not responding at all, before that I tried blink LED that worked Kindly tell me the proper steps to make this code run Is there any proper step to initialize the MCU when using for first time? Is application mode in secure version is okay for data extraction from analog sensors with the help of ADC I am attaching the related files, kindly reply
hello:@mƎALLEm I'm currently working with the STM32U585 and ran into a problem abort CAN auto Retransmission.Context:There are three devices on the CAN bus: stm32u5, A and Bstm32u5 enable auto Retransmissionstm32u5 need to keep sending them messages, regardless of whether they are connected or notdevice A and device B have hardware message filtering, So if A or B receives a message that is not intended for it, no ack will be sent(Is this correct?) I want to know:If A is online and B is offline, how many times will the message sent to B be resentIf it will be resent many times or never stops, how do I delete the failed resend messages after tx fifo is full
Hello, We are using the RTC wakeup timer and I have noticed that sometimes the WUTIE and WUTE bits are not being set. We are using HAL_RTCEx_SetWakeUpTimer_IT() HAL function to enable the timer. In stepping through the HAL code, it sets the RTC_CR_WUTIE and RTC_CR_WUTE bits but does not check they are actually set, so I assume it is expected to set the bits. I have read through the reference manual (RM0456) and existing errata. There is no existing errata w.r.t the RTC unit that applies to this situation. Any insight would be appreciated. Thanks, Aidan
I am using LPTIM for pulse counting in ultra low power (stop 2) mode for STM32wl55jc. Now, the problem is on the pin if I connect any pull up/ pull down with 10k-50k range, it draws significant amount of current. Can anyone please suggest a circuit to use for the pin input such that power consumption stays minimal in stop 2 mode? Should I use pull up with higher values? What about EMI/EMC issues?
Hi experts:I'm working on STM32U575 evk, using ADC1 including two channels enabe interrupt, attached file is my test project, only one interrupt in the callback function, I don't know why, if I changed the end of conversion selection to end of sequence of conversion, no interrupt triggered, please help to check if anything missing in my project, thanks.Bill
I have a project that I've been working on for some time, but I stopped using it for a month and when I turn it on, the display only shows pixels of various colors, and I can't load the gfx onto the board. Everything was working fine before.If I start a new project, I can load the image.What could it be?
Pls cross TI part number TMP75AIDGKR (Temperature Sensor With I2C and SMBus Interface) Previously there's a Cross Reference tool in ST website but it's gone. I use it regularly. I hope it can be reinstated.
Hi there!I start to work with this sensor and i want use this functionHAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,uint16_t MemAddSize, uint8_t *pData, uint16_t Size)so the pointer address register of the sensor is 8 bit but the data are 16bit is correct if i do that example: data[0] = MSB; data[1]=LSB; HAL_I2C_Mem_Write_IT(&hi2c1, INA226_Addr , 0x00, I2C_MEMADD_SIZE_8BIT, data, 2); and i do the same when i want read data from register.Sorry if i ask a silly question thank you Sergio
I have the NUCLEO-H753ZI example running on my board. All works fine without the security features. When I enable both the SFU_MPU_PROTECT_ENABLE and SFU_IWDG_PROTECT_ENABLE. I keep having a watchdog when it tries to execute the firmware. I commented the #define SFU_IWDG_PROTECT_ENABLE and enable the SFU_VERBOSE_DEBUG_MODE. It gets stuck at verifying the user FW as shown below.= [SBOOT] SECURE ENGINE INITIALIZATION SUCCESSFUL= [SBOOT] STATE: CHECK STATUS ON RESETINFO: A Reboot has been triggered by a Hardware reset!= [SBOOT] STATE: CHECK NEW FIRMWARE TO DOWNLOAD= [SBOOT] STATE: CHECK USER FW STATUSA FW is detected in the slot SLOT_ACTIVE_1= [SBOOT] STATE: VERIFY USER FW SIGNATUREWhen I breakpoint I can see that it is stuck at this as USB stops running after the first SFU_LL_SECU_SetProtectionMPU call which is the SFU_INITIAL_CONFIGURATION.TRACE(" @%d:%x size:%x sub:%x perm:%x exec:%x\r\n",MPU_InitStruct.Number, MPU_InitStruct.BaseAddress, MPU_InitStr
I'm using the STM32H747 DCMI peripheral to capture video from an OV5640 camera, and I've encountered a confusing situation regarding synchronization signal polarity.Development EnvironmentBoard: STM32H747I-DISCOCamera Module: B-CAMS-OMV (OV5640)Firmware: Official example projectSTM32CubeH7/Projects/STM32H747I-DISCO/Examples/DCMI/DCMI_CaptureMode/CM7/Src/main.cOV5640 ConfigurationIn the OV5640 register 0x4740 (POLARITY CTRL00), I configure:{OV5640_POLARITY_CTRL, 0x22}According to the datasheet, this means:Bit[5] = 1 → PCLK polarity: Active highBit[1] = 1 → HREF polarity: Active highBit[0] = 0 → VSYNC polarity: Active lowSo the camera outputs:HREF high during valid line dataVSYNC low during valid frame dataPCLK rising edge for pixel samplingSTM32 DCMI ConfigurationIn the STM32H747 DCMI_CR register, I configure:DCMI->CR |= (1 << 7) | (1 << 6); // VSPOL = 1, HSPOL = 1According to the STM32 reference manual:VSPOL = 1 → VSYNC high = invalid f
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.