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
I'm looking to implement USB host functionality on an STM32C071 to connect with a single device that sends/receives serial data over USB so the only class I'm interested in is CDC, but I'm having trouble using USBX (I'm not using RTOS). For now I haven't used and read/write functions, my goal was to start by checking the functionality of the callbacks inside "app_usbx_host.c" which are: device inserted/removed/connected/disconnected, enumeration fail and no USB device found. Each one sets a different flag to be handled inside the main loop. I put a breakpoint inside the USB IRQ and when I connect the USB device it stops execution and confirms the breakpoint has been reached, however none of my flags are ever set,. I suspect the reason might be because I haven't done anything to link the USB peripheral to the USBX stack, if the function responsible for that is ux_host_stack_hcd_register, I have no idea how to use it. The function prototype is:UINT _ux_host_stack_hcd_
Hi guys,I'm working on custom board with STM32F411 + spiflash for a project with Touchgfx (partial buffer).At the moment I got spiflash and STM32F411 working via SP1 + DMA and that's fine.I'm using IAR 9.70 for this project and I'm facing an issue with external flash loader when I do a debugging session.When I start a debugging session, flash is programmed and the external loader programs the spiflash too.But on the end of the programming the procedure fails with: Sun Mar 29, 2026 21:45:19: Initial reset was performedSun Mar 29, 2026 21:45:19: Loaded debugee: C:\Program Files\IAR Systems\Embedded Workbench 9.2_3\arm/config/flashloader/ST/FlashSTM32F4xxxRAM128K.outSun Mar 29, 2026 21:45:19: Target resetSun Mar 29, 2026 21:45:26: Unloaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 9.2_3\arm/config/flashloader/ST/FlashSTM32F4xxx.macSun Mar 29, 2026 21:45:26: Loaded macro file: D:\ARM\STM32F411\AlphaTui\CubeMx\AlphaTui\EWARM/icf/ExtSPIFLd.macSun Mar 29, 2026 21:
Hello everyone!I’ve been struggling to create a working application on the P-NUCLEO-WB55. My goal is to implement a Zigbee On/Off Client Sleepy End Device (SED) with NVM support, using buttons for control.I was able to successfully reproduce the On/Off Client SED with NVM and low power consumption (around 3 µA), measured using the ST-Link Power Monitor. However, in that example project, a timer is used to trigger the On/Off commands.I created a new application that uses buttons instead of the timer, but now the device never enters sleep mode and behaves quite strangely. Based on the current consumption spikes, I can see that the device is transmitting data. In Wireshark, I can see that packets are being sent, but Home Assistant does not react to the commands at all.I have attached my app_zigbee.c file. Could someone please help me understand what I am doing wrong?Perhaps someone could share a working example of a Zigbee On/Off Client SED with NVM support and button control. Such an exa
I have established BLE advertisement and connection is established successfully between ST BLE toolbox and the stm32wb55 based board. I am unable to read the chateristic value from the st ble tool box. My code is in custom_app.c file I2C_HandleTypeDef hi2c1; int sizecharwrite; uint8_t my_value =5; float adc_voltage_ble = ADS1115_readSingleEnded_AIN0(&hi2c1); uint8_t pPayload; sizecharwrite=snprintf( ble_voltage,sizeof(ble_voltage),"%0.2f", adc_voltage_ble ); if (sizecharwrite < 0 || sizecharwrite >= sizeof(ble_voltage)) { // Error or truncation return; } memcpy(pPayload,&ble_voltage, sizeof(ble_voltage)); In the cutom_stm.c file aci_gatt_update_char_value(CustomChemdetectHdle, CustomCharwriteHdle, 0, /* charValOffset */ SizeCharwrite, /* charValueLen */ (uint8_t ) pPayload); Edited to apply source code formatting - please see How to insert source code for future reference.
Hi Team,We are observing persistent and repeatable debug connectivity issues on multiple custom boards based on the STM32H745BIT6 MCU. These boards were initially functioning as expected; however, after repeated debug sessions, they started exhibiting failures. We request your support in identifying the potential root causes and guidance on recovery. We have performed Full Chip erase also whenever it was possible. Below are our consolidated observations captured across multiple boards.Observed IssuesDebug Interface Failures After Multiple SessionsAfter several debug sessions, the following errors are observed intermittently:TARGET_HELD_UNDER_RESETTARGET_NOT_HALTEDTARGET_NO_DEVICEError: Unable to get core IDInconsistent Connectivity Between ToolsThe device intermittently connects using STM32CubeProgrammer.The same device frequently fails to connect in Debug mode using STM32CubeIDE.Loss of Debug Connection During RuntimeDuring debugging, the controller runs for a few seconds.T
We are currently using the NDefLib repository hosted on mbed.com (NDefLib | Mbed). As Arm has announced that all Mercurial-hosted repositories on mbed.com will be permanently deleted in July 2026 due to the retirement of the Mbed platform, we would like to seek clarification regarding the future availability of this library.Could you kindly confirm whether the ST/NDefLib library will be migrated and made available on the ST portal or any other official ST platform after the shutdown of mbed.com? This information will help us plan our migration strategy and ensure we continue to rely on the latest supported version of the library.Thank you very much for your support.
The list of #include in the main.c file is lost when regerating stm32cubemx with new GPIO config :Previous : /* 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. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "string.h" #include "exti.h" #include "embedrt_debug.h" #include <stdio.h> #include <stdbool.h>After regeneration with mx: /* USER CO
I have a program where I have TIM2 CH1 set up in output compare mode. Approximately 0.5 ms after the timer is reset, CH1's compare value is reached. This triggers the CH1 DMA, which is a dummy DMA on DMA1 channel 1. The SPI TX DMA is synced to the TIM2_CH1 DMA (with a request count of 16, to allow 16 bytes through the SPI), and therefore if it is armed should automatically start at that moment. The purpose of this is to eventually provide an interrupt-free delay for an external SPI slave that requires a 350ns delay between CSn active and SCLK active.I have this all mostly working, but my problem is that about 5% of the time, the SPI DMA does not complete. I can't figure out what in my code is allowing this to happen. The basic structure is:Arm SPI DMAs.Reset TIM2 counter.Wait until the DMA completes. (This should be triggered by TIM2 reaching the compare value.However, for reasons I cannot understand, about 5-10% of my transfers never appear to start -- I wait for a long period of time
I have an stm32h7s78-dk and I created a GUI with TouchGFX. I am trying to transmit some data via UART when a button is pressed. I have the virtual function triggering in my MainDisplay and I was trying to use FreeRTOS and Queues to communicate from the virtual function from the button press to the uart task that I created via STMCubeMX. For some reason though, the screen stays black when I try to use an if(xQueueReceive(queueHandle, &message, 0) == pdPASS) { printf("Message received"); }in my uart task. If I comment out this code then everything works fine and the GUI is visible. I'm not sure what I'm doing wrong. Here is my main.c/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2023 STMicroelectronics. * All rights rese
(HAL_SPI_Transmit_DMA works partially, HAL_DMA_Start_IT not working)I’m working with an STM32U5 MCU using SPI3 with GPDMA to drive an ILI9341 display. I’m trying to transmit a larger buffer (~23040 bytes), but display only receives about 1024 bytes, and goes into HAL_SPI_STATE_BUSY_TX forever.Function used: HAL_SPI_Transmit_DMA()Configs: Thanks in advance !
My FMC clock, set to continuously generated, only cycles during a bus transaction.On my STM32N657I0H3Q, I have the following setup:FMC enabled in applicationChip Select NE1Muxed PSRAMData/Address: 16 bitsClock: Burst Read WriteAddressValid: YesWait: SynchronousThen, in the configuration, I have "CLK generated continuously" set. I have confirmed all of these settings in the resulting fmc.c code. I've also verified at runtime that hsram1.Instance->BTCR[FMC_NORSRAM_BANK1] = 0x183997(Where 1<<20 -- 0x1000000 is continuous clock generation).Meanwhile, my oscilloscope shows the FMC_CLK waveform:Clearly not continuous!
Dear all,I am struggling with getting a good SFLP result, that does not drift too much and does not appear jittery. I went trough most of the posts here but I am still not able to get good results (approx. factor 10 higher drift then according to the data sheet). in one of the posts I found the explanation about the chain of the SPFL: that was the one im ent: For now, you have the answers: SFLP (as MLC/FSM and other embedded functions) take its input from LPF1 in the accelerometer chain, and from LPF2 in the gyroscope chain; their setting will therefore impact SFLP. Higher ODR leads to a more accurate gyroscope integration, but sensor RMS noise will also be higher. Gyroscope saturation should be avoided, accelerometer saturation matters less. Lower full scale will increase the resolution and therefore the accuracy, but the risk of saturation will be higher. It is a delicate balance that is specific to every application. Post in forum According to th
seriously i just want to design my product around an mp2. literally any. i cant pick one because none of them are in stock.im clicking every single mp2 variant that exists. then im picking the sub variant, and then the package. like 3 trees deep. not a single one ive found so far is in stock. these have been out for like years now. how am i supposed to use this chip in my product if it's availability is near non existent?really bad look for st here.
When a USART is configured without a clock, the code generator treats it as a UART and assigns HAL_UART_IRQHandler as the interrupt handler. However, within this handler, there is a blocking operation during the idle process:(void)HAL_DMA_Abort(huart->hdmarx);When certain error conditions occur, the code can become stuck in HAL_GetTick(). This happens because the SysTick priority is lower than that of the UART interrupt. I have observed this behavior multiple times, particularly when noise is present on the UART signal line.Has Anyone seen this situation before?
Hello,I have two Winbond W956D8MBYA (64Mb, x8) HyperRAM chips connectedto XSPI1 on STM32H7S3 in dual memory mode (DMM=1):- Chip #0 → IO[7:0] + DQS0- Chip #1 → IO[15:8] + DQS1- Shared: CLK, NCLK, NCSI need to run at 200 MHz, so I need to configure CR0 on both chips:- Initial latency = 7 cycles (default is 6, valid only up to 166 MHz)- Fixed latency (required for dual mode per RM0477)Problem:According to RM0477, in HyperBus 16-bit dual mode:1. Variable latency is not supported (LM bit in XSPI_HLCR must be set)2. Register space access uses only IO[7:0]. Quote from RM0477:"IO8 to IO15 being not used but driven by the controller"So I can only access registers of chip #0.I also tried MSEL bit in XSPI_CR to switch to IO[15:8] in single memHyperBus mode - no effect.Questions:1. How to write CR0 to chip #1 connected to IO[15:8]?2. Is there any way to initialize each chip separately beforeswitching to dual mode?3. Does the controller duplicate data on IO[15:8] during registerwrite in dual mode?M
When I click this button, my mouse keeps spinning but the program does not open, and there is no error message. I tried using Refresh Data, but it had no effect.
Hello ST Community!I've been trying to recreate the DCMIPP_ContinuousMode example with STM32CubeIDE, but have been running into some issues with the IMX335_Probe function, the ID read by the I2C bus never matches the expected define IMX335_CHIP_ID. The original example runs completely fine in the STM32N6570-DK.- AXISRAM3 (0x34200000) is being used as the address for the DCMIPP CSI Pipe.- ISP Middleware does not return any errors in initialization.- All files regarding IMX335 registers and functions match with the original examples. Same for all the BSP drivers.- RIF has been configured for all peripherals involved.- AXISRAM3 has been enabled in the CubeMX configurations, and it's clock has also been enabled.static void IMX335_Probe(uint32_t Resolution, uint32_t PixelFormat) { IMX335_IO_t IOCtx; uint32_t id; /* Configure the camera driver */ IOCtx.Address = CAMERA_IMX335_ADDRESS; IOCtx.Init = BSP_I2C1_Init; IOCtx.DeInit = BSP_I2C1_DeInit; IOCtx.ReadReg = BSP_I2C1_ReadReg16; IOC
Recently, I encountered a tricky problem, I used STM32F405VGT6 this IC, but I found that it could not enter DFU mode normally, after repeated troubleshooting, I found that when the chip was USB probed, HSE was detected and did not vibrate, I also saw a similar article on the forum, I noticed that in the article, changing F405 to F429 can enter DFU mode normally.Further investigation, comparing the difference between the two ICs, it was found that the HSE start-up timeout time of the F405 IC was too short, and the HSE timeout time of the F405 was found from AN2606, and the version of the v3 version was 0.79ms, and the version of the v9 was relatively normal with 96msI want a timeout of 0.79ms, how do I do that? Is there any way to start HSE within 0.79ms of bootloder version v3? I hope the official can give an answer, thank you very much
Hi, I can't read 40bit with my BlueNRG-1 and help wit timer in free-running. My us is ok but when i tried to read, it stop before read all 40 bits. Here i post my driver dht11. In main for test uint8_t h, t; if (DHT11_Read(&h, &t)) { printf("Humidité = %d %% Temp = %d C\n", h, t); } else { printf("Erreur DHT11\n"); } Thank
How can I get the large signal model for SD2942 TRANSISTOR
Hi ST Family,We are using STM32H745BIT6 MCU in our design and interfaced the same to multiple I2C slaves. For I2C lines, we have connected pull up of 2.2K to 5V power rail. In STM32CubeMX, we are enabling "No pullup or No pull down" for I2C lines.Since this MCU family is "not true open drain" ( Page 202 of datasheet), we need to know if we can continue with this configuration.Over the long run, do we see any issues of I2C engine going bad because of this configuration.?Regards..
Hey there community, I am having trouble fixing an interesting scenario on Usart communication,With the same software doing a reception on a given usart interface, It has been noticed the reception segregates one connection but not the other, Both connections having the same configurationIt has been tested that the board on which it fails has connection on that line and that the connection actually reaches the intended pin for sure by testing the Usart Rx pin when set up as a both a GPIO input and latter as an output.by playing with this GPIO input and output mechanisms on that pin. and observing respectively from both the led toggles on the board intended to signify sign of life on the pin and, logic analyzer to see the GPIO state when toggled from with in the system.Note, we are able to see the usart signals on both and are able to decode the messages on a logic analyzer for both, but the stm does not receive the message on one connection.We appreciate any insight into the Issue
I am trying to find some information on an ancient (2002?) STMicroelectronics surface-mounted device. It has14 pins and is labeled "ZVF411." It is used in a PC board that controls three automotive gauges in a Chevrolet SSR. I have tried searching the internet, to no avail. Can someone help me, please?
Hello I have a STM32f469-discovery. I have trouble loading code/programming. I have successfully programmed the board via the Flowcode software. Also I can use the Hex or Bin generated file from Flowcode, import it in the STlink utility and load it on the board. That works. What I can't do is to open a demo or example for the touchGfx designer and program the board. I click on the "program and run target" but ends up in error"ST-LINK error (DEV_CONNECT_ERR)c:/TouchGFXProjects/MyApplication_7/gcc/include/flash_sections_int_ext.mk:2: recipe for target '_extflash_' failedmake[1]: *** [_extflash_] Error 1../gcc/Makefile:53: recipe for target 'flash' failedmake: *** [flash] Error 2FailedIn the touchGfx there is no indication that the board is connected. I get indication only on the STlinkIf I select the "Generate code" it successfully does it but later on I dont know where to load that code in order to use it to program my board via another software. Is there a specific sequence f
I have an issue with PMIC. It seems that Op-tee won't start och activate the PMIC. Do you know why? Any suggestion? The error is 0xffff0008 = TEE_ERROR_ITEM_NOT_FOUND.Notice that I have copied the DT from DK board. F/TC:0 0 probe_driver_node:543 Probing stm32-gpu on node gpu@48280000 D/TC:0 0 probe_driver_node:556 element: stm32-gpu on node gpu@48280000 deferred 3 time(s) F/TC:0 0 probe_driver_node:543 Probing stm32_pmic2 on node stpmic2@33 F/TC:0 0 stm32_pmic2_probe:923 Probe stpmic2 F/TC:0 0 initialize_pmic2:893 Initialize stpmic2 F/TC:0 0 lock_i2c_bus_access:796 thread access F/TC:0 0 unlock_i2c_bus_access:837 thread access completed F/TC:0 0 lock_i2c_bus_access:796 thread access F/TC:0 0 unlock_i2c_bus_access:837 thread access completed F/TC:0 0 stpmic2_register_read:259 REG[0 v=0x21 F/TC:0 0 lock_i2c_bus_access:796 thread access F/TC:0 0 unlock_i2c_bus_access:837 thread access completed F/TC:0 0 stpmic2_register_read:259 REG[0x1 v=0x11 I/TC: PMIC STPMIC REFID:2.A V1.1 F/TC:0
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.