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,I’m using CubeMX 6.18.0. I’m trying to implement a USBX standalone (bare-metal, no RTOS) CDC application. Code within user code sections is overwritten when re-generating the project. As far as I can see this is not a new problem, there are already some older topics about it. @ST: will this ever be fixed?Regards
I am working on an STM32 based IoT project where I want to fetch original quality media files from public Instagram post URLs and display them on a connected TFT screen. The concept is similar to how browser based tools like snapinsta.ink work where a public post URL is parsed to extract the direct media file URL which is then fetched as raw image data. My current implementation uses the STM32 HAL HTTP client library to send a GET request to the public post URL and parse the JSON response to extract the highest resolution media node before downloading the file to external flash storage. The main challenge I am running into is that the response payload size exceeds the STM32 heap allocation when trying to buffer the full response in memory before parsing. Has anyone implemented a similar HTTP response streaming and parsing workflow on STM32 and found a reliable way to handle large JSON payloads without loading the entire response into SRAM.
I'm implementing getQuat() for the BNO055 on both STM32 and Arduino and getting very different times. On STM32H7 (HAL, 400kHz I2C) my equivalent code measures ~394µs typical with frequent spikes up to ~2573µs (mean ~912µs), but on Arduino with the Adafruit library getQuat() I get ~2ms. Is my STM32 HAL code below a fair equivalent of the Adafruit getQuat(), so that the times are actually comparable?adfruit bno055 offical library /* USER CODE BEGIN Header *//** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2026 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************
After updating CubeMX to version 6.16.2, we are seeing HRtimer E and F problems which cause our product to fail. Reverting back to 6.15 and regenerating the code allows our device to work. I believe the issue is due to the change in the code database version: MxDb.Version=DB.6.0.161 but I can't be sure as the new version of cubeMX forces values into the HRtimer E and F configurations.Hoping for commiseration and resolution!ThanksRauk
I am using TIM8 to generate a PWM waveform (a /wr signal to an LCD ST7789 controller) and the timer triggers DMA2 to load the next byte onto the PD8-PD15 bus. The 1st byte has to be loaded “manually”.It works, and the ARR CCR3 CCR4 values can be adjusted to get the desired overall period, and data setup and hold times.At 84MHz APB2, I am using ARR=11 to get a 71ns cycle time. So this thing is running pretty fast. The timer resolution is 1/168MHz. The ST7789 can go down to 66ns.The problem is that roughly once in a million writes, bad data is loaded. It shows up as wrong colour pixels. With extensive debugging, AFAICT, the bad data is not present in the source buffer. What I do see on a scope is very rare faint edges on the data, around the /wr +ve edge, on which the data setup/hold time is out of spec. Sometimes the data changes at the same time as the /wr +ve edge!Using ARR=15 or higher, the problem goes away. But then I get too-slow transfers.It looks like there is a very rare huge l
ETH is obviously a dual-clock peripheral, and some of the registers are most probably behind a synchronizer, in the MII clock domain. It’s not unlikely that reading some of those registers imposes waitstates. Writing may not, but then those are subject to the Successive write operations to the same register might not be fully taken into account erratum (which hints at the fact that there’s a 4-MII-clock synchronization mechanism, at least for writing).Can ST confirm or deny, whether reading and/or writing ETH registers imposes waitstates, and in case of yes, can ST please list related registers and also quantify number of waitstates. Here’s why.In particular, we need this to be quantified for the ‘F4xx, but for other families it would be a bonus to have this, too.Thanks,JW
I am using STM32CubeIde version 2.1.1, STM32CubeMX version 6.15.0, Segger JLink, and a STM32G474RB chip.The CubeMX generates a linker file which looks like single bank flash mode, I have uploaded the ioc and ld files.With CubeProgrammer, I set the option bits to DBANK = 0 for single mode or DBANK = 1 for dual mode.In every case the debugger stops flash programming at 0x08010000 (64kB), all beyond 0x08010000 reads 0XFFFFFFFF.That leads to a hard fault right after starting a debugger session.How can I fix this problem?And no, I can’t switch to dual mode as the text section file exceeds 64kB, and I can’t update the CubeMX as all versions 6.16 and 6.17 contain a HRTIM configuration bug.
Hello Sir/Ma’am,I am planning to use two 8-bit DDR3L memory devices with the STM32MP257FAK3. Could you please confirm whether this configuration is compatible with the STM32MP257FAK3?If it is compatible, I would appreciate your guidance on how to implement this configuration. Regards,Shubham
Hi!I have a custom board with STM32MP257F. I have the same electrical setup for HDMI as STM32MP257-DK board have. Hence, the HDMI output is working. But playing sound through HDMI does not work very well. It sounds like the mono .wav files from /etc/share/sound/alsa are recorded under water.I play these sounds by using instructions from https://wiki.st.com/stm32mpu/wiki/How_to_play_audioHere is my sound card. I can play test sounds like pink noise, PWM and sine waves from speaker-test. Here is my hardware setup. I'm using the same HDMI and I2S Device Tree setup as STM32MP257-DK.(No, in mobile view, I cannot post this as a code block because the button "..." is not available)root@watermelon-wine-1aunknown:/usr/share/sounds/alsa# aplay -l**** List of PLAYBACK Hardware Devices ****card 0: STM32MP25DK [STM32MP25-DK], device 0: 400b0000.audio-controller-i2s-hifi i2s-hifi-0 [400b0000.audio-controller-i2s-hifi i2s-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0root@watermelon-wine-1aunkn
Hello,After updating (and later performing a full uninstall/reinstall) to STM32CubeIDE 2.2.0, the "Instruction Stepping Mode" toggle command has completely disappeared, and it appears the underlying command is no longer registered at all — not just hidden from the toolbar.Version:STM32CubeIDE Version: 2.2.0Build: 29186_20260626_0934 (UTC)OS: WindowsSteps to reproduce:Start a debug session on an STM32H7 target Open the Disassembly view Try to enable "Instruction Stepping Mode" to step at the assembly instruction levelObserved behavior:The icon is no longer present in the Debug toolbar Giving focus to the Disassembly view does not automatically enable instruction-level stepping (F5/F6 still step at C source line level only) Going to Window > Perspective > Customize Perspective > Toolbar Visibility, the command "Instruction Stepping Mode" is listed in the Debug toolbar structure, but checking its checkbox and clicking "Make Item Visible" throws the error: "'Instruction Stepping M
Is this version do not copy touchgfx_core.a to project folder? ex) Middlewares\ST\touchgfx\lib\core\cortex_m4f\IAR8.xbecause I did generate code in touchGFX so automatelly remove the files in lib/core.and i can't build on IAR because .ipcf file generated from touchGFX desinger need touchgfx_core.a of path above.
Hello Team,I have used STM6824SWY6F Part in one of my Design and I’m performing an de-rating analysis, so could you please share the below details,1. Junction Temperature2. Junction-to Ambient Thermal resistance3. Junction-to-case Thermal resistance4. Maximum power dissipation Thanks,Deva
Download firmware option on ST87Mxx GUI 2.4.3.0 does not work on EVKITST87M01-2, module on board is “ST87M01-1301”.If I let it run then it says: “Please reset board” and nothing happens after reset, only way out is “Cancel” after which it says “Download Aborted”.If I try to reset board before message “Please reset board” it says: “A problem occurs : error: error sending “AT+IPR=460800”: device responded with “OK”.
--incremental uses a 32-bit additive byte-sum, not a CRC — sum-preserving content changes are silently skippedProduct: STM32CubeProgrammer 2.22.0 (Linux x86-64) Interface: SWD / STLINK-V3 Target: STM32F427 (DEV_ID 0x419)DescriptionThe --incremental download mode decides whether to skip a flash sector by comparing a 32-bit additive byte-sum of the sector's current chip content against the same sum of the new image.The on-target .stldr CheckSum export (@ 0x200001e9, verified in two loader binaries) uses additive accumulation.Because addition is commutative and linear, any two images whose bytes differ only in ways that cancel (adjacent-byte swap, +1/−1 pair, any permutation within a sector) produce identical sums. Those sectors are silently skipped — old bytes remain on chip and the tool reports success.ReproductionTest images A and B (64 KB, four 16 KB sectors) are constructed so that:Sector 1: bytes at offsets 0x4100/0x4101 are 0x11,0x22 in A and 0x22,0x11 in B — an adjacent swap. Addi
When using this microcontroller, after entering low-power mode via the HAL_PWREx_EnterSHUTDOWNMode() function, I found that there is a 0.9V voltage on VCAP. But the program indeed did not continue performing the reset operation.Do I need to turn off anything before entering this mode? I have used peripherals such as DMA (linked list in circular mode), SPI, USART, ADC, and GPIO.The following is my function for entering low power mode. static void DevLowerKeyInit(uint8_t *index) { (void)index; osDelay(200); vTaskSuspendAll(); SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; for (uint32_t i = 0; i < 16; i++) { NVIC->ICER[i] = 0xFFFFFFFF; NVIC->ICPR[i] = 0xFFFFFFFF; } HAL_DBGMCU_DisableDBGStandbyMode(); HAL_DBGMCU_DisableDBGStopMode(); extern void MX_GPIO_ALL_ANALOG_Init(void); MX_GPIO_ALL_ANALOG_Init(); __HAL_PWR_CLEAR_FLAG(PWR_WAKEUP_FLAG2); __HAL_PWR_CLEAR_FLAG(PWR_FLAG_STOPF); __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SBF); __DSB();
In STM32CubeIDE 2.1.1, Project Explorer keeps collapsing constantly.This has been a persistent bug for a very long time and is very annoying.Can't ST just fix this since it is based on Eclipse?
I have been developing an application based on the STEVAL-PTOOL1V1_6S_HL. I have managed to successfully get the motor up and running to the expected RPM using the speed potentiometer functionality. I am now developing my own custom hardware using the STSPIN32F0B and I will not be using the speed potentiometer to control the speed of the motor. Instead my intention is to use the commands such as:MC_ProgramSpeedRampMotor1(2000, 1000);MC_StartMotor1();To set the motor speed and start the motor.I am unsure of how to go about removing the speed potentiometer functionality from the generated code In MC Workbench (V6.4.2) after loading in the STEVAL-PTOOL1V1_6S_HL.ioc the Potentiometer option visible can’t be changed
Sensor is LSM6DSV16X.When I use this .h file in my MCU driver. There is no wrist tilt, but “Wrist tilt detection with accelerometer and gyroscope” can.I don’t know why?
Hi ST Team,Can You pls share the Junction temperature of the following Parts.LSM6DSVTR M24M01E-FMN6TP
Hi,I am trying to use SPI3 from the Cortex-M33 on the STM32MP257F-EV1 running OpenSTLinux 6.6 (Scarthgap).Software versionsBoard: STM32MP257F-EV1 OpenSTLinux: 5.0.15 Kernel: 6.6.116 STM32Cube_FW_MP2_V1.3.0 M33 application based on OpenAMP_TTY_echo_CM33What I changedI modified the OP-TEE RIF configuration file: external-dt-v6.0-stm32mp-r3/stm32mp2/a35-td/optee/stm32mp257f-ev1-ca35tdcid-ostl-rif.dtsiI changed SPI3 ownership from CID1 to CID2: RIFPROT(STM32MP25_RIFSC_SPI3_ID, RIF_UNUSED, RIF_UNLOCK, RIF_NSEC, RIF_PRIV, RIF_CID2, RIF_SEM_DIS, RIF_CFEN)I also assigned the SPI3 GPIO pins to CID2:PB7 PB8 PB10using: RIFPROT(... RIF_CID2 ...)Then I rebuilt:OP-TEE FIPand flashed the new images while keeping the original TF-A.VerificationUsing a small RIF access test on the M33, I verified that SPI3 is now accessible.Before: RIF CRC=0 I2C1=0 UART5=0 SPI3=3After modifying the RIF configuration: RIF CRC=0 I2C1=0 UART5=0 SPI3=0So the peripheral owners
I am working on the STM32N6570-DK and would like to implement FOTA (Firmware Update) through Ethernet.We are planning to perform the firmware update over a wired Ethernet connection, not through wireless or OTA.Could you please suggest which protocol is better for firmware image update:UDP TCP HTTPKindly let me know the recommended approach for reliable firmware updates over Ethernet.Also, if there are any example projects or reference code available for implementing firmware update over Ethernet on STM32N6570-DK, please share them. It will be very helpful for our development.
I have written a code to control two Hall sensor based geared BLDC Motors. I am using DRV-8353rs motor driver for this. We have designed a custom pcb as our motor control board. I have attached a pdf showing the circuit connection which we are following. I am also attaching the relevant code files needed to analyse this as well as a couple of tests I have run till now. I am generating pwm for motor 1 via Tim 1 and motor 2 via Tim 8 ( using complimentary pwm generation from 3 channels i,e CH1 CH1n CH2 CH2N CH3 CH3N). There are mainly two concerns which I am unable to resolve right now. 1. The motor running on tim 8 is always faster than the motor on tim1. The difference is smaller at lower duty cycles and increases along with it. 2. When running in reverse, the current consumption is approximately 1.5 that of what it draws when running in the clockwise. I am an amateur in this domain, and most of my work has been heavily dependent on chatGPT and Claude. For this issue, this is the reply
Hiya. I’m working on a project that writes to a microSD card over SPI using an RTOS (ThreadX in this case). I’ve had a bit of trouble implementing it over the weekend since I’ve seen little/no support for SPI on FileX and I’ve had issues porting over FatFs SPI code over to this project. Looking for some help and guidance with this! I’m not experienced with FileX or FatFs, so the solution could be pretty simple.With FileX, I can initialise but cannot mount the drive (memory pool allocations has been large enough). I used this custom library for the SPI implementation: With FatFs, I was also able to initialise but could not mount the drive. Again, I am pretty new to this stuff, so a series of steps to implement and identify the problems would be greatly appreciated. I can figure out the rest of the code (like writing and reading), I’m just struggling with initialising and mounting.
I’m a beginner with the STM32 series and STM32N6570-DK.I’m using ‘TouchGFX 4.26.1 Designer’ and ‘STM32CubeIDE 2.1.1’ and ‘STM32CubeMX’.First, I created a simple project for my STM32N6570-DK using TouchGFX. And, it displayed an image on the LCD normally.Next, to use the SD card, I configured the fileX and SDMMC2 settings using CubeMX.After that, when I regenerated the code using CubeMX, the LCD screen is not displaying properly. Is there a guide on how to use an SD card in a project created with TouchGFX?
It seems that after I updated MacOS to Tahoe 26.2 the IDE does not show selected text if over multiples lines correctly. This is a nightmare to work with, as it does not show selected text and can make you delete (overwrite) lines while editing.Anyone else? Is there a setting to fix it?
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.