Get ready for the STM32 Summit 2026 | Online, November 3
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
Hello, hope you all are doing well.I am unable to transmit messages over CAN using DMA on my STM32G431RB Nucleo board. My JLink didn’t show any errors in my code flow, but my logic analyzer did not register any CAN messages on the TX pin (PA12), and the output stays high. I also tried using a CAN adapter to read the messages which wasn’t fruitful. How can I debug this? I used this tutorial for reference: Thank you in advance!CanManager.cpp#include "CanManager.h"CanManager::CanManager(FDCAN_HandleTypeDef* hfdcan) : mHandle(hfdcan){ mFilterConfig.IdType = FDCAN_STANDARD_ID; mFilterConfig.FilterIndex = 0; mFilterConfig.FilterType = FDCAN_FILTER_RANGE; mFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0; mFilterConfig.FilterID1 = TX_ID; mFilterConfig.FilterID2 = 0x7FFU;}HAL_StatusTypeDef CanManager::Init(){ HAL_StatusTypeDef ret = HAL_FDCAN_ConfigFilter(mHandle, &mFilterConfig); if (ret != HAL_OK) { return ret; } ret = HAL_FDCAN_Start(mHandle);
Hello everyone,I am experiencing an issue with STM32CubeMX version 6.18.0 right after a fresh installation. The software is unable to connect to the server to download repositories or updates.Here are the details of my situation:Network Environment: I am using my office Wi-Fi, which does not use a proxy server. Other applications connect to the internet without issues. Error Message: I keep getting a "Problem during server connection" error. Troubleshooting Done: I have already gone into the Connection Settings and tried changing the proxy settings to "No Proxy" as well as "System Proxy", but neither option resolved the issue. Since there is no proxy on our network, I am unsure what is blocking STM32CubeMX from reaching the server. Has anyone encountered this with version 6.18.0, or does anyone know which specific ports or URLs need to be whitelisted in our office firewall?Any help or guidance would be greatly appreciated. Thank you!
Trying to update an existing design to use S2-LP , but I need table of values for 433 and 868Mhz operation. This needs to be one pcb layout that can be populated for either frequency. I have searched through the website but I can’t find a solution. I have found a eval board for FKI433V2 @ 433 Mhz, but no equivalent for 868Mhz. The other 868Mhz boards use a balun, so the layout would be quite different.I’m sure many people have gone down this route in the past.
Hello, I recently noticed that new Packs are available for download in MX2 (2.1.0). I downloaded the Packs for one of my projects but then I realized that I have to do this for every project individually. Is there a way to download new versions of Packs only once and have them available in all the projects? Thank you,-Gil
I am testing Rhino encoder motors(ig32) 100rpm on an STM32H723ZG Nucleo-144.my actual connections are: Motor driver PWM → PC6 → TIM8_CH1Motor driver DIR → A0 → PA3Encoder A → D5 → PE11 → TIM1_CH2Encoder B → D6 → PE9 → TIM1_CH1my confirmed the CubeMX configuration shows: TIM1 Encoder Mode = TI1 + TI2PE9 = TIM1_CH1PE11 = TIM1_CH2So the encoder is a genuine quadrature encoder, and I have intentionally kept TI12 rather than switching permanently to TI1.2. Motor encoder specificationRhino RMCS-5031 datasheet.The datasheet specifies:Gear ratio: 1:174 Encoder type: Quadrature Output-shaft CPR listed as 9048 Base Hall sensor count: 13The relationship is:13×174=226213\times174=2262and with 4× quadrature decoding:2262×4=90482262\times4=9048So the manufacturer's 9048 figure and my observed quadrature counts became an important part of the investigation.3. my original problemI originally wanted the motor to:rotate exactly one output-shaft revolution and stop based on encoder counts.i initi
I am trying to use a STM32G0B1CBT3 for standard (non-FD CAN communication).The device is running from a 8 MHz HSE oscillator.This is the clock topology I am using: As you see the CCS is disabled and the CAN clock and the system clock is running on 64 MHz.In some cases my CAN frames are transmitted with a bitrate faster than expected:The edges some times falling totally to the sampling points, the calculated bit times are lower than 4 us: Putting the correct and incorrect frames the difference is more visible: I have tried to route the HSE to the MCO to see how stable is it, but I have not detected any deviation which could cause this deviation.I also tried to run an overnight test to send a CAN frame continuously and capture the waveform and calculate back the bit times are quite identical: Any hints, ideas would be welcome!
Hello,I have a Nucleo-L432KC with a dead microcontroller, but the STLink IC is ok.I wanted to use the STM32F103 to develop some USB code, so I removed the broken L432 and populated the reprogramming header for the SWD, CN2.I connected there a STLINK-MINIE to erase it, but CubeIDEProgrammer cannot read back anything.At the first connection I was able to erase it (maybe just partially?), because now it is not recognized anymore as ST_Link device and the LED has only a faint red color.I also connected the reset to the STLINK-MINIE and tied the BOOT0 to 3.3V.Is there anything else I can try to fully erase and then re-program the F103? Thanks,Marco
In testing the LoRaWAN_End_Node_LBM application supplied with STM32CubeWL-1.5.0 release I found that the output power is substantially lower than the same test setup with the LoRaWAN_End_Node application supplied with STM32CubeWL-1.4.0. This testing was conducted only using the US915 region setting.First I found that the EIRP was being defined as 16 dBm in Middlewares/Third_Party/LoRaWAN/smtc_modem_core/lr1mac/src/smtc_real/src/region_us_915_defs.h when it should be 24 dBm.#if defined( LR11XX ) || defined( SX1262 ) || defined( SX1268 ) // region is 30 dBm but radio is 22 dBm ERP (+2 to EIRP) #define TX_POWER_EIRP_US_915 (24) // define in dbm #else // region is 30 dBm but radio is 14 dBm ERP (+2 to EIRP) #define TX_POWER_EIRP_US_915 (16) // define in dbm // TODO must be checked, SX126x dependent for the max power #endifSince the project compiles with the preprocessor symbol -DSX126X the #if condition fails and the maximum transmit power is capped at 14 dBm ERP rather tha
I am working on an STM32H7-based project where I continuously poll sensor data over SPI in DMA mode. Everything works as expected for the first few hours, but occasionally the SPI bus freezes and triggers a timeout error (HAL_SPI_ERROR_TIMEOUT).Resetting the SPI peripheral manually recovers the communication, but I want to identify the root cause instead of using a soft-reset workaround.Has anyone encountered similar bus lockup issues with STM32H7 SPI DMA implementation? Any tips on proper flag clearing or clearing the FIFO buffer safely would be greatly appreciated!
I am using STM32CubeMx to calculate the i2C timing for i2C master. The i2C kernel clock is 200MHz. I2C speed frequency is 400KHz. Coefficient of digital filter 0, Analog Filter Enabled. If Rise time and Fall time were set to 0, TimingR = 0x109035B7. With this setting, Tpresc = 10ns, Tsclh = 1840ns, Tscll = 540ns, Tscldel = 100ns, Tsdadel = 10ns, Tsclh + Tscll + Tscldel +Tsdadel = 2490ns. Actual SCL clock is measured ~2500ns. If Rise time and Fall time are set to 300ns( I2C Fast mode max tr and tf), TimingR = 0x40FA1531. With this setting, Tpresc = 25ns, Tsclh = 1250ns, Tscll = 550ns, Tscldel = 400ns, Tsdadel = 275ns, Tsclh + Tscll + Tscldel +Tsdadel = 2475ns. Actual SCL clock period is measured only ~2000ns (Tsclh ~650ns, Tscll ~1350ns).Why is SCL clock period too low in the latter case? Should SCL be stretching low for Tscldel +Tsdadel?
Hi,I am using the following hardware setup: NUCLEO-G474RE X-NUCLEO-IHM09M2 STEVAL-IPM20B DC bus: 400 V Motor rated current: about 5 Apeak STM32 Motor Control SDK / Motor Pilot 6.4.2 I have loaded the Motor Profiler firmware generated by Motor Control Workbench.My question is:Can I use the Profiler function in Motor Pilot 6.4.2 to automatically measure the motor parameters with this hardware configuration at a 400 V DC bus voltage?My main concern is that the DC bus voltage is relatively high. I would like to confirm whether the Motor Profiler supports this voltage range with the STEVAL-IPM20B, or whether the profiling procedure should be performed at a lower DC bus voltage first.Are there any recommended voltage/current limits or additional precautions when using Motor Profiler with STEVAL-IPM20B?Thank you.
i have enabled FATFS via CubeMX like belowbut for some reason in the code generation settings I can’t disableI want disable it because CubeMX generates a void function; instead, I want the MX_FATFS_Init return a status code if it is generated or not so, I want to have a uint8_t MX_FATFS_Init()
Hello there, I’m working on a device that in its normal operation uses the MSC.But I want my clients to also be able to update the device via USB using DFU.#define USBD_PID_FS 57105#define USBD_PRODUCT_STRING_FS "STM32 DownLoad Firmware Update"#define USBD_CONFIGURATION_STRING_FS "DFU Config"#define USBD_INTERFACE_STRING_FS "DFU Interface"#define USBD_PID_FS 22314#define USBD_PRODUCT_STRING_FS "STM32 Mass Storage"#define USBD_CONFIGURATION_STRING_FS "MSC Config"#define USBD_INTERFACE_STRING_FS "MSC Interface"I found these differences and made a work around, CubeProgrammer is detecting a DFU device when a button is pressed:void MX_USB_DEVICE_Init(void){ /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ //check to enter DFU mode if(HAL_GPIO_ReadPin(USR_BUT_ENTER_GPIO_Port, USR_BUT_ENTER_Pin) == GPIO_PIN_RESET){ if (USBD_Init(&hUsbDeviceFS, &DFU_Desc, DEVICE_FS) != USBD_OK) { Error_Handler(); } if (USBD_RegisterClass(&hUsbDeviceFS, &U
I am trying to work with a legacy project using an ST7 processor. I bought an RLink second-hand, but it didn’t come with any software.I thought I could just go to the Raisonance site and download it, but their portal is not working for me and their support is completely unresponsive.Does anyone know of where to find the software or able to share an installer?
I have a LSM6DSV16X IMU powered from a 3.3V LDO. It communicates with a TMS320F2800137 MCU via SPI which is powered from a separate 3.3V buck rail. Power to the MCU and rest of system is controlled via the shutdown of the 3.3V buck. An interrupt from the IMU can control the shutdown of this 3.3V buck to wake it back up again. My first issue arose when powering down the MCU system that 3.3 V from the IMU would back feed from the CS pin 12 through the GPIO of the MCU and draw excessive current as seen as a 0.6V drop across the 3.3V buck rail. Current measurements showed 700uA from the 14.4 V supply. To fix this backfeeding voltage I turned off the I2C/I3C interface via the IF_CFG register, however, this leads to the next issue.With the IMU programmed with the accelerometer in LPM1 with ODR 1.875 Hz and gyroscope in sleep mode; no other embedded functions enabled, I disable power to the 3.3V buck, leaving only the IMU and 3.3V LDO powered to find the IMU consuming about 250uA for about 10
I’m trying to use ADC oversampling and noticed that temperature value is distorted in that case.I have configured ADC with 7 external inputs, temperature sensor input and Vref input. Vcc/Vcca is 3.27V, sampling time is 7.5 cycles.When oversampling is disabled - I’ve got averaged raw value 2115 for analog input (voltage 1.64V), 1005 for temperature sensor and 1582 for Vref. When oversampling is enabled (no matter 2x or 16x, with shifting to same count of bits as added by oversampling) - I’ve got 2115 for analog input, 1107 (!!) for temperature sensor and 1584 for Vref. So, only temperature sensor input value differs. And, as result, I’ve got 63*C instead of 33*C when oversampling is enabled.What’s wrong with oversampling? Can it be fixed by some kind of settings? Or I must forget about it and use software oversampling instead?I’m using latest CubeIDE 2.2.0 and CubeMX 6.18.1 with latest libs 1.6.3.
Hi, guys. (admin, if this post is inappropriate please delete)So I am doing quite a complicated project (well for my skill level anyway) and my own code is stating to confuse me. Are there any guidelines for writing readable code in embedded development? I attached my whole project link below. my project on github Any tips would be helpful. I am no where near done and the amount of code I have to write is orders of magnitude away from being finished. I am using cube IDE for this project. A while ago I did try and transition over to vscode but I was getting a lot of issues with cmake and might have become allergic to it. I have also changed how cube ide looks a bit. below is an screenshot. tldrtips on orginising code so its easyer for me to follow my own stuff if you have any tips on making cubeide look better? attached link to my github project below.
Hello Team,We want to have Standalone Programmer based on ST`s Existing Flash Module Like St-Link V2, V3 Or Mini PCB tools.I should be able to Use External ST MCU to Command this SWD module for Flashing n all task , like CubeProgrammer.Basic Interface like Pushbutton to Start the Flash and Some LED to showcase any Error. We would not prefer expensive available off-the-Shelf Programmer like Segger..... Not want to use Rpi as well. This basically for FAE.Regards,
I have a board that we want to use to wake up on button presses and send BLE messages to other devices. In the start i can see that an IRQ is triggered when we push the button. But once we go to deepstop/sleep, the trigger does not do anything anymore.I use zephyr version 4.4.2My buttons is connected to PB14 and PB15,dts contains: gpio_keys { compatible = "gpio-keys"; wakeup-source; button1: button_0 { label = "Button 1"; gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>; zephyr,code = <INPUT_KEY_0>; }; button2: button_1 { label = "Button 2"; gpios = <&gpiob 15 GPIO_ACTIVE_HIGH>; zephyr,code = <INPUT_KEY_1>; }; };/* Board is populated with an HSE 32 MHz crystal (OSC_IN/OSC_OUT) and an * LSE 32.768 kHz crystal (PB12/PB13) - use both instead of the internal * HSI/LSI RC oscillators for accurate timing. */&clk_hse { status = "okay";};&clk_lse {
Hi,I'm working on a data-logging application using the STM32U575VGT6Q. I'm evaluating filesystem options for this.I have a few questions for the community/ST team:Is LittleFS officially supported on the STM32U575 series (or any STM32U5 platform)? Is there any official ST support, reference implementation, or roadmap for LittleFS on STM32U5, or on any STM32 series in general? I'm targeting an external OCTOSPI flash chip . Is there any official or community GitHub repo, example project, or app note demonstrating LittleFS's using OCTOSPI HAL driver on STM32U5? If anyone has done this integration themselves, could you share a reference implementation or point me to one? For an append-heavy, sequential data-logging use case on external NOR flash, which filesystem would you recommend between LittleFS, FatFS, and FileX+LevelX on this platform, and why?Any pointers — official documentation, GitHub repos, forum threads, or app notes — would be greatly appreciated.Thanks in advance.
#include "main.h"#include <stdio.h>/* --- Handles périphériques --- */I2C_HandleTypeDef hi2c1;UART_HandleTypeDef huart2;/* --- Prototypes locaux --- */void SystemClock_Config(void);static void MX_USART2_UART_Init(void);static void MX_I2C1_Init(void);static void Sensor_Wakeup(void);void Error_Handler(void);/* --- Redirection printf vers UART2 --- */#ifdef __GNUC__int __io_putchar(int ch) { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch;}#elseint fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); return ch;}#endifint main(void){ HAL_Init(); SystemClock_Config(); /* 1. Initialisations */ MX_USART2_UART_Init(); printf("\r\n========================================\r\n"); printf(" SCANNER DE BUS I2C1 (PA9/PA10) \r\n"); printf("========================================\r\n"); Sensor_Wakeup(); MX_I2C1_Init(); /* 2. Boucle de scan */ while (1) { printf
Hello,I would like to add Secure Boot + SFU functionality to my TouchGFX app with STM32N6. Since it is a graphics app, i don’t want to partition the external flash memory as installation and download slots as shown in the ST wiki for OEMuROT. https://wiki.st.com/stm32mcu/wiki/Security:OEMuRoT_for_STM32N6 To use external memory for apps and assests efficiently; below architecture is more suitable for me. Which changes are needed in the ST example ROT projects? With this, is it possible to debug the app code? Normal boot │ ▼BootROM → Secure FSBL → verify App + Assets → HMI Firmware update │ ▼ USB / CAN │ signed package │ ▼ Secure FSBL │ signature + version check │ program NOR │ verify
We would like to use the VL53L5 to measure the fuel level in a tank. According to the ATEX standard, the measuring device with the VL53L5 will be located near an opening in the tank in Zone 0.The datasheet does not specify the optical power of the circuit. The ATEX standard specifiesthe maximum optical power that the device may have in order to be installed in Zone 0. Could you please provide a table with the optical power values?
I am using STM32H745, STM32CubeAI Studio 1.3.0, ST Edge AI Core v4.0.1, as recommended on STM web site I am moving my code from X-CUBE-AI (generated by CubeMX) to ST Edge AI v4 (generated by AI Studio).I need to extract output of intermediate layer, and I used to use platform observer API for that.Can I keep using with st-ai code base (ai_platform_observer_register)?Should I switch to stai_network_set_callback() ? Is it supported for production applications? Will this API remain available in future ST Edge AI Core versions?Thank you
Hi all,I have this demo board. I copied the BSP demo code to my own empty project to understand and learn how the LCD code works. I copied the code from the BSP demo function by function but I moved the code to my files (filenames and project tree folders) so it makes more sense to me. I'm at the point where the demo draws rectangles on the screen and the demo runs. I copied the touch panel stuff but it is disabled because it was getting stuck in the init function. I'll deal with the touch panel later.I can not get the function that draws the rectangles on the LCD to work more than once when I program the board with my project. If I try to debug and step thru the code it actually works. I traced the part where it "hangs" by adding a line to toggle the green LED in the board. The part where it hangs is in the Polling For DMA transfer function: (void)HAL_DMA2D_PollForTransfer(&hlcd_dma2d, 50);BTW I'm new to STM32U5G9J, never used it before. I read the reference manual for the MCU and
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.