Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello Team,Believing STM32H5 series is most secure Devices , just doing comparision between H563 and H573 security aspects.Just to know PSA Certified Level 3 and SESIP will also applied to H563 device as well ( being into same Family ) ? We are more concern about firmware protection against Physical and side channel attacks.
Hello everyone,I am working on my bachelor thesis about sensorless Field-Oriented Control (FOC) for a three-phase BLDC motor.At the moment, I have a NUCLEO-F303RE board, a small BLDC motor, an ESC, and a power supply. I have already generated and measured PWM/SPWM signals from TIM1 channels on the STM32, but I understand that using an ESC with a 50 Hz throttle signal is not the same as directly generating three-phase PWM for FOC.For this reason, I am considering using an X-NUCLEO-IHM07M1 motor driver expansion board with my NUCLEO-F303RE board.My question is:Can the NUCLEO-F303RE + X-NUCLEO-IHM07M1 combination be used for a sensorless FOC thesis project? More specifically, can this board act as the required three-phase motor driver/inverter stage so that I can implement or test sensorless FOC with STM32 Motor Control SDK or my own code?I would also like to know whether this combination is supported by STM32 Motor Control Workbench / MCSDK, or whether I should use another Nucleo board o
Hi everybody.I'm currently trying to use the N6 Nucleo for a personal application but am having trouble starting the debugger after initially successes. I am using the Nx_TCP_Echo_Server example, and after a couple of successful iterations my debugger stopped working entirely.I am using the VSCode extension. When I start my debug session with ST-Link GDB server it will connect to the debugger, but an error will follow in the terminal as shown ("target not responding"). After disconnecting and re-initializing the debugger I will get the following error ("error in intializing... please check power"). I get the same issues after power-cycling the board. LED 2 (Red) will then remain off until I power cycle the board after the first error.Previous issues led me to believe I re-wrote the SWD lines so I connected BOOT0 to 3.3V and used the CubeProgrammer to perform a chip erase. Specifically for the external memory since to my knowledge the N6 doesn't maintain internal memory. After the chip
Hi everyone, I’d like to ask for your expertise. I’m working with a custom board based on the STM32H755ZIT, configured in LDO mode. My issue is that when I connect the board to my PC via USB to use the Virtual COM Port (VCP), the computer does not detect the device. I haven’t encountered this problem on other boards I’ve used, such as those with STM32L4 or STM32WB, where USB VCP works as expected. Is there a particular difference in the USB VCP implementation between the STM32H7 series and the STM32L4/WB series that I should be aware of? Here is the noteworthy configuration of my project in CubeMX RCC, HSE=Crystal/Ceramic Resonator SupplySource = PWR_LDO_Supply (This is in line with my hardware design) Power Regulator Voltage Scale = Scale 2 USB_OTG_FS,Mode=Device_Only USB_DEVICE_M7, Class For FS IP = Communication Device Class (Virtual Port Com) For the code: usbd_cdc_if.c /* USER CODE BEGIN PRIVATE_VARIABLES */ USBD_CDC_LineCodingTypeDef LineCoding = { 115200, /* baud
Hello,I am working with the B-L4S5I-IOT-01A board (MCU: STM32L4S5VIT6) and attempting to load a .hex file using the UART bootloader via USART1 (PB6, PB7).Since this USART is connected by default to the ST-LINK interface, I removed the necessary resistors (R42, R43) to isolate the ST-LINK connection. I then provided direct RX/TX connections from the MCU side through the corresponding pads.However, I am unable to detect the MCU UART in the STM32 Programmer IDE. The device does not appear or respond during the bootloader communication attempt.Could you please guide me on the correct procedure to:Properly enable UART boot mode on this boardEnsure USART1 is usable for bootloader communicationIdentify any additional hardware or configuration requirementsAny reference or clarification would be greatly appreciated.Thank you.
Hello everyone,this is my first time building an STM32 Based Board myself.I am trying to talk to the Chip Using a CP2102 UART Bridge connected to PA9 & 10.For Reset and Boot 0 ive connected Reset (NRST) to RTS of the UART Bridge and Boot0 to its GPIO0 Pin and configured that Pin in the Bridge. I have however also tried just pulling Boot0 High and Jumping NRST to GND and then immediately connecting using STM32CubeProgrammer.Using an Oscilloscope ive found that the Magic Packet is sent to the STM32 (0x7F, 115200 Baud, Even Parity, 1 Stop) but there is no response (Tx of the STM32 stays high all the Time).PB15 is left floating, I am using the VIT6 Variant (The LQFP100 Package), its a Brand new Chip, is there any configuration required before this works?
Dear Sir or Madam, We would like to use NUCLEO-WL33CC2 to verify DMR RSSI reliable detection(compulsory requirement) and demodulation(optional requirement). We only need rx chain for scanning purpose. As per ETSI TS 102 361-1, DMR TDMA frame has sync word in the middle of 30ms frame and does not have preamble. And in Chapter 10.2.2.2 (Physical layer), an RRC filter is designed for 4FSK. It seems these settings may not have corresponding option in STMWiseCube, so that we would like double check with you if there is any better setting for detect 30ms packet RSSI at least. We do know the sync word content for DMR, which is 48 bit long. The modulation is 4FSK, nomial channel width is 12.5kHz, and data rate is 9.6kbps. And deviation is +/-0.648kHz and +/- 1.944kHz for 4FSK, shall we use 1.944kHz in the setting of deviation in STMWiseCube? Our requirement is RSSI at room temperature for this TDMA frame detection in RF conducted test mode and without
When using a Zephyr RTOS host with PAwR synchronization response enabled, the STM32WB09 controller (observer role) reports a legacy LE Periodic Advertising Report (subevent 0x0F) while syncing to a PAwR broadcaster.The broadcaster is implemented on EFR32BG42 (SiLabs). Zephyr host reports:[00:00:02.987,453] <dbg> bt_hci_core: hci_event: event 0x3e[00:00:02.987,480] <dbg> bt_hci_core: hci_le_meta_event: subevent 0x0f[00:00:02.987,497] <err> bt_scan: The controller shall raise the latest unmasked version of the eventWhich corresponds to:LE Meta EventLE Periodic Advertising Report (legacy) The Zephyr BLE controller layer is based on stm32wb0x_ble_stack_controller_only.aDoes stm32wb0x_ble_stack_controller_only.a support:BLE 5.4 PAwR (Periodic Advertising with Responses) – Observer role?Periodic Advertising Report v2 (with subevent context)?
Hello, in an earlier post it was suggested to reset the FDCAN for full error recovery using RCC_APBRSTR1.FDCANRST Bit This bit seems to be global for all FDCAN instances. Is it correct that full error recovery in one FDCAN instance is not possible without interrupting traffic in the other instance - as all (or both in case of stm32g0b1) instances have to be reset? t
Hello all, Split from this thread: I'm using an STM32U5G9 and I need to read files from a USB stick. I don't want to use ThreadX because I have to keep this application small. How can I achieve this if UsbX and FileX are supposed to be used only with ThreadX and not in standalone mode? Thanks for your help. Best regards, Julien
Dear community,I am looking for help to have TFM ported for nucleo_u385rg_q so that I can build the tfm secure and non secure images and do a secure boot on this board. The closest board is b_u585i_iot02a which is a stm32u5 variant. But there are many low level code required for this in trusted-firmware-m repo. Is there a work done by someone that I can use for my work? Any pointers as to how to accomplish this. Thanks in advance for your support.
Hi,How do I serve request Get Source Capabilities Extended? I'm using STM32G0B1 with a port configured as SRC.When a SINK sends the Get Source Capabilities Extended the STM PD library responds with 'Not Supported' and my code is not aware that this even did happen. Is there way to intercept and serve this request? At least the callback structure does not appear to have direct support for this. USBPD_DPM_ExtendedMessageReceived is never called. /* CAD callback definition */ static const USBPD_PE_Callbacks dpmCallbacks = { USBPD_DPM_SetupNewPower, USBPD_DPM_HardReset, USBPD_DPM_EvaluatePowerRoleSwap, USBPD_DPM_Notification, USBPD_DPM_ExtendedMessageReceived, USBPD_DPM_GetDataInfo, USBPD_DPM_SetDataInfo, USBPD_DPM_EvaluateRequest, USBPD_DPM_SNK_EvaluateCapabilities, USBPD_DPM_PowerRoleSwap, USBPD_PE_TaskWakeUp, #if defined(_VCONN_SUPPORT) USBPD_DPM_EvaluateVconnSwap, USBPD_DPM_PE_VconnPwr, #else NULL, NULL, #endif /* _VCONN_SUPPORT */ USBPD_DPM_EnterErrorR
Hello all,There might be a possible bug in HAL_UART_DeInit(). When calling HAL_UART_DeInit() when it is already initialized could lead to CPU starvation. Assume that an interrupt fires after calling __HAL_UART_DISABLE(huart); and before huart->Instance->CR1 = 0x0U; the interrupt is going to keep firing provided that some conditions are met. I was able to run a debug session and saw that only the interrupt was firing.From the ref. manual -> Note: If TE bit is reset and no transmission is on going, the TC bit is immediately set.This means that the TC bit is always going to be set and the interrupt is constantly going to fire regardless of clearing the TCF in ICR. The reference manual also mentions to ensure TC bit is being set before calling __HAL_UART_DISABLE(huart).I am running into this issue when TE is reset and TXIE is set after calling __HAL_UART_DISABLE(huart). This happens extremely rarely but I am able to reproduc
Looking for something to try. I'm want to recover from a failed firmware update of an MLite-880 from Elecevolve after their their 1-click installer. Elecevolve suggested a manual install using the firmware binary and STM32CubeProgrammer. I can put the device in its "DFU FW update mode" and connect to the device from the STM32CubeProgrammer using USB. After connect, the log shows:08:45:07 : STM32CubeProgrammer API v2.22.0 | Windows-64Bits08:45:35 : Disconnected from device.08:46:01 : USB speed : Full Speed (12MBit/s)08:46:01 : Manuf. ID : MALAHITEAM08:46:01 : Product ID : Malahit-Lite DFU08:46:01 : SN : 305B376E313308:46:01 : DFU protocol: 1.108:46:01 : Board : --08:46:01 : IAP08:46:01 : UPLOADING ...08:46:01 : Size : 1024 Bytes08:46:01 : Address : 0x800000008:46:01 : Read progress:08:46:01 : Data read successfully08:46:01 : Time elapsed during the read operation is: 00:00:00.053When I click Start Programming, literally nothing happens except the progress bar at the bottom previous
is there a template for developing a custom bootloader that uses the lpuart?Has the application firmware the ability to trigger a bootloader state so I can upload the new application firmware into stm32g051g8?What are the changes that I have to do on the application firmware?Thank you all.
Hi everybody.I have a problem with my Arduino GIGA R1 + Giga Display shield, configured by CubeMX. I configured the external RAM and flash and it works fine. I also successfully configured TouchGFX.My only remaining problem is the startup of the board. When I power it up, it doesn't boot. Even the ST-Link can't see the MCU. I must start it with BOOT_O at 0 (there is a button on the board) and it enter in bootloader mode and the DFU connection works. I can then connect the programmer, flash the Arduino firmware and after that, I can program/debug via ST-Link, I can reset it it still working. I verified the BOOT_ADDRESS it's on the good memory and not changed by Arduino firmware. As it work under reset, I presume memories are well configured.I can't find what could prevent the core to start. Both core start well on reset (verified with onboard LEDs) but nothing happen on power on. Does anyone have an idea of what could fail or give me some hints on what to look
Can anyone explain this footer note in the electirical characteristics sheet for the STM32F777xx STM32F778AxSTM32F779xx. on page 110.2. 216 MHz maximum frequency for 6 suffix version (200 MHz maximum frequency for 7 suffix version). I am using the STM32F779NI. Is the suffix 7 or 9? I dont see it specificed anywhere. Thanks!
Hello ST Community,I am working on the NUCLEO-N657X0-Q board with a TrustZone project configured in STM32CubeMX with three contexts: FSBL, AppSecure (AppS), and AppNonSecure (AppNS). The FSBL is working correctly and jumping to AppS successfully.I was having an issue with the SAU Configuration. As per the wiki article, "How to start with RIF on STM32N6 MCUs" https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_RIF_on_STM32N6_MCUsI configured the SAU region. I configured the FLEXRAM, AXISRAM1 and AXISRAM 2 in STM32Cube IDE. But it stays disabled when I tried to generate code. My partition_stm32n657xx.h file looks like :How to resolve this issue?
After porting the application "STM32Cube_FW_U5_V1.8.0\Projects\B-U585I-IOT02A\Applications\SBSFU" to our own board we have everything operational apart from the ability to invoke the local loader in production mode (RDP2).I have reverted to the original B-U585I-IOT02A board and project and have a similar issue so I am wondering if this is broken or we have misunderstood something. The loader can be invoked in TFM_DEV_MODE with RDP0 but not in production mode with RDP2. The SBSFU application runs fine.Changes from the default STM SBSFU project settings we used to test this on B-U585I-IOT02A1) In SBSFU_Boot project remove the TFM_DEV_MODE pre-processor symbol definition2) In boot_hal_cfg.h >> #define TFM_TAMPER_ENABLE NO_TAMPER3) In boot_hal_cfg.h >> #define #define TFM_OB_BOOT_LOCK 04) In flash_layout.h >> //#define MCUBOOT_PRIMARY_ONLY (definition commented out)5) In flash_layout.h >> #define MCUBOOT_APP_IMAGE_NUMBER 26) In hardening.sh
hello ST Community, Is it possible to change the RDP "Read Out Protection" level from level 1 to level 0 without erasing the flash data? I've currently been able to change the level from RDP level 1 to level 0 for Nucleo-H755ZI-Q, but changing the level causes a mass erase of the flash drive. Is it possible to avoid this? If so, is there a code example? Thanks for your support.
Hello,I am working on the boot process and security of the STM32H757.For my tests, I have placed the two boot addresses for the two cores (ADD0 and ADD1 for CM7 and CM4) in the internal flash memory, with an ISR vector at each boot address :ADD0: standard ISR vector calling the standard Reset_Handler, which in turn calls the main function g_pfnVectors: .word __initial_spTop /* Use internal RAM for stack for calling SystemInit. */ .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler ... and ADD1: virtually the same ISR vector but calling BootPin_Handler instead of Reset_Handlerg_bootPinVectors: .word __initial_spTop .word BootPin_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler ... Everything seems to be working properly, at least up until the security test.When RDP is set to level 0 or 1, everything is fine and
I’m working on STM32F405RGT6, receiving audio from ICS43432 (MSB First, 24bit on 32 bit frame).sing Circular DMA (double buffering) to read it in. After 3 days of debugging and millions of mem corruptions and stackoverflows later I finally managed to get the pipeline to work without MemCorruptions.Basically my implementation:I have a UItask, that handles button presses and changes the system states. The StartWriteAudioTask() starts the DMA and creates a .wav file. Also sets the systemState to STATE_RECORDING. DMA fills the buffer and gives semaphore to my MicTask, which basically does an endian conversion and writes a wav block. Just in case I also implemented a copy of the audiobuffer, because DMA might overwrite before I can manage to write it to a wav block. Using the debugger I see that my state machine logic and start/stop works fine, file initialization works as well and even the file appears and is playable. But the tim
The issue I am facing when using the STM32U585 microcontroller in the MATLAB and Simulink (M&S) Environment.1. The controller is the STM32U585Allx. Discovery kit. 2. We are working on a project in Simulink (Model-Based Design). As a first stage, we are sensing three-phase AC currents and a PWM generator as a part of our project. For this project the hardware is provided by STM32 U585-based Discovery kit. All hardware support packages have been installed in the M&S environment. We are setting up the hardware in STM32CubeMX, configuring ADC1 and Timer1. All the desired parameters are set and we are generating the code.ioc file. The ADC is set for injected signal inputs. TRG0 provides the trigger for the ADC1. The ADC1 block in Simulink is not getting linked with .ioc file generated in SubeMX. The error is: Index exceeds the number of array elements. So we cannot proceed further. We would like to get
Post Edited by ST moderator to apply source code formatting Hello, To need to disable external read/write access to flash in stm32c071 i have changed the RDP from level 0(0xAA) to level 1(0xBB) and was successful in doing so. But when I try to change from level 1 to level 0 i am unable to change it. code to change from level 1 to level 0. eFLASH_ErrorType_t FlashReadWriteEnable(void) { eFLASH_ErrorType_t err_code = e_SUCCESS; // Check if flash is busy err_code = CheckFlashBusy(); if(err_code == e_SUCCESS) { // Unlock flash err_code = flashUnlock(); if(err_code == e_FLASH_UNLOCKED) { // user options unlock err_code = flashOptUnlock(); if(err_code == e_FLASH_OPT_UNLOCKED) { FLASH->OPTR &= (~FLASH_OPTR_RDP_Msk); FLASH->OPTR |= (0xAA << FLASH_OPTR_RDP_Pos); FLASH->CR |= FLASH_CR_OPTSTRT; // Check if flash is busy err_code = CheckFlashBusy(); if(err_code == e_SUCCESS) { FLASH->CR |= FLASH_CR_OBL_LAUNCH; } } } } return err_code;
EDIT: Resolved! It looks like this was an issue with the pin reporting on our end. Hello, We would like to use MC workbench, however we want to move from ADC1/2 to ADC12 for the current sense, VBUS and temperature NTC. Is there a way to implement this alternate ADC configuration in MC workbench? If we need to manually change the FW, is there anything we need to watch out for?We are moving from the following dev kit setup to a custom PCBAAlgorithm: FOCType : MODULARControl BoardNUCLEO-G474REMcuSTM32G474REBridgeX-NUCLEO-IHM09M2Power BoardSTEVAL-IPM08B
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.