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 STM32 Community,I am stuck in a critical situation with my STM32H533RE custom board and need help recovering it. I have exhausted all methods I know.- Hardware Setup: - MCU: STM32H533RE (custom PCB, not Nucleo) - ST-LINK: External ST-LINK V2 (Firmware V2J46S7) - BOOT0: carry out the cia test point - USB: DP/DM routed to test points (wires soldered for access) - SWD: SWCLK , SWDIO , NRST (Pin 2) connected to programming header- TrustZone Configuration - Configured Secure and Non-Secure world using STM32CubeMX - Secure peripherals: SPI1, SPI3, UART4, ICache, DCache - Flash watermarks configured for secure/non-secure regions- What Happened (Step by Step) 1. Device was originally in **Open state (0xED)** — everything worked fine 2. I could connect via SWD in Normal mode and read all memory including secure regions 3. I attempted to transition
Hello People, I’m trying to make tracing on a Board containing either a STM32H743 or a STM32H747 work and it drives me crazy. I need to debug a custom build board from our company, where I have a uVision Project for it and a circuit board, but no Cube-Project. It is important to debug UI with timestamps, so that we can measure how long the UI takes. First of all, I tried to debug it with Ozone. I downloaded the tracing example for the STM32H743 Eval Board and tried tracing on the Eval Board, which worked. So I planned to do tracing on our own hardware on a very minimalistic Project to check to make it work. I than generated a very minimalistic Cube-Project to count a value and to trace it and generated a uVison-Project from it. I somehow made it work to trace it in Ozone, as far as I remember correctly I used the pex-File for it. But unfortunately, I don’t know what I did wrong, the tracing does not capture any data any longer. I also tried the same with
Where can I download the STM32H503 Nucleo schematic?
We need further clarification regarding the difference between the above ICs.We recently purchased the mentioned STM32 MCU, but received two different variants. In one IC, the ST logo on the right side has the marking “e3” with “L” outside the circle. In the other IC, the ST logo on the right side has the marking “e4” with “L” outside the circle.Kindly clarify the difference between the “e3” and “e4” markings and confirm whether both ICs are equivalent in specification and performance.
I am developing a device that implements the USB device class.According to application note AN4879 "Introduction to USB Hardware and PCB Design Considerations Using STM32 Microcontrollers" it is written as follows:Based on the USB specification, a USB device must use VBUS sensing detection. When the device detects the host presence, it connects its pull-up resistor to either a D+ or D- data signal. This allows the host to detect the device presence on the bus. There are two cases: • The USB device is bus-powered. VBUS sensing is not mandatory (USB is always connected when the device is powered)• The device is self-powered. VBUS sensing is mandatory. Pin PA9, a five volt-tolerant pin, which includes an additional function natively dedicated to VBUS sensing. I have an option when the device is self-powered. Therefore, VBUS sensing is mandatory.It is also written that the user must avoid the situation when the MCU is not powered, and a 5 V VBUS is connected to PA9.The absolute maximu
Hi,I am trying to migrate a STM32F767ZGT6 based project to STM32H743ZGT6. According to AN4936, they should be pin to pin compatible. When I manually compared the each pin, and assigned the state of each PIN as used in STM32F767ZGT6 to STM32H743ZGT6, they seem indeed to be P2P compatible too. But If I try to list PIN compatible MCUs in STM32CubeMx, as of the latest v6.17.0, STM32H743ZGT6 is not listed. Please see the screenshot below:Am I missing something? Or this is a bug in CubeMX? I just don't want to throw 100s of $ down the sink. I attached my IOC file to see if anyone can reproduce my problem.Thanks.
Hello everyone. I have recently made my own STM32 board based on the STM32F405. After soldering all the components and testing all pads and connections, finding them to be wired correctly and checking that the 3.3V is being supplied to all the correct pins, I tried to upload some code but to my shock the STM32F405 isn't establishing a connection via the ST-Link V2 nor the USB cable. After trying multiple fixes, I suspect the issue might be the STM32F405 chip that I got off AliExpress itself. So before I took any further steps to replace it, I decided to post my schematics on here for review in case the problem was in my PCB design. If you have any remarks on what might have caused this problem, please share them. NOTE: The -B label is referring to ground, and P is the VCC. schematics:
Hello, I have a problem verifying the HCLK frequency for Nucleo-C562RE. I configure the clock to 144MHz (see image below). When I start the application I print the HCLK frequency: SEGGER_RTT_printf("---- MCU started at %lu[Hz] ----\n", HAL_RCC_GetHCLKFreq()); I get 48MHz: ---- MCU started at 48000000[Hz] ---- While stepping through the HAL_Init code I see that the code thinks that the clock source is LL_RCC_SYS_CLKSOURCE_STATUS_HSIDIV3 (48MHz) uint32_t HAL_RCC_GetSYSCLKFreq(void) { uint32_t sysclockfreq; uint32_t sysclk_source; sysclk_source = LL_RCC_GetSysClkSource(); if (sysclk_source == LL_RCC_SYS_CLKSOURCE_STATUS_HSIS) { /* HSIS used as system clock source */ sysclockfreq = HSI_VALUE; } else if (sysclk_source == LL_RCC_SYS_CLKSOURCE_STATUS_HSIDIV3) { /* HSIS used as system clock source */ sysclockfreq = HSI_VALUE / 3U; } #if defined(HSE_VALUE) else if (sysclk_source == LL_RCC_SYS_CLKSOURCE_STATUS_HSE) { /* HSE used as system clock source */ sysclockfreq = HSE_VALUE; } #endi
Hello, I am currently developing a project that requires an ultra-low-power BLE-based indoor localization tag. The device should periodically wake up and advertise, remaining in standby mode (targeting approximately 500 nA to 1 µA) for about 90% of the time. I am using NUCLEO-STM32WBA65RI. For an initial test, I plan to configure the system to stay in standby for around 5 minutes, then wake up and advertise for 30 seconds. I have already studied the documentation regarding STM32 low-power modes and reviewed examples such as the Heart Rate application, where BLE is used together with low-power modes. However, I still have some doubts. From my understanding, these examples are designed for continuous radio operation and rely on SRAM1/SRAM2/RADIO retention, which increases power consumption. It also appears that some internal mechanism - possibly the UTIL_TIMER based on RTC or the 2.4 GHz radio timer - is responsible for periodically waking the system to handle BLE activity. Could
Hello, I can't cope with interrupt transactions. (I need it later for composite device).For tests I generated HID device example. When device is connected to host it appears correctly in the system.For interrupt endpoint configured 0x81.I need to answer for interrupt transactions, but which callback is responsible for this?I start debugging from very deep. Breakpoints were set in HAL_PCD_IRQHandler(). As I understand in this functions all usb transactions starts, but I see only interrupts from ZERO endpoint. Dumping by WireShark I see host sends requests to my device x.xx.1 and responses.Why I don't see interrupts for 0x81 (also I check 0x01) in HAL_PCD_IRQHandler()?What I do wrong?
Hi,1. [Part Number] STM32H7R7I8T6 2. [Environment] x-cube-st67 1.2 version and latest cube IDE.3. [Schematics] If it is a custom board --> Share the schematics using “Attach file” option or inserting some image.4. [Details] I am using STM32H7R7I8T6 MCU and integrate the x-cube-st67 related codes.But i am facing this error: sem_if_ready not received.xReturned = xSemaphoreTake( mdm->sem_if_ready, pdMS_TO_TICKS(time_ms) ); if (xReturned != pdPASS) { SYS_LOG_ERROR("sem_if_ready not received\n"); return W61_STATUS_ERROR; } i compared the h7r3 example included ioc file, no idea what's difference.Meanwhile, I also update the ST67 firmware by this command:.\QConn_Flash\QConn_Flash_Cmd.exe --port COM11 --config .\NCP_Binaries\mission_t01_flash_prog_cfg_v2.0.89.ini --efuse .\NCP_Binaries\efusedata.binBut still got the issue. The CS pin, RDY PIN, EN pin are all Hi. boot pin is low.SPI CLK no output. Any ideas? codes is in attached.5.&n
I got another strange issue with a STM32F3, as usual related to DMA.The problem relates to an "old" DAC / DMA example I tried to port to a different MCU.The original is called "DMA_RAM_DAC", and is part of the V1.1.0 firmware package for the F303 discovery board.(.../STM32F3-Discovery_FW_V1.1.0/Project/Peripheral_Examples/DMA_RAM_DAC)Building and running it on this target, it works fine.However, my actual target hardware is the F3 Nucleo32. This board has a STM32F303K8T, instead of the 'huge' STM32F303VCT on the F3-Discovery.The relevant difference here is, the mentioned example uses DMA2 channel3, which does not exist on smaller devices like the STM32F303K8. According to the reference manual, the relevant DMA request can be mapped to DMA1, by setting corresponding bits in SYSCFG (RM0316 Rev.10, page 267, 269).To do this DMA request mapping, bit 13 in SYSCFG->CFGR1 needs to be set.And here is were the problem starts.No attempt to write to this register seems to have any effect
I’m working with an STM32H533 and would like to generate an SFI firmware using STM32CubeProgrammer.Is it possible to use the SFI procedure without an HSM?In particular, can the license file be generated without the card?
Hello. Could someone please recommend a good power board that can power and control two gimbal 3-phase BLDC 12V motors with encoders AS5048A https://www.sparkfun.com/gimbal-motor-with-encoder-12v-587rpm.html ? I use the STM32 NUCLEO-64 F401RE microcontroller board. Thank you.
DescriptionHello,we are currently integrating secure boot on an STM32MP15-based platform using the ST OpenSTLinux ecosystem (TF-A + OP-TEE + U-Boot + RAUC / ST update solution here: https://github.com/STMicroelectronics/meta-st-ota/).During this work, we identified a potential gap in the chain of trust related to the boot filesystem (bootfs), specifically the use of a mutable extlinux.conf.ProblemIn our current setup:TF-A authenticates FIP (OP-TEE + U-Boot)U-Boot supports FIT signature verification for kernel / DTB / initramfsextlinux.conf is stored in bootfs (ext4) and remains writable - this post-install.sh changes rootfs partuuid after each update. U-Boot uses extlinux.conf to select kernel / DTB and to define kernel command line (`root=PARTUUID=e91c4e10...`). This PARTUUID is changed after the update. With secure boot enabled, if extlinux remains mutable, it cannot be signature-protected, which violates the chain of trust.QuestionWhat is the recommende
I'm using the LCD of the STM32U073K8, but the program failed to initialize the LCD. After checking, I found that the STM32U073K8 doesn't have the VLCD pin. Is the STM32U073K8 not compatible with the LCD peripheral? Or are there other settings?
Downloaded latest version of STM32-ISP-IQTune from the ST website today and installed it on my macbook, when I tried to launch the desktop application I get this attached error:
Hello ST Community,I am working on a USB Video Class (UVC) application using STM32H7S3L8 (NUCLEO-H7S3L8) in USB HS device mode.Requirement:Streaming 640×480 30fps (YUY2, uncompressed), requiring ~18.4 MB/s bandwidth.With the STM32 HAL, I can only achieve:~8.2 MB/s (1024 bytes × 1 transaction per microframe)This limits performance to ~13 fps at 640×480.USB 2.0 specification allows up to 3 transactions per microframe for high-speed isochronous endpoints.However in STM32 HAL:ep->maxpacket = ep_mps & 0x7FFU masks transaction bitsNo MC (multi-count) handling in DIEPCTLEndpoint structure has no field for multiple transactionsHAL does not configure high-bandwidth isochronous mode Does STM32H7 USB OTG HS support high-bandwidth isochronous transfers (2x/3x transactions per microframe) in device mode?If supported:Is there any register-level guidance to configure this?Any example or application note available?
Hi C++ Developers, As you may know, developers downliading Cube tools from st.com will receive an e-mail asking them to provide feedback. From this feedback we see some complaints vs the C++ support in STM32CubeIDE. The complaints are however lacking details. We are aware of several C++ topics which could be improved. But without detail, it is hard to tell what is seen as the highest priority... Here is where we need your help! Brainstorming on the main C++ issues in STM32CubeIDE (and Cube ecosystem) I arrive at this list of issues:: CubeMX issue: CubeMX does not generate a main.cpp, I have repeatedly seen beginner struggle to create their main.cpp and make calls to C code... HAL issue: Nor do we offer C++ based HAL drivers or any other middleware. CubeIDE editor: The Eclipse/CDT indexer providing auto-complete and other editor features in Eclipse was largely sponsored by Intel. There is much less up-stream activity on C++ support
Hello,I am currently working with the NUCLEO-STM32WBA65RI. My main goal is to place the board in Standby mode and periodically wake it up to perform BLE advertising (as a Peripheral), while still allowing it to handle a possible connection request from another device.So far, I have followed the "Standby with RTC" example to implement low-power operation. I would now like to integrate the BLE stack to enable advertising during the wake-up periods. The intended behavior is for the device to sleep for 1 minute, wake up via the RTC, perform advertising for a short duration, and then return to Standby mode.From the documentation, I understand that the radio and Link Layer must be in deep sleep for Standby mode to be properly achieved. Could you provide some guidance on the correct way to ensure this state? Additionally, what happens if the radio is not in deep sleep when attempting to enter Standby mode?Best regards,
Yesterday I built a model from a 256x256x3 .tflite. The Cloud produced a zip file that included a network_atonbuf.xSPI2.raw file. This file is about 27KB in size. What triggered the change from the network_data files?The network.c knew about this .raw file and pointed at it 0x71000000. That's all good. I just rename it to .bin and loadi it with CubeProgrammer. But what I don't understand is the test for version: #if LL_ATON_VERSION_MAJOR != 1 || LL_ATON_VERSION_MINOR != 1 || LL_ATON_VERSION_MICRO != 3 || LL_ATON_VERSION_DEV != 262 # error "Possible mismatch in ll_aton library used" #endifWorking with the STM32N6-GettingStarted-ObjectDetection as my base this version test failed in Make. I just commented it out. Am I going to have a problem?
Hi I configured the DFSDM1 on the STM32H753VIT6 for a MEMS Mic.I got the problem that the DMA Callback on (Half)/Full buffer never gets called. I used AN5027 as guideline and the DFSDM Audio ExampleD-Cache disabled and set the Audio Sampling Frequency low (4kHz) to debug over UART. Main (snippets):DFSDM_Filter_HandleTypeDef hdfsdm1_filter0; DFSDM_Channel_HandleTypeDef hdfsdm1_channel4; DMA_HandleTypeDef hdma_dfsdm1_flt0; . . . . int32_t LeftRecBuff[1024]; void HAL_DFSDM_FilterRegConvHalfCpltCallback(DFSDM_Filter_HandleTypeDef *hdfsdm_filter) { /*Never Reached*/ } int main(void) { HAL_Init(); SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_DFSDM1_Init(); /* USER CODE BEGIN 2 */ // imu_init(&hspi4, GPIOE, GPIO_PIN_4 /* IIM-42652 CS */); HAL_DFSDM_FilterRegularStart_DMA(&hdfsdm1_filter0, LeftRecBuff, 1024); while (1) {} }Config (CubeMX)/** * @brief DFSDM1 Initialization Function * @PAram None *
Hello, I designed a custom control board based on STM32G431CBT6 and before manufacturing the PCB I would like to make sure there are no fundamental hardware mistakes. My main concern is not firmware but hardware connections. I would appreciate if you can review especially: SWD programming interface connections Power supply and decoupling capacitors BOOT0 and NRST configuration VDDA and VREF+ connections CAN transceiver interface (TJA1051/3 with VIO = 3.3V) Anything that may prevent programming or startup The goal is to verify that the MCU can be programmed and start reliably after assembly. I am attaching the schematic below. Thank you very much for your time. MCU: STM32G431CBT6 Supply: 3.3V regulator Debugger: ST-Link via SWD
I am currently working on the STM32N6570-DK board and need support for MIPI camera interfacing using CSI (not USB).RequirementInterface a MIPI camera using CSIRead camera dataEncode the dataSend it to a PC via Ethernet using UDP streamingSupport NeededHow to configure and enable CSI (MIPI camera interface)Any reference examples/projects for camera bring-upGuidance on reading camera data from CSIAny examples for encoding + Ethernet (UDP) streamingKindly provide any documentation or example projects that can help achieve this.
Post edited by ST community moderator. In next time please use </> to share a code. HI, I have Implemented ADC1 - DMA with one channel and ADC2 - DMA with 7 channels and im transmitting data through UART IT. I want to know if this code works usually. void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if (hadc->Instance == ADC1) Print_ADC_Values_IT(); if (hadc->Instance == hadc2.Instance) Print_ADC_Values_IT(); } hadc2 is workin only when i disable HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adc1_value, 1); Here's the overview of my code: MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_ADC2_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ // HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED); HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED); // Start ADC1 (1 channel) // HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adc1_value, 1); // Start ADC2 (7 channels) HAL_ADC_Start_DMA(&hadc2, (uint32_t*)adc2_values, ADC2_CHANNE
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.