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
What is the proper way with position control to reset the current angle by for example 50 rotations towards a smaller value?If the theta keeps increasing forever, with the float number representation, there will be an error during continuous operations in the same direction. (Smallest increment of a float that is not able to represent 1 as smallest number:mantissa_bits = 23 precision_bits = mantissa_bits + 1 // include implicit leading 1 N_max_exact = 2 ^ precision_bits = 2 ^ 24So if theta reaches 16.777.216 or 2.6 million rotations, there will be a significant error relative to the motor angle. Is that handled in the MCWB position control somehow? What is the intended usage for this problem?Below is the intended code-example with increasing position by 180°*of the output shaft after a gear ratio of 50 each cycle:/* * MotorControl_Interface.c * * Created on: 26.03.2026 */ #include "MotorControl_Interface/Inc/MotorControl_Interface.h" #include "main.h" #include <cmsis_o
Hiya. I'm having some trouble understanding how an STM32 MCU communicates with an image sensor via DCMI if they operate on different voltages.My STM32U5Gxxx operates on 3V3, whereas my selected image sensor has its VDDIO at 2V8 (max input of 3V1). How can I make sure that all the signals I send to the sensor are at 2V8 instead of 3V3? Is there a certain VDDIOx pin to be tied?Are there any reference designs or schematics that are helpful?
Hello,I created a new project by using the STM32 Motor Control Software Development Kit (version 6.4.1). The project code was generated. I need a CAD of the project circuit to connect all the hardware parts. Could you please specify how to generate a CAD of the circuit? Thank you.
Hello everyone!I’ve been struggling for a while with TrustZone projects on the NUCLEO-U575ZI-Q. I’ve tried both the STM32CubeU5 example projects (Templates/TrustZoneEnabled/ and Examples/GPIO/GPIO_IOToggle_TrustZone/) and my own CubeMX-generated project, but I can’t get any of them to run successfully. I'm using STM32CubeIDE.I've tried running the example projects, this is the error I get when building:make: *** No rule to make target '/home/Drivers/STM32U5xx_HAL_Driver/Src/stm32u5xx_hal.c', needed by 'Drivers/STM32U5xx_HAL_Driver/stm32u5xx_hal.o'. Stop.I've set the Option bytes correctly, Secure Area 2 is set to NonSecure and TZEN bit is set to 1.I've also generated a project with CubeMX:Enabled TrustZone, applied Application Regions Settings to Linker files/Peripherals.When the non-secure world calls NonSecure_ResetHandler(), I get a HardFault at address 0x08100d81.Questions:How can I fix the Makefile error in the GitHub examples?Why would calling NonSecure_ResetHandler() from a Cube
Working with AutodevkitStudio using AEK$MCU-C4M3A and AEK$MCU-SPC5LNKA, how to create a project for led blinking give step by step explaination.
The UCPD Dead-battery mechanism is a major gotcha in many new STM32, as it creates a surprising bond between seemingly unrelated pins, and is on by default. There cannot be enough warnings to this, as users not intending to use the PD (which is probably the vast majority) have no incentive to actively seek for such bond.As much as I abhor the whole Cube ecosystem, this is the one case where a sin committed in hardware design decision can be made right at least for those who click in the CubeMXes. The above bond can be highlighted in the pin diagram, and auto-generated code can disable DBCC automagically for all who don't actively enable PD.JW
Hi,I'm working on a project with your STM32WB5MM module, I managed to enable ZigBee and connect to the network, but I'm having trouble changing the device name, it keeps identifying itself as default value (STM32WB).ZigBee Stack: 1.24.0FW Type : FFD Zigbee stackIn function APP_ZIGBEE_StackLayersInit() I add:struct ZbZclBasicServerDefaults basic_defaults = { .app_version = 1, .stack_version = 2, .hw_version = 1, .mfr_name = "0TestName", .model_name = "0LOCKZ1A", .date_code = "02026-03-31", .power_source = ZCL_BASIC_POWER_DC, .sw_build_id = "0v1.0" }; static void APP_ZIGBEE_StackLayersInit(void) { APP_DBG("APP_ZIGBEE_StackLayersInit"); zigbee_app_info.zb = ZbInit(0U, NULL, NULL); assert(zigbee_app_info.zb != NULL); // uint8_t device_name[] = {"0TestDevice"}; // device_name[0] = 10; // ZbZclBasicWriteDirect(zigbee_app_info.zb, ZB_ENDPOINT_BCAST, ZCL_BASIC_ATTR_MFR_NAME, device_name, device_name[0]); basic_defaults.mfr_name[0] = strlen((char*)basic_defaul
Hello Max VIZZINI,i'm facing issue in printf() in AUTODEVKITSTUDIO. im using printf() in the code after compiling im getting this error c:/autodevkitstudio-2.7.0/eclipse/plugins/com.st.tools.spc5.tools.gnu.gcc.ppcvle.win32_4.9.4.202511271245/toolchain/bin/../lib/gcc/powerpc-eabivle/4.9.4/../../../../powerpc-eabivle/lib/e200z4\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':sbrkr.c:(.text._sbrk_r+0x1a): undefined reference to `sbrk'c:/autodevkitstudio-2.7.0/eclipse/plugins/com.st.tools.spc5.tools.gnu.gcc.ppcvle.win32_4.9.4.202511271245/toolchain/bin/../lib/gcc/powerpc-eabivle/4.9.4/../../../../powerpc-eabivle/lib/e200z4\libc.a(lib_a-writer.o): In function `_write_r':writer.c:(.text._write_r+0x1e): undefined reference to `write'c:/autodevkitstudio-2.7.0/eclipse/plugins/com.st.tools.spc5.tools.gnu.gcc.ppcvle.win32_4.9.4.202511271245/toolchain/bin/../lib/gcc/powerpc-eabivle/4.9.4/../../../../powerpc-eabivle/lib/e200z4\libc.a(lib_a-closer.o): In function `_close_r':closer.c:(.text._close_
Hi everyone,I’d like to learn more about FOC algorithms and eventually design my own motor driver. For this purpose, I’m planning to use the STEVAL-CTM009V1 to drive a pump or traction motor similar to those used in forklifts.In general, forklifts with around 2-ton lifting capacity are based on a 48V architecture, and I already have access to such a system for testing.My main question is:Can I drive an ACIM (induction motor) with the STEVAL-CTM009V1? I’m not fully sure about its capabilities in this regard. If it is possible, are there any reference projects or examples that I can follow?Also, when using Motor Control Workbench, which control board would you recommend pairing with the STEVAL-CTM009V1?I should also mention that I’m already familiar with FOC concepts and have experience designing forklifts and telehandlers, but this will be my first time designing a motor driver from scratch, so I’d really appreciate any guidance or best practices.Thanks in advance for your help!
Hi, ST Community, I am working with an lis2mdl on a STEVAL-MKI217V1 board and I used lis2mdl_hard_iron.c this Application and I was able to get data_raw_magnetic and magnetic_mG I want API to get the Angle of Rotation of the sensor
1. Requirement description It is expected that the terminal can join the network with the specified panid 2. Problems encountered during the test 2.1 It was found that the given function ZbStartup cannot enable the terminal to join the network with the specified panid. 2.2 Attempt to use a lower-level function, the network layer function ZbNlmeNetDiscReq, to make a network discovery request. This function returned successfully. In the corresponding callback function, use ZbNwkGetIndex to obtain the network list. This function also returned successfully. However, the network list information has never been obtained (the actual space does have a network). If the network information can be obtained at this stage, the panid can be filtered, but currently, the network information cannot be obtained. 2.3 By using the ZbNlmeJoinReq function of the network layer to join the network, it was found that this function was only declared in the header file zigbee.nwk.h. This function was not defined
Hello,I am testing LSM6DSO and LSM6DSO32 on Zephyr.As these 2 sensors are pin compatible, I prepared 2 identical boards, one is mounted with LSM6DSO and LSM6DSO32 on another. (The sensors are connected to MCU through SPI interface.)My purpose is that I can use one single Zephyr image to drive the IMU sensor no matter which one of these 2 sensors is mounted on board.It looks promising because one lsm6dso.c driver is provided in Zephyr, and this driver defined DT_DRV_COMPAT for LSM6DSO32. And Zephyr's official document also confirmed this compatible as well.So I use the default sample/sensor/lsm6dso app for a simple testing.The sample can be built and run for the board with LSM6DSO. The output from the uart console looks making sense.But I encountered some problems when configure the dts file for the board with LSM6DSO32.At first I config the dts file like this:lsm6dso: lsm6dso@0 { compatible = "st,lsm6dso32", "st,lsm6dso"; ... }This can not compile, the c
I'm recently working on benchmarking a various implementations and configurations of cryptographic algorithms such AES-GCM on STM32. Two of these tested function are the following :void test_aes_hardware(void) { uint32_t plaintext[DATA_SIZE/4]; uint32_t ciphertext[DATA_SIZE/4]; uint32_t decrypted[DATA_SIZE/4]; uint8_t key_bytes[32]; uint8_t iv_bytes[16]; uint32_t key[8]; uint32_t iv[4]; uint8_t ikm[4]; uint8_t salt[4]; uint8_t info1[] = "HW_AES_KEY"; uint8_t info2[] = "HW_AES_IV"; uint32_t rnd; /* RNG */ HAL_RNG_GenerateRandomNumber(&hrng, &rnd); memcpy(ikm, &rnd, 4); HAL_RNG_GenerateRandomNumber(&hrng, &rnd); memcpy(salt, &rnd, 4); /* KDF */ xkdfBlake(key_bytes, 32, ikm, 4, salt, 4, info1, sizeof(info1)); xkdfBlake(iv_bytes, 16, ikm, 4, salt, 4, info2, sizeof(info2)); memcpy(key, key_bytes, 32); memcpy(iv, iv_bytes, 16); for (int i = 0; i < DATA_SIZE / 4; i++) { uint32_t w = (i*4 + 1) |((i*4 + 2) << 8) |((i*4 +
As addicated in DataSheet and CubeMX, there are two FDCAN1_Tx and two FDCAN1_RX in STM32G431CBT6. In my Prj, I used PA12 for Tx and PB8-BOOT0 for Rx, and my chip can only work in FDCAN_MODE_Ext._Loopback, and without any receive func be implemented. After I changed the FDCAN pin from PA12&PB8 to PB9&PB8 and adjusted my wire routing, the problem has be handled. so If the STM32G4 can use FDCAN pin from different port in some case? If not. I think it should be fixed in CubeMX, because CubeMX allows users to select CAN pin from different ports without any warning.
Dear All,I am currently working with STM32MP257 however it gives me lot of confusions. Looking into the Linker script the memory has been defined as follows:MEMORY{FLASH (xrw) : ORIGIN = 0x80100600, LENGTH = 8387072NS_VECTOR_TBL (xrw) : ORIGIN = 0x80100000, LENGTH = 1536VIRTIO_SHMEM (xrw) : ORIGIN = 0x812f8000, LENGTH = 32KIPC_SHMEM_1 (xrw) : ORIGIN = 0x81200000, LENGTH = 992KRAM (xrw) : ORIGIN = 0x80a00000, LENGTH = 1024K}Where I fail to understand why the RAM has been divided as I had already set them in RISAB. My understanding or assumption was the memory should have been divided into SRAMs, RETRAM, SYSRAM etc as per RISAB configuration.I don't if I have to add them manually again in linker script.Moreover, the device tree (.dtsi) for OpenSTlinux also does not mention any memory divisions as in examples. The file: stm32mp257f-hrt-mc-stm32mp2-mx-resmem.dtsi only has the following code:// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)/** Copyright (C) 2026, STMicroelectro
Config:stm32h743iiT6SDRAM 32mb model w9825g6khFLASH 32mb QSPI 1 bank 4 lines w25q256jv2Screen 7 inch 24bit rgb888I am really stuck on stm32 jpeg hardware vs libjpeg working 1 Decoding 1024x600 stored in qspi flash with jpeg harware stuck with the jpeg markers === FINDING JPEG IN QSPI === Found JPEG at offset 0x069000 (address 0x90069000) :triangular_ruler: Found SOF0 at offset 484: 160x94 Dimensions: 160 x 94 Found JPEG at offset 0x089000 (address 0x90089000) :triangular_ruler: Found SOF0 at offset 552: 160x93 Dimensions: 160 x 93the image is really 1024x600 stored has standard in photoshop to avoid progressive stuff.... Offset 7252: SOI (start) - Offset 7418: SOF for 160x94 thumbnail - Offset 11289: EOI for thumbnail - Offset 15044: SOF for 1024x600 main image ← Your real image! - Offset ???: EOI for main image Is there any body witch have faced those problems to hardware jpeg decode can you share your experience .....
Hi everyone, I’m having trouble launching STM32 ISP IQTune ver. 2.0.0 on Windows 11. When I start the application, I get the following error message:“The IQTT service could not be started.” The message also mentions checking that port 7132 is free. To verify this, I ran the following command in the Command Prompt:netstat -ano | findstr 7132 However, it returned no output, so I assume that port 7132 is not in use.Has anyone encountered this issue before? What could be causing this error, and how can I resolve it? Any help would be greatly appreciated. Best Regards,Perorin-Q
Hi, I am looking for the burn-in specifications for a MEMS accelerometer device/sensor. Could you please help me with this information? Thank you
Hi, I´m designing an USB host device (with STM32U5). Therefore I´ve ha a look at the schematics of the STM32U575I-EV. Could someone explain what the MOSFETs are for? Best regards, Achim
Hi Team, do ST offer a high-g accelerometer, similar to the LSM6DSV320X on the STEVAL-MKI251A, that supports over 400g with integrated free-fall detection?
I am working on a project in which the sensor data that will calculated by stm32 will be sent via using the esp32 as a wifi module to aws , now the problem is i have inserted the stm32 and esp32 inside a pcb with the required circuit connection but i am having difficulty flashing the code to esp32 or connecting to esp32 , i have tried various methods but cant seem to find a solution. thing is the code cannot be flashed directly to esp32 , it has to be sent via stm32 due to circuit connections and no availability of usb connection ?current status right now:- i am using the process of semihosting to flash the code into stm32 and get results on the serial monitor since i dont have a usb connection for stm32 , i am using the st link of nucleo externally , if someone can help me regarding conversion of my stm32l476 to a bridge to flash code on esp32 or to convert esp32 to wifi module ,it would be very helpful ,this is the last step after this only calibration is required to
Split from Question about ST eSIM solutions - which is solved.This is a new question.Hi!Can you please tell me how the activation process on the ST4SIM-300M chip works now?
Hi! We have two custom boards that we have soldered the ST4SIM-300M eSim to. We have earlier been using the ST4SIM-200M and followed this activiation procedure:https://www.st.com/resource/en/application_note/an5740-st4sim-with-truphone-connectivity--activation-procedure-stmicroelectronics.pdfto get them working with truphone.Now when i try to do the same thing with our new eSim i get the same ICCID from both, this is what i get:at AT%XICCID %XICCID: 89019990001234567893 When i try to enter it on truphones activation page it says that the device is not found.Am i doing something wrong or missing anything?
Hi all,I’m currently working on an Edge AI project using the NUCLEO-N657X0-q and I've run into a roadblock regarding multi-model deployment.I need to run 2 or 3 models on this MCU, scheduled via FreeRTOS. While I can get a single model working fine with STM32Cube.AI Studio, I’m struggling to find a detailed workflow for managing multiple instances.Specific questions:API Naming: How to properly configure Cube.AI to generate unique prefixes for multiple models to avoid link-time conflicts?Memory/Buffer Sharing: Is there a standard way to share a single activation buffer between models to save RAM, given they are called sequentially via FreeRTOS?Task Scheduling: Any known issues or best practices for calling stai_network_run() within a FreeRTOS task? (e.g. stack size or re-entrancy).I’ve checked the ST Edge AI Core docs but couldn't find a concrete example for this multi-model + RTOS use case. If anyone has a reference project or can point me to the right Application Note, I’d really
Hello, I am testing SPI5 TX by GPDMA on an STM32N6 device and I found behavior that seems inconsistent with the reference manual. MCU / Environment MCU: STM32N647X0H Toolchain: STM32CubeIDE 2.1.1 CubeMX / CubeN6 version: STM32Cube_FW_N6_V1.3.0 Issue summaryI configured SPI5 as: Master Simplex TX-only Software NSS SSI set high I configured GPDMA1 Channel0 as: Memory-to-peripheral Source = TX buffer Destination = SPI5->TXDR Transfer length = 8 bytes TX pattern = A5 5A A5 5A A5 5A A5 5A Observed behavior If I write data directly to SPI5->TXDR by CPU, MOSI outputs correctly. If I use GPDMA for SPI5 TX, SCK may appear, but MOSI stays low / no valid TX data is output. I reduced the project to a minimal LL test case and the behavior is reproducible. What I already verified Same SPI5 pin configuration is used in both tests. CPU TX path works with the same SPI configuration. TX buffer content is correct in memory (A5 5A ...). DMA source addres
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.