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
Heyho, wanted to check if C5 might be good for next project and have a first look at MX2. Installed it, started project with C562 / Nucleo - and nothing happens, except for a short error message in the bottom right corner of the window: "error when downloading packs" ( + some file name). Further info: - Windows 11 - started MX2 first as normal user, then as admin, same behaviour - all other STM32 tools running fine (MX1, IDE, Prog)
hello ST Community,Is it possible to generate a binary file that is a *.elf file from a project developed by STM32CubeIDE?Using the correct settings for generating *.bin files.The *.bin file would be used to create a bootloader via UART for one of the STM32 microcontrollers.Thanks for your valuable support.
We have a custom board with an STM32MP151A and STPMIC1. The PMIC is connected to I2C4 over pins PD12 and PD13.In the process of migrating our software from OpenSTLinux 6.0 to 6.2, I initially got stuck into an optee panic (attached optee-panic.log with optee log level set to 3); after some investigation I *think* I figured out that the problem was coming from I2C4 being assigned to the secure context, but pins D12/D13 not being secure.I managed to go around that by making the I2C4 controller non-secure and removing all reference to it from the optee dts, but then the kernel was hanging forever (attached optee-pass-kernel-fail.log) until I also marked the RCC as non-secure for optee and changed the clock definitions in the kernel to not use SCMI (to do so I had to patch stm32mp15-scmi.dtsi to be empty).I now have a booting configuration by essentially avoiding SCMI for clocks and regulators (I have attached the kernel and optee dts), but I am wondering whether this is necessary bec
Yesterday I was able to generate a cmake project which included main.c/h files. I opened the project in VS Code but had errors trying to build. I had VS code fix the errors so now I am able to build the project. Today, I generated another project but the main.c/h files are missing as seen in the screen shot. I've timed the project generation and it takes 3 minutes to generate a project. Why so long? Why are the IOC files created outside of the project folder?
I am using two Nucleo-STM32WL33 board, one as a transmitter and one as a receiver. The transmitter sends two messages in ASK modulation and the receiver records the messages in IQ sampling mode.Below is a visualization of the IQ samples time series.The logical 1s are quite clear and all have a similar amplitude, however for some reason there seems to be a sinus-like subsignal whenver the transmitter sends a logical 0. I would have expected an amplitude close to zero, like seen during the time frame between the two messages or after the end of the second message. There is a distinct 1/4 period phase shift between I and Q component, so its clear to me this has something to do with the IQ modulation itself. But what is causing this sinus subsignal? Is it caused by the receiver or transmitter? How can I remove it?
Hello, I am currently working on a ble project on the stm32wb09ke nucleo board that uses the stm32 sequencer. My application is working as intended but I want to make it low power for optimal battery life. If i understand correctly the sequencer itself handles when to enter the Idle state if there is no current running task. From the HeartRate example I've copied the logic for the "UTIL_SEQ_Idle" function. The problem I'm having is that the "UTIL_SEQ_Idle" function is not included in "UTIL_SEQ_Run" as it is in the HeartRate example and is therefore never called. Why is this part not included/generated? Should I just copy whats in the example? My UTIL_SEQ_Run: if ((local_evtset & EvtWaited)== 0U) { UTIL_SEQ_PreIdle( ); UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE( ); local_taskset = TaskSet; local_evtset = EvtSet; local_taskmask = TaskMask; UTIL_SEQ_EXIT_CRITICAL_SECTION_IDLE( ); UTIL_SEQ_PostIdle( ); } HeartRate example: if ((local_evtset & EvtWaited)== 0U) { UTIL_SEQ_PreId
The problem is that the transceiver will set the RX pin high at boot , this will put the G431 in boot mode and never start . The question is how to set and reset the nSWBOOT0 bit in the program . I mean , if I am right ::2) at setup (yes , Arduino) , the nSWBOOT0 bit is set in order to disable BOOT0 pin , thus allow normal (CAN bus) operation after boot on PB8 .1) but this will reset the STM32 , so before doing 2) , one need to read the level of nSWBOOT0 , and only set it if it is 0 . (one time action)3) but this will brick the DFU uploading . To reset this , for exemple by a customer In order to update the firmware , one have to reset the nSWBOOT0 by the program . This could be done by a button , or by a code received trough USB .Hope this is clear enough (and correct of course) . But doing this is not that simple for me , so I wonder if there is a working code available for this (sure , some people have done the trick successfully ) ?Thank you !Edit : c
Hello,I am currently experiencing some difficulties using the NUCLEO-N657X0-Q board.I am using STLinkUpgrade v3.17.10, and the device ID is correctly recognized as 003500244142501120353451, as shown in the attached image.However, when I click "Open in update mode," the PWR_STATUS LED on the Nucleo board turns off and the connection is dropped.I am not sure if this specific update is critical for operation, but I would greatly appreciate any guidance or help to resolve this issue.
I'm having an issue with STM32CubeProgrammer v2.22.0. I'm making an external loader for the stm32U031R8 (on the nucleo board). My spi flash code works fine in the my actual application program. If I strip my code down (removing Read,Verify, instrumentation, etc) and get it under the 8K of SRAM1, the programmer works. Once my object is into SRAM2 (0x20002000-0x20002FFF) the programmer behaves incorrectly.First off, to make sure I understand whats going on, in the good case:every operation begins withw ap 0 reg 15 PC (0x20000000)w ap 0 reg 17 MSP (0x20000500)w ap 0 reg 16 xPSR (0x01000000)w ap 0 @0x20001CA0 : 0x00000200 bytes, Data 0x00000000...w ap 0 @0x20000000 : 0x00000004 bytes, Data 0x0000BE00...w ap 0 @0x20000004 : 0x0000186C bytes, Data 0xDEC0ADDE...Not sure why 0x20000500 is chosen as the SP, or what those 0x200 bytes written at 0x20001CA0 are, but I see that a bkpt instruction is written at the base of SRAM1 and then my object is written after that, which makes sense.Then I see
NUCLEO F767ZI, CubeIDE 2.1.1, CubeMX 6.17.0I'm trying to set up UART with printf()#include <stdio.h> UART_HandleTypeDef huart3; static void MX_USART3_UART_Init(void); int __io_putchar(int ch) { HAL_UART_Transmit(&huart3, (uint8_t *)ch, 1, 10); return ch; } .... // in main // in while prinf("UART test\r\n"); // MX generated USART3 init static void MX_USART3_UART_Init(void) { /* USER CODE BEGIN USART3_Init 0 */ /* USER CODE END USART3_Init 0 */ /* USER CODE BEGIN USART3_Init 1 */ /* USER CODE END USART3_Init 1 */ huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART
Quick question. I am working on two projects:One is a dual-core project, and uses the STM32H755 and CMSIS-RTOS v2 over Free RTOS. I often have to debug two boards simultaneously.Another project is using STM32H573. This uses TrustZone and ThreadX (on the non-secure side).Both are currently managed via ST Cube IDE (Eclipse based of course) and debugging is already quite "complex".I can see advantages with VS Code, but moreover, I would not be surprised if the VS Code route becomes the de-facto standard some day (purely speculative of course), so I think I may need to start looking at it.Before I do, my question to the community is whether the VS Code option is yet mature enough for dual core and TrustZone projects?Many thanks in advance,Nick
Based on User manual of Steval-Smartag2, it has an optional battery charger circuit based on STBC15.However the SMD Components for STBC15 battery charger, haven't been attached as seen from the following photo:Here is an Snapshot from the User Manual: Based on this STBC15QTR, BAT54SFILM, STL4P3LLH6, STL6N3LLH6 and some other components should be added. However I've little problem with attaching these SMD components. STBC15QTR can't be soldered with a standard soldering iron, as the connection pads are entirely underneath the chip. In the other hand using hot bed or reflow oven doesn't make sense, as they would damage other parts of Smartag2 (for example debuging pins)I unfortunatly couldn't find any instructions for attaching theese SMD components. Now I am wondering What is ST:s official suggestion on, how these components should be attached? :)
Hello,I am using the HRTIM on an STM32F334 to drive a buck/boost converter.I monitor MOSFET temperature using NTCs via ADC2, and I also need to measure the internal CPU temperature and VREFINT using ADC1.ADC configuration:ADC1Regular: VREFINT, TEMPSENSORInjected: VinADC2Regular: MosFetTemp1, MosFetTemp2, AnalogStartInfoInjected: VoutIssue:As soon as the HRTIM is initialized (even without starting it), the ADC regular conversion values become unstable.Observations:100 samples of VREFINT only → stable when HRTIM is not initialized100 samples of TEMPSENSOR only → stable when HRTIM is not initialized100 samples of (VREFINT + TEMPSENSOR) → stable when HRTIM is not initialized100 samples of (VREFINT + TEMPSENSOR + ANALOGSTARTINFO) → stable when HRTIM is not initializedAs soon as HRTIM is initialized, all these measurements become noisy/unstable.The issue is also present:even if HRTIM is not startedeven if GPIOs are not initialized (so MOSFETs are not switching)even if line HAL_HRT
Hi all,I am currently working on the design of a custom LoRa/LoRaWAN-based IoT node using the STM32WLE5JCI6TR (bare MCU, not a module), and I am looking for a complete and reliable hardware reference design to follow.So far, I have identified the following:NUCLEO-WL55JC reference design files (schematics and PCB) from ST, which appear to be the closest official reference (even though it is based on WL55 dual-core variant)Wio-E5 Dev Board from Seeed Studio, which is based on a module and does not expose the RF design detailsWhile these are helpful, I am specifically looking for:A reference design based directly on STM32WLE5JC (or very close variant)Complete design files including:Full schematicsPCB layout filesRF matching network implementationAntenna routingPCB stack-up / layer informationSince RF design (matching, impedance control, grounding, etc.) is quite sensitive, having a proven reference is critical.Additionally, I would like to know::backhand_index_pointing_right: Are there an
Hi all. Let me tell you the problem I'm facing and I googled for finding some help but without luck. The problem I have in hands is as next. I was using Nucleo WB55 to use the STM32F103CBT6 to program a microcontroller I have in a custom PCB for an end product I'm designing. Until yesterday everything was working OK. Since yesterday the STM32CubeIDE is telling me that is not possible to connect with the programmer. I checked what's the message shown by this last program and it says:Target no device found Error in initializing ST-LINK device.Reason: No device found on target. After seeing this, I downloaded the ST-Link Utility to connect to the board and the program says:Now, having this message I proceeded to use the STM32CubeProgrammer to see what it can tell me and it shows:14:45:15 : UR connection mode is defined with the HWrst reset mode14:45:15 : ST-LINK SN : 066EFF31333541504314132814:45:15 : ST-LINK FW : V2J43M2814:45:15 : Board : P-NUCLEO-WB5514:45:15 : Volt
Dear all,I'm working on a project based on STM32F479 and FreeRTOS. In this project the microcontroller is connected via I2C and SPI bus to other devices, such as switch ethernet and spi-uart converter. I run the initialization of these devices before the start of the FreeRTOS scheduler. Startup procedure requires switching some GPIOs and waiting a few milliseconds as described in the devices datasheet. I've manged the waiting part of the initialization using the HAL_Delay function. This project has been generated in 2019 with STM32F4 fw package 1.24.0 and an old version of STM32CubeMX.Recently I've created a new project for the same hardware using fw package 1.28.0 and STM32CubeMX 6.11.1. I noticed that the initialization of TIM6 in stm32f4xx_hal_timebase_tim.c has been updated and HAL_InitTick function is changed (which you can find in the attachment). Now I'm experiencing a strange behaviour. During devices initialization the program remains stuck in the HAL_Delay function. Apparentl
I am currently designing a custom sensor PCB for an underwater ROV project using an STM32 (STM32G431CB). This is my first complete PCB design, so I would like to get feedback before moving on to the PCB layout stage.The board is intended to act as a sensor interface and control unit, and includes:IMU (BNO08X)Depth/pressure sensor (analog)Multiple analog leak detection sensorsESC control via PWM outputsUART communication with a Jetson Orin Nano3.3V regulation using an LDO (LP2985-3.3)The system is designed to operate in an underwater ROV environment, so reliability and noise robustness are important.Before starting PCB layout, I would really appreciate a review of my schematic.Could you please help me with:Identifying any design mistakes or missing componentsChecking power distribution and decoupling strategyVerifying STM32 minimum requirements (BOOT, NRST, SWD, etc.)Any suggestions for improving robustness in a noisy environmentI have attached the KiCad schematic for reference.Thanks i
Hello, I have custom STM32N657 board with two USB ports. There is USBX device video class running on USB Port 1 and streaming video - all good here, working well.I would like to get exactly the same functionality on USB port 2 - second USB video device. The STMCubeMX supports only one USB port in device mode - that is also limitation of USBX"Only one USB device controller can be defined at any time to operate in device mode."azure-rtos_rtos-docs/rtos-docs/usbx/usbx-device-stack-2.md at main · azemb-todd/azure-rtos_rtos-docs · GitHub What is the best approach to get second USB port running in USB video class in device mode?
I have Playback set up and running. I also have recording set up as well. It enumerates. It shows up as STM32 Microphone. But it does not capture anything. I notice that playback is not playing sounds either. So I traced it to this: as soon as I have BSP_AUDIO_IN_Init() called, playback doesn't play sounds. I wonder if there's an issue with having both instances be 0? // Initialize Audio Play and Record structures AudioPlayInit.Device = AUDIO_OUT_DEVICE_HEADPHONE; AudioPlayInit.ChannelsNbr = 2; AudioPlayInit.SampleRate = AUDIO_FREQUENCY_48K; AudioPlayInit.BitsPerSample = AUDIO_RESOLUTION_16B; AudioPlayInit.Volume = VOLUME_SPEAKER_DEFAULT; AudioRecordInit.Device = AUDIO_IN_DEVICE_ANALOG_MIC; // Use instance 0 SAI/codec AudioRecordInit.ChannelsNbr = 2; AudioRecordInit.SampleRate = AUDIO_FREQUENCY_48K; AudioRecordInit.BitsPerSample = AUDIO_RESOLUTION_16B; AudioRecordInit.Volume = VOLUME_MICROPHONE_DEFAULT; // Initialize Audio Output Device if(BSP_AUDIO_O
HiI have STM32H563 Nucleo board which is in closed state with DA_Config.obk not programmed, And the trust zone disabled. This was done by mistake, Is there a way to do regression on it.Operations Done on the device.1.Done the regression2.Set the product state to provisioning3.Programmed OEMiRoT_Config.obk4.Set the device to closed state.Logs from ST32Cube programmer on DA Discovery10:40:20 : STM32CubeProgrammer API v2.19.0 | Windows-64Bits10:44:38 : Start Debug Authentication Sequence10:44:38 : SDMOpen : 624 : open : SDM API v1.010:44:38 : SDMOpen : 625 : open : SDM Library version v1.2.010:44:38 : open_comms : 513 : open : Asserting target reset10:44:38 : open_comms : 517 : open : Writing magic number10:44:38 : open_comms : 537 : open : De-asserting target reset10:44:38 : open_comms : 584 : open : Communication with the target established successfully10:44:38 : discovery: target ID.......................:0x48410:44:38 : discovery: SoC ID..........................:0x0000
Hi everyone, I'm new to STM32 and I'm building an audio player. I'm using an SD card (via SPI) to feed audio data to a dac via I2S.The audio stutters and often plays the same 1-2 second snippets twice before moving on.I've tried implementing double buffering and i've checked the i2s configuration in circular mode.Code:https://github.com/darty555/stm32-i2s-dma.git
I am experiencing difficulty getting the NUCLEO-WL55JC1 to properly enter Shutdown mode. In some cases, the device appears to enter Shutdown mode but exits immediately. In other cases, it remains in Shutdown mode, but the current consumption is approximately 1 mA. The procedure I am using to enter Shutdown mode is straightforward, yet the behavior does not seem correct. Could you please advise on possible causes or recommended debugging steps for this issue?
i'm using SPC58EC80E5 in that pin number 28 TX and 29 RX , in low level drivers configuration i dont know which MCAN to be select please help me and also if i want to configure any other CAN ,which MCAN i should select. below is my configuration screenshot check it .
As asked in the subject: Is there a hole in the memory map of the STM32C552VC (Bank1 from 0x08000000 to 0x08020000 / Bank2 from 0x08040000 to 0x08060000) or are the two banks continuous from 0x08000000 to 0x08040000)
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_
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.