Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I was wondering what is that. I created a custom bootloader firmware and application firmware. But once I successfully uploaded. When I send application firmware resquest I do not receive application firmware responses. Why is that? what is that? do you recognize that? The AA 01 00 00 BB is the application firmware request frame. 0xAA is the begining 0x01 is the length 0x00 is the frame request ID 0x00 is the checksum 0xBB is the end of the frame Thanks for all.
Hi everyone,I am working on a project using the STM32H753ZI Nucleo-144 board. My goal is to save data to an external USB thumb drive via the CN13 (USB OTG FS) port.My Environment:RTOS Stack: ThreadX, NetXDuo (Ethernet is working), USBX (Host/Storage Class), and FileX.Tools: STM32CubeMX v6.12/6.17 and IAR Embedded Workbench.Clocking: Using HSI48 for USB, stabilized by the CRS (Source: LSE).Hardware Configuration:VBUS: Manually controlled via PD10 (STMPS2141). I have confirmed with a multimeter that 5V is present on the port when the software runs.VBUS Sensing: Disabled in CubeMX (since I am driving power manually).USB_OTG_FS Settings:Mode: Host_Only.Speed: Full Speed (12 MBit/s).DMA: Disabled.Interrupts: USB OTG FS global interrupt enabled (Priority 15).The Issue: Despite the drive having power, the USBX stack does not seem to trigger the device insertion callback. I suspect the issue lies in the registration of the Host Controller Driver (HCD) or the link between the HAL interrup
I'm working with an STM32U3C5RIT6 using the HSP to do some FFT-based audio DSP with the HSP Engine middleware. I've got it working correctly using direct mode and I'm trying to squeeze out a bit more performance using process lists but for some reason the RFFT output isn't the same when used in a process list.Here's the code I use for accelerator / direct mode which works correctly:HSP_ACC_VectMul_f32(&hmw, FFT_Buffer, Window, FFT_Buffer, HSP_BLKSZ); HSP_ACC_Rfft_f32(&hmw, FFT_Buffer, HSP_LOG2NBP_512, 0U, 1U, HSP_RFFT_TYPE_2);I then create a process list using the SEQ versions of the same operations:HSP_SEQ_StartRecordPL(&hmw, PROC_IN); HSP_SEQ_VectMul_f32(&hmw, FFT_Buffer, Window, FFT_Buffer, HSP_BLKSZ, HSP_SEQ_IOTYPE_DEFAULT); HSP_SEQ_Rfft_f32(&hmw, FFT_Buffer, HSP_LOG2NBP_512, 0U, 1U, HSP_RFFT_TYPE_2, HSP_SEQ_IOTYPE_DEFAULT); HSP_SEQ_StopRecordPL(&hmw); --snip-- HSP_SEQ_RunTask(&hmw, PROC_IN, PRC_TIMEOUT);and the results are not the same. If I delete th
Hi Everyone,We are developing a Sub-GHz/LoRa device based on STM32WLE5CCU6 and have encountered an issue relatedto the Sub-GHz Radio BUSY state. We would like to ask for possible root causes and the recommendedrecovery procedure.The observed behavior is as follows:1. After MCU peripheral initialization, we call MX_SubGHz_Phy_Init() and then Radio.Init() /Radio.Sleep().2. We then try to execute HAL_SUBGHZ_ExecGetCmd(&hsubghz, RADIO_GET_ERROR, ...).3. The command keeps returning HAL_ERROR, and HAL_SUBGHZ_GetError(&hsubghz) returns 0x00000002, whichcorresponds to HAL_SUBGHZ_ERROR_RF_BUSY.4. We poll this command once per second for 10 seconds, and all attempts fail with the same error.5. We also checked the PWR flags before. PWR_FLAG_RFBUSYS remains active, which indicates that thecurrent RF BUSY signal stays high.6. PWR_FLAG_WRFBUSY can be cleared, but RFBUSYS remains high. Therefore, this does not look like apending wakeup/event flag issue, but rather the actual RF BUSY hardware
Interesting issue I ran into with my STM32F303CBT6. Using an STLINK to try and connect to it and wasn't coming right, probed the voltage on PA14 out of desperation and it worked. Intermittently but it workedStarted testing if it was perhaps acting as a pull down and soldered in some resistors to ground to test. I test 100k, 820k, 1M and 10M. None of which workedI then tested capacitors 3pF up too 22pF and tried combining them with the above resistors. All of which didn't helpI then added 100nF caps between all Vdd and Vss connections as close as I could get to the MCU, as well as between NRST and GND. Again none of which worked. (my boot0 is grounded through a 10k too) Any ideas of what could possibly have gone wrong here? Such a strange thing to me, that my multimeter was making it work Intermittently.
Dear ST Technical Support Team,I am writing to request technical assistance regarding a recurring hardware failure with the STM32H743IIT6 MCU on my custom-designed PCB.Problem Description:After initial assembly, the MCU is correctly recognized by STM32CubeProgrammer and STM32CubeIDE via the ST-LINK (Serial Wire mode). I can successfully flash the firmware and debug the device for a limited number of cycles (typically 2 to 5 times). However, the MCU eventually enters a state where:It is no longer recognized by any programming tool ("No STM32 target found").The chip begins to draw excessive current (overheating rapidly).The hardware suffers permanent damage (internal short-circuit).Firmware Configuration:Debug Hardware: Serial Wire (SWD).Timebase Source: SysTick.Clock Configuration: Configured via STM32CubeIDE (no errors reported in the clock tree).Operating Voltage: 3.3V stable.Technical Concerns:I have verified the schematic, but the repeated physical failure suggests an internal latch
Hello Everyone,I am working on a custom USB bootloader project on STM32H743 using:USB Host MSCFATFSExternal QSPI FlashInternal Flash updateIAR WorkbenchHAL driversMy bootloader detects USB pendrive successfully and I can see:Appli_state == APPLICATION_READYf_mount() returns FR_OKBut the system gets stuck / deadlocked when calling:DIR dir; if(f_opendir(&dir, "0:/") != FR_OK) { return UPDATE_NONE; }The MCU hangs inside f_opendir() and never returns.Current flow:MX_USB_HOST_Init(); while(1) { MX_USB_HOST_Process(); if(Appli_state == APPLICATION_READY) { HAL_Delay(500); update_flags = ver_check(); break; } }Inside ver_check():if(f_mount(&USB_FatFs, USBHPath, 0) != FR_OK) { return UPDATE_NONE; } if(f_opendir(&dir, USBHPath) != FR_OK) { return UPDATE_NONE; }Additional Information:USB Host MSC works until f_opendir()No FreeRTOS usedUSB drive detected properlyf_mount() succeedsDeadlock occurs specifically at f_opendir()Tried both "0:/" and USBHPathTried adding delay
Hi I am looking into using STM32F446RCTx for my design, which includes 2 x USB FS 2.0 (1 x Host + 1 x Device). Hence need to provide an external HSE. I want to use an Oscillator, meaning I setup the HSE as "Bypass Clock Source" .With this setup I planned to use the pin 6 (PH1_OSC_OUT) as a GPIO for other functionalities. But the STM32CubeMX setting does not let me do this.I see that this pin will be (OSC_OUT) High Impedance as per RM0390 - Page 120. Am I right in say that I MUST leave this pin NC and cannot free up to use as GPIO?Thanks.
Hi All, For the project I am working on we are looking to standardize on the STM32H7A3 processor. I am current looking to setup a project in the ST Motor Control Workbench (v6.4.1) targeting the STM32H7A3.When selecting a board, there are only 2 H7 boards listed. Both boards contain processors that have a mix of M7 & M4 cores. The Workbench creates code for the M4 processor, whereas the STM32H7A3 has an M7 core.I have tried creating a custom board, but again the STM32H7A3 is not listed in the supported list of processors.Is there anyway to set up the ST Motor Control Workbench to generate code for the STM32H7A3?Or do I need to port code targeted at a different processor?If so, can someone suggest a supported processor that would be a good starting point for generating code that could be easily ported to the STM32H7A3?Does ST have documentation on how to generate code for a processor that is not directly supported by the ST Motor Control Workbench? Thanks for your time!&nb
Hello, We are facing an intermittent CAN-FD issue in the field and would appreciate guidance from the community. Our system has two devices on the bus (no other device on the bus) using a request–response architecture. The master sends a request every 30 ms and the slave responds. This setup is deployed in hundreds of units running continuously (24 hours). Out of these, around 3 to 5 units per day show acknowledgement errors, which we track through the CAN protocol error counters. The behaviour is unusual: • The issue appears randomly on any unit.• No bus-off condition is ever reported.• Despite no bus-off, communication between the two nodes temporarily stops.• Communication recovers automatically after a few seconds without any intervention. Initially, we suspected a physical wiring problem. We re-checked all connectors and even secured them with glue. The bus has 120-ohm termination at both ends. However, the issue still appears randomly. Below are the system details: Microcontrolle
I have a project where a STM32U575VGT must convert a SSI multiturn encoder value into a parallel single turn value for GPIO output. The SSI values are 3 bytes long, and it would be best if the CPU is only interrupted when the last 2 values differ. I have set up SPI2 to have GPDMA channels for TX and RX (although only RX is needed). DMA transfers work, but when I try to enable autonomous mode with LPTIM1 Channel 1 as a trigger, there are no interrupts for SPI2 or the DMA channels. How do I trigger the SPI read every ~1ms? Is this something only achievable with the LL libraries rather than HAL? Is it possible to interrupt the CPU only if the 3 bytes read from the SPI differ from the previous value?
System Setup Board: NUCLEO-G0B1RE (STM32G0B1RET6)CAN Transceiver: CAN-FD 4 Click (NCV7344) connected via level shifter (3.3V → 5V)FDCAN Pins: PC4 (TX), PC5 (RX) on FDCAN1Clock: HSI 16 MHz → PLL → 64 MHz FDCAN clock Second Node: Raspberry Pi 4 with MCP2517FD Click board (ATA6563 transceiver, 20 MHz crystal)RPi CAN Interface: can0 configured with bitrate 500000 dbitrate 2000000 fd on Project Context I'm building a BMS (Battery Management System) CAN-FD emulator. The STM32 reads values from a potentiometer via ADC and transmits telemetry frames (ID 0x100, 8 bytes) every 100ms. The Raspberry Pi is the receiver that should log these frames. Problem When both nodes are connected in FDCAN_MODE_NORMAL, the STM32 transmits frames (confirmed via serial debug prints and g_tx_count incrementing in the debugger), but nothing appears on candump can0 on the Raspberry Pi. The STM32 eventually enters BUS-OFF state. What I've Already
Hello,I would like to add Aliro compatibility to my access control device.My device uses the STM32WB55 MCU with an ST25R3911B NFC front-end.It seems that the X-Cube-Aliro package is designed to work with the new STM32WBA MCUs along with different NFC front-ends (such as ST25R200).As I understands it, I can implement the Aliro protocol on STM32WB55.1. Are there any such examples of adapting the X-Cube-Aliro package to work with such an MCU?2. Does using the X-Cube-Aliro package also require running a comm stack that the STM32WB55 doesn't support?3. Are there examples of implementing the Aliro protocol without using the X-Cube-Aliro package on STM32 devices?Thanks,Tal
I have a flexButton in a View, and I want to execute different functions depending on whether the button is PRESSED, RELEASED, or CANCEL.I know you can create interaction in TouchGFX Designer, but you can only call a virtual function on click. Is there a way to, for instance, enable the clickListener Mixin to read the event that has fired the callback from that specific button?I need to read this event within the view and relative to my button.Is there a way, or do I have to create a custom widget?
I am developing a multi-node system (16 nodes) based on the STM32G0C1MET6. During normal operation, all nodes communicate at 500k (Standard CAN). To perform a firmware update, the Master initiates the following transition sequence: Reconfiguration: The Master sends a global command. All nodes switch their FDCAN configuration to 250k (CAN FD) and enter Listen-Only Mode. Trigger: The Master then sends a specific SDO command to a single target node to trigger a jump to the System Bootloader (System Memory). Reflash: Once in Bootloader mode, the target node is expected to respond via FDCAN1 (as per AN2606/AN5405) to begin the reflash process. The Master repeats this node-by-node. The Issue: While most nodes perform the jump and reflash successfully, some specific units enter the bootloader (confirmed by status LEDs) but never respond to CAN messages. These units appear "deaf" to the Master's CAN FD frames at 250k. Environment: MCU: STM32G0C1MET6 Interface: FDCAN1 (Pins: PD0/PD1) Trans
Hi everyone,I designed a first custom PCB using the BlueNRG-2N as a coprocessor, and everything was working fine, I was able to control it with my main MCU over SPI without any issue.Recently, I made a new version of the board where I replaced the BlueNRG-2N with the BlueNRG-M2SP module. I flashed it with the DTM firmware (BLUENRG-M2SP_DTM_SPI.hex) because I want to use it as a coprocessor.I’m using exactly the same software as before for my main mcu (which should work), but now it doesn’t work at all : I don’t receive any data on the SPI MISO line from the BLE module.I’ve attached both the old (working) and new designs. Since the firmware works with the BlueNRG-2N, I assume the issue is hardware-related. What could be wrong in my new design? Or what changes are required for the software ? Also, I have a couple of additional questions:1- There are multiple DTM firmware versions available (e.g. BlueNRG-M2SA_M2SP_DTM_Stack_v2.1c, v2.1e, and several others in the BlueNRG-1_2 DK 3.2.3
I am using NUCLEO-STM32WBA25CE1. I created STM32CubeMX project for this board. I activated RF, WPAN, RTC. I configured a wakeup every 10 seconds and set up a task for the sequencer to toggle the LED. The LED pin is correctly configured. I can toggle the LED before the main loop starts. But in the task LED toggling is not working. How should i configure GPIO and anything else to get LED working?I am using STM32CubeMX 6.17.0 and STM32CubeIDE 2.1.1 versions.Moreover, I try to use USART1 or LPUART1 for debugging. Before the MCU goes into low power mode, i can output the message to the terminal. But after the low power mode it stops working.
Good day. I am using STM32WL31 on a custom board.DeepStop mode entry works correctly, but wakeup from PA0 (WakeUp pin) is not reliable or does not work. I used the example code in project:STM32Cube_FW_WL3_V1.3.1\Projects\NUCLEO-WL33CC\Examples\PWR\PWR_DEEPSTOPThe same code I use in my custom board works correctly on NUCLEO-WL33CC2 board (I have tested succefull the code on the NUCLEO-WL33CC2). In my opinion the difference from my custom bord + my code and the NUCLEO-WL33CC2 is the microcontroller; the NUCLEO-WL33CC2 mount the STM32WL33, my board mount the STM32WL31. Code sequence foe enter in deep stop:1. Enable wakeup pin (PA0, PA11 used as wakeup pins are connected by a button to GND). Internal pull-up enabled using LL_PWR_EnableGPIOPullUp on PA0 e PA112. Clear WUF flags3. Enter DeepStop When I press PA0 or PA11 buttons the MCU does not resume execution OR behaves inconsistently, it look like as the micro is in an undefined state.After programmed the micro it seam
Good day,I have a simple custom board with a STM32WL31 that needs to cyclically enter DEEPSTOP mode and then wake by means of RTC internal wakeup. It seems the device enters DEEPSTOP, but does not wake from it. Basic setup:Clocked from HSI, RTC clocked from LSE with 32kHz xtal.SMPS not implemented.Basic project generated with STM32CubeMX 6.16.0 with MCU Package for STM32WL3 Series 1.3.0 installed.IWDT activeMR_SUBG radio not yet implemented I can confirm RTC runs, RTC interrupt occurs every 1s, and HAL_PWR_EnterSLEEPMode() behaves correctly. However, when I enter DEEPSTOP with the sequence below, then the code never gets to HAL_ResumeTick() (reset after a few seconds by IWDT): PWR_DEEPSTOPTypeDef sConfigDEEPSTOP; sConfigDEEPSTOP.deepStopMode = PWR_DEEPSTOP_WITH_SLOW_CLOCK_ON; HAL_PWR_ConfigDEEPSTOP(&sConfigDEEPSTOP); HAL_SuspendTick(); HAL_PWR_EnterDEEPSTOPMode(); HAL_ResumeTick(); Below is a reg dump of possible relevant registers just before calling&
Hello all! I need some rubber ducking help here. I have got hold of a B-U585I-IOT02A dev board, where I'm trying to get learn and get to know the STM32 family. I have got a lot of things working, but the ADC1 is giving me a hard time: Here is my MX config: IN1 enabled, and expecting the data to be stored in the DR register. PC0 is selected as ADC1_IN1: Global interrupts are enabled: So far, so good( I think ). my application code: /* Running in my main while(1) loop */ // Other stuff before here if (StartConv) { if (HAL_ADC_Start_IT(&hadc1) != HAL_OK) { /* Start Conversation Error */ Error_Handler(); } StartConv = 0; } HAL_Delay(10); And when above is executed, I can see that I'm getting a interrupt and call to my own ConversionCallback function: void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle) { /* Get the converted value of regular channel */ adc_raw = HAL_ADC_GetValue(AdcHandle); printf("ADC Raw Value: %lu\r\n", adc_raw); // Retrigger convertion
Hi everyone,I am working on STM32H723 (H7 series) using HAL, and I am facing an issue with ADC1 + ADC2 dual regular simultaneous mode.Configuration DetailsMCU: STM32H723HAL based projectADC1 = MasterADC2 = SlaveMode: ADC_DUALMODE_REGSIMULTDualModeData: ADC_DUALMODEDATAFORMAT_32_10_BITSResolution: 12-bitScan mode: DisabledContinuous mode: DisabledTrigger source: TIM2_TRGO (rising edge)DMA: Circular modeADC3 runs independently (also TIM2 triggered) and works perfectlyDual mode started using:HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)g_adc12_packed_buffer, TP_DMA_BUFFER_SIZE); Buffer unpacking: uint32_t packed = g_adc12_packed_buffer[i]; uint16_t adc1_raw = packed & 0xFFFF; uint16_t adc2_raw = packed >> 16; Observed BehaviourWhen I apply voltage to ADC1 input:Both ADC1 and ADC2 values changeBoth show identical values (mirrored)When I apply voltage to ADC2 input:No change in readingsADC2 does not respondWhen inputs are floating (level shifted mid-sca
Hello I've been trying to recreate the DCMIPP_SnapshotDecimation example with STM32CubeIDE, I have been running into several issues. I have solved most of them, I am encountering a memory error while debugging my code. I was able to flash and debug the original example successfully on the STM32N6570-DK. However, when I try to read a value from the AXISRAM address (0x34200000), it fails: (address does not exist and unable to reconnect to target device). AXISRAM3 which it should be the address 0x3420000 is activated and initialized in the main. Initialization of the signal processor and starting the DCMIPP pipeline was passed without any problem:if( ISP_Init(&hcamera_isp, &hdcmipp, 0, &appliHelpers, ISP_IQParamCacheInit[0] ) != ISP_OK ) { Error_Handler(); } if( HAL_DCMIPP_CSI_PIPE_Start(&hdcmipp, DCMIPP_PIPE1, DCMIPP_VIRTUAL_CHANNEL0, BUFFER_ADDRESS, DCMIPP_MODE_CONTINUOUS ) != HAL_OK ) { Error_Handler(); }But, trying to access the buffer addr
Hello,I'm working on a projet where I need to drive 4 (or 2 x 4) GPIO at the same time with high speed on the STM32U545RE.I'm trying to use the DualQuad SPI (with OSPI) but I can't have the clock working...At first I tried to write a code with a send only type of frame (with no instruction and no address) but nothing was working.Now I tried to use the example code from a STM32L5 but nothing seem to be working either. Can you if someone already tried to do that ? BR,Loïc
Hi all,I'm looking for a free library or source C code to develop and application for DALI master manager with STM32F7 board.I didn't find anything ....Any suggestion?Many thanksFabio
I use STM32U5A9J-DK to plot a graph containing a series of V-I data. I have tried static graph widget and was succeed, but it somewhere doesn't meet my need: the label can only show int, if x data range is -0.6~0.6V, I can only scale them to -600~600, in mV unit, (but I want to show unit in V); besides, my data sequences may have the same x value with different y, e.g. (-0.6,2) (-0.2,5) (0,3) (-0.2,2) (-0.6,1), data like this can't be plotted on static graph, it only accepts monotonous x value. I need my graph showing the original data points (need no scaling) and allowing same x value with different y values, Any other way I can build a graph fitting my requirement? I use touchgfx 4.26.1, seems no canvas function ?!I mean like drawing the plot below, with a lots of on the same graph, and allow me to active/inactive the plot, each plot is a regression
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.