Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
The linkerscripts generated by the STM32CubeMX for STM32F767ZI appear to use the AXIM interface:/* Specify the memory areas */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 2048K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K }But the default boot vector is set to address 0x0020 0000 which is a ITCM address:# gdb console > monitor stm32f7x options_read 0 stm32f2x user_options 0xFFC, boot_add0 0x0080, boot_add1 0x0040boot_add0 0x0080 indicates ITCM.When I move the boot vector by 128K, I have to set boot_add0 to 0x0088 (8*16K=128K) and set FLASH ORIGIN in above linker script to 0x08020000. Otherwise it will not work. That is a bit confusing.Is the MCU really booting from ITCM?The binary code is not explicitly position-independent. I contains absolute jumps to addresses in the AXIM space because that is what LMA and VMA are configured to in the default linker scripts. Does my application only work by accident?Should LMA and VMA in the linker script be separated, i.e. V
Hi,I come to you about the key provisioning process for the iROT in the STM32H5.Using TrustedPackageCreator, the keys provided in the file STiROT_Config.xml for the Secure Boot (field <Authentication key>) are both the private and public keys of the .pem file. However, only the public key is needed, and will be embedded in the device. This method of provisioning is limiting for us for two reasons:- on the one hand, it doesn't allow to subcontract the provisioning task, as we don't want to give the private key to the subcontractor- secondly, the private key may be generated by an HSM and cannot leave the vault. So, is there a way to provision only the public key at this stage? Best regards,Christine
Hello community,I am using STM32G474 for my FOC application and I am a bit confused about the ADC modes.Since the G4 series has a wide range of ADC modes, which ADC mode is best for 2 or 3 phase current sensing in FOC applications?Is the "dual injected simultaneous mode only" suitable for this purpose?I'm using the ADC1_IN2, ADC2_IN1 and ADC3_IN5 channels to sense the current.If I want to sense all 3 phases current, what should I do? "Independent mode+injected conversion" combination enough for it?I can use a FOC library or MCSDK, but I need to learn the logic behind this task.Thanks for any help. Best Regards
Hello,I'm here on H75x. I'm looking for portable way to do a timeout check via timer.Here, I want a timeout IRQ if UART receive DMA hangs up.First I setup a OnePulse timer in Cube. It generates the following code:if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); } if (HAL_TIM_OnePulse_Init(&htim6, TIM_OPMODE_SINGLE) != HAL_OK) { Error_Handler(); }The second init function does almost the same as the first but activates the OneShot mode which stops the counter immediately if IRQ is fired.I was looking for a suitable HAL function to setup the timeout value but failed. Instead I use__HAL_TIM_SetCounter(htim, 1); // set start value __HAL_TIM_SetAutoreload(htim, ulDelay); // set end value __HAL_TIM_ENABLE(htim);The last macro is required because after the RX DMA is done in time, the timer has to be stopped to prevent from false timeout IRQs.Is this the way to go? Is there a HAL-compatible solution which I didn't get?Thanks
My MCU is STM32H7R7L8H6H,The FLASH schematic pins are as follows,Please help me, thank you!
Hi,I’m using an STM32L052 with LQFP32 package, VDD = 1,8V.According to the datasheet:“VDD_USB = 1.65 to 3.6V: external power supply for USB transceiver, USB_DM (PA11) and USB_DP (PA12). To guarantee a correct voltage level for USB communication VDD_USB must be above 3.0V. If USB is not used this pin must be tied to VDD or VSS. On packages without VDD_USB pin, VDD_USB voltage is internally connected to VDDvoltage”Since in the LQFP32 package VDD_USB is internally connected to VDD, it is therefore powered at 1,8V in my design.As expected, the USB interface does not operate when I connect the board to a PC and risk of damage because D+ and D- tied to 1,8VCould you please confirm that the internal USB PHY cannot operate correctly at 1,8 V, and that USB operation requires VDD ≥ 3.0 V even when VDD_USB is internally tied to VDD ?If so, what would be the recommended workaround for designs that operate the MCU at 1,8 V ?Thanks in advance for your clarification.
Hello everyone,I’m currently facing an issue with PDO data exchange between a CANopen Master and Slave running on STM32 using CanopenSTM32 and CANopenEditor.I can successfully see PDO frames on the CAN bus using a Waveshare USB-CAN-FD analyzer, but my Slave does not seem to receive or update the mapped object as expected.These are the Details of my Setup: Master Node-ID: 0x18Slave Node-ID: 0x02Stack: CANopenNode V4 (ported for STM32)ODs generated with: CANopenEditor v4.2.3Bus monitoring tool: Waveshare USB-CAN-FD Master TPDO1 (0x1800): COB-IDUsedByTPDO = 0x40000180 Mapping = 0x60010020 (x6001_counter) TransmissionType = 0xFFSo, on the CAN bus, the Master sends messages with ID: 0x180 + Node-ID = 0x180 + 0x18 = 0x198. And I can confirm this with my USB-CAN-FD analyzer i see CAN frames with ID 0x198 and correct payload.Slave RPDO1 (0x1400): COB-IDUsedByRPDO = 0x40000180 <-- initially Mapping = 0x60020020 (x6002_counterFromH7) TransmissionType = 0xFF
Hi, I am using a STM32F411CEU6. I am trying to make the One Pulse Mode of TIM1 start every time TIM2 has counted its ARR. However, I don't seem to really understand what the relevancy of the ARR of TIM1 is when having TIM2 controlling the start(except if it is longer than TIM2 ARR i guess). Now I have 90MHz on both APB1 and APB2 and the PSC of both TIM1 and TIM2 is 90. I was following an example online where he sat the ARR of TIM1 to 50000 and ARR of TIM2 to 60000. The Pulse of TIM1 was 10000. From my understanding when I am running in output compare mode PWM1, TIM1 should start every 60ms and have a ON time of 10ms. Instead I see an ON time of 20ms and a period of 60ms. However when I change the ARR of TIM1 this ON time also changes. Is there something I am missing completely here? (I also have to change the OCMODE of TIM1 to PWM1 because it does not seem to be an option in MX)Thanks in advance!
Hello everyone,I’m working with the B-L072Z-LRWAN1 Discovery board (STM32L072CZ + Murata CMWX1ZZABZ module) using Keil uVision5.I’m trying to achieve very low power consumption for battery operation, but I can’t get the current below 1.16 mA in Low Power mode.I have tested the official LoRaWAN examples provided for the B-L072Z-LRWAN1 (I-CUBE-LRWAN package) using Keil uVision5.I followed all low-power recommendations (Analog GPIOs, LEDs off, ST-Link disconnected, debug disabled).However, the board still draws about 1.16 mA in low-power mode, which seems too high compared to the expected few µA from the datasheet.Setup:Board: B-L072Z-LRWAN1MCU: STM32L072CZIDE: Keil uVision5 (latest STM32 device packs)Power source: 3 x AAA BatteriesLoRaWAN stack: I-CUBE-LRWANQuestions:Has anyone managed to reach sub-100 µA or µA-level consumption with this board and Murata CMWX1ZZABZ module?Is there any hardware component (regulator, module, or interface) that stays powered even when the MCU is in Stop mo
Does anyone know how to connect X-NUCLEO-IHM08M1 with NUCLEO-U575ZI-Q?CN11 and CN12 of NUCLEO-U575ZI-Q will be connected to CN7 and CN10 of X-NUCLEO-IHM08M1 respectively? Pin 1 of CN11 and CN12 are connected to Pin 1 of CN7 and CN10?Thank you
Anyone tried to control more than one motor with the EVLSERVO1?The scenery that I mean is like: the ELVSERVO1 is 3kW, so I would control 4 motors of 500W each and give to the EVLSERVO1 the reference (hall sensors) of one of the 4 motors.Did anyone try something similar to that? Do you think that this could work?Thanks.
I am currently working on a new hardware design using the STM32U575VIT6 (LQFP64, 10 × 10 mm) microcontroller.I would like to request:Reference schematics and layout guidelines for STM32U575 in LQFP64 packageRecommended power supply and decoupling capacitor designCrystal oscillator and reset circuit design guidelinesAny available design checklists or application notesMy design overview:,low-power IoT sensor node Peripheral interfaces planned: SPI, I²C, ADC, etc.Kindly share any relevant schematics, PCB layout examples, and design documentation to ensure proper implementation.Thank you very much for your assistance.ThanksHarshith
@Issamos Am planning to Quad SPI, which port we can use, i cannot able to find the data sheet below listed pins can use Controller -STM32U575VIT6 (LQFP64, 10 × 10 mm)QSPI_CLK → PB2QSPI_NCS → PB6QSPI_IO0 → PD11QSPI_IO1 → PD12QSPI_IO2 → PE2QSPI_IO3 → PE3Pls suggest the pins details
STM32CubeIde 1.19.0STM32Cube_FW_N6_V1.2.0RTSP Client: FFPLAY I've been evaluating the VENC_RTSP_Server example for a little while as a starting point for a potential video streaming application. Unfortunately, the example does not produce a stable stream. The stream was unstable prior to FW v1.20 as well, but a new check and message was added in FW v1.20 (MSG: "Video Overflow - Skip Frame") that seems to point to the bottleneck being on the encoding side somewhere and not the network side. I'll detail some of the issues here. Some of these issues address quality problems and may or may not help this performance, but others do affect it. I'm also certainly open to the possibility that my analysis could be wrong in some cases as I haven't had much time working with this part and the STM32Cube tools. File: Appli/Src/main.c Issue #1: A) The PLL2 configuration in SystemClock_Config() is invalid according to STM32CubeMX or at least it will not allow this configurati
Hi everyone, I'm working on a dual motor setup using an STM32F303 with the STM32 Motor Control SDK (MCSDK). I'm using FOC with Hall sensors and 3-shunt current sensing. The project is configured with MC Workbench and controlled via ST Motor Pilot. I’m trying to track the position of Motor 1 using the following code inside the Hall sensor interrupt handler:rotation_count_M1 -= pHandle->Direction * SenseMoteurM1; This works fine when only one motor is connected. However, when both motors are active, the function __weak void *HALL_TIMx_CC_IRQHandler(void *pHandleVoid) is called for both motors, and the position count becomes incorrect — which makes sense, since I can't tell which motor triggered the interrupt.I tried something like:if (pHandle == "HALL_M1") { ... }But of course, that doesn’t work because pHandle is a pointer, not a string.My question is:What is the proper way to identify whether pHandle corresponds to Motor 1 or Motor 2 inside this interrupt handler? Is
Able to generate a code (446+IHM08M1) and spin the BLDC motor. Configured a serial port in my generated code with 19200 Baud Rate.Want to monitor all the parameters using ST Motor Pilot.How to make use of the ST Motor Pilot?Does it Auto detect the Hardware or we have to manually feed?
Hi,I'm configuring MicroROS on the STM32F767ZI, but I want to set up a connection with the MicroROS agent using the Ethernet connection on the Nucleo F767ZI board.I followed the guide at this link (see section UDP https://github.com/micro-ROS/micro_ros_stm32cubemx_utils/tree/jazzy?tab=readme-ov-file#udp but I'm having trouble fixing main.c.I understand that I need to enable ETH and LWIP, but I can't fix main.c using the sample_main_udp.c and sample_main_embeddedrtps.c files. I'm attaching the project so you can see the files.Note: I started by configuring usart3 and then regenerated the code, excluding usart3, adding ETH, and configuring LWIP in the middleware.
I have a Flash Full test failed issue with the STM32F427 ClassB library V4.0.0 code in Keil project.The project is generated from the STM32F446RE-Nucleo examples. Attached please find my scatter file and the post-build command batch file. (I have tested the official CubeIDE project and it can pass the Flash Full test and also the runtime partial flash test.) Project.sctLR_IROM1 0x08000000 0x00080000 { ; load region size_region (512KB FLASH) ; Interrupt Vector Table and Program Code (FLASH) ; Full 512KB flash region ; Note: CRC area (0x0807FFFC-0x0807FFFF) should be excluded from flash test ER_IROM1 0x08000000 0x00080000 { ; load address = execution address (full 512KB) *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } ; RAM Memory Region (192KB) ; Backup buffer section (for STL) - 32 bytes (0x20), placed first in RAM, UNINIT (NOLOAD) backup_buffer_section 0x20000000 UNINIT 0x20 { * (backup_buffer_section) } ; Initialized data (loaded from FLAS
Hello All,We need to interface to a 2-lane MIPI DSI display with resolution of 1280 x 720 and looking for all possible solutions !Does anyone know if any of the STM32 series is capable of supporting and driving such a display and, if so, which ones please ?
I’m using the EVSPIN32G4 dual motor control board with MotorControl Workbench 6.4.1 in Sensorless FOC mode.Both motors have identical configurations, but Motor 2 doesn’t rotate when using Workbench 6.4.1.The same setup works perfectly in Workbench 6.3.2, where both motors run normally.Hardware and wiring are fine — this seems to be a software or code-generation issue in Workbench 6.4.1 for dual-motor projects.Can you please confirm if this is a known issue or regression in version 6.4.1, and suggest a fix or workaround?Setup Summary:Board: EVSPIN32G4Mode: Sensorless FOC, Dual MotorMC Workbench: 6.4.1 (issue), 6.3.2 (working)IDE: STM32CubeIDE 1.19.0
Hello, I want to use LTDC on the STM32H743VIT6 microcontroller, but when I enable this peripheral in CUBEMX, it does not activate correctly. For example, the pins for B are from B3-B7, while they should be from B0-B4, and the same goes for R, G.
Hi,I’m controlling a 4-pole BLDC motor (24V) for a tilting door using STM32F303, configured via MC Workbench and monitored with ST Motor Pilot.Control method is FOC with Hall sensors and 3-shunt current sensing. PWM frequency is 25kHz.:wrench: Motor specs:Rs = 0.83Ω, Ls = 0.97mHBEMF = 8.75 Vrms/KrpmInertia = 55.53 µN·m·s², Friction = 38.94 µN·m·sMax speed = 1000 rpm🧠 Control parameters:Hall sensors: Displacement = 120°, Electrical angle = 60°FIFO = 16, Input capture filter = 4 µsRegulation time = 80 µs (2 PWM), T-rise = 1500 ns, T-noise = 2000 nsAngle interpolation enabledSpeed control mode with Feed Forward enabledTorque & Flux cutoff frequency = 6000 rad/sExecution rate = 5 ms:chart_decreasing: Issue:Upward motion is relatively clean (minor oscillation), but downward motion shows strong oscillations. The torque required for closing is higher than for opening, and I can’t find PID values that stabilize the system.:backhand_index_pointing_right: Questions:Could the electrical angl
Hello, I bought STM32H743XIH6 board and first tried to program it with FTDI programmer and STM32CubeProgrammer. It looks like the serial interface detects the board correctly as I can see it in the STM32CubeProgrammer but fails at a read attempt of 0x080000000 address with error message like "error occured during read at address 0x08000". Next, I read that I need ST-LINK to over come UART problem so I did. I purchased ST-Link V2 and gave it a try:22:33:27 : UR connection mode is defined with the HWrst reset mode22:33:27 : UR connection mode is defined with the HWrst reset mode22:33:27 : ST-LINK SN : 37FF71064E57343691A3134322:33:27 : ST-LINK FW : V2J46S722:33:27 : Board : --22:33:27 : Voltage : 3.26V22:33:27 : SWD freq : 4000 KHz22:33:27 : Connect mode: Normal22:33:27 : Reset mode : Hardware reset22:33:27 : Device ID : 0x45022:33:27 : Revision ID : Rev V22:33:27 : UPLOADING OPTION BYTES DATA ...22:33:27 : Bank : 0x0022:33:27 : Address : 0x5200201c22:33:27 : Siz
Hi,I am running a code to expect to get a digital ouput (wave file from sd card) using amplifiermax98357a. when i run this code the only thing i got is a noise like burning wood. can i get any help. i am assuming the sd card not beeing read or initiate to get the file play./* Define to prevent recursive inclusion -------------------------------------*/#ifndef __MAIN_H#define __MAIN_H#ifdef __cplusplusextern "C" {#endif/* Includes ------------------------------------------------------------------*/#include "stm32f4xx_hal.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Exported types ------------------------------------------------------------*//* USER CODE BEGIN ET *//* USER CODE END ET *//* Exported constants --------------------------------------------------------*//* USER CODE BEGIN EC *//* USER CODE END EC *//* Exported macro ------------------------------------------------------------*//*
I'm designing a circuit to convert sensor values to ADC using the STM32U073MC (LQFP-80).Unfortunately, I'm new to the STM32U0 series.I read the RM0503(Rev 4) Reference manual(page 427) and found that the OPAMP1_VOUT can be connected to ADC1_IN8.However, I checked the datasheet's(DS14548 - Rev 2 - March 2024) port table(page 32/Table 12. STM32U073x8/B/C pin/ball definition) and it seems to be connected to ADC1_IN7.1. Which information is correct? (ADC1_IN7 or ADC1_IN8)2. Also, could you briefly explain how to make the desired connection using CubeMX provided by ST? - I wish configure VM_SEL bits as “inverting not externally connected” with CubeMX.
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.