Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi community.TLV230adc5140 - SAI 4CH(TDM) - STM32 - USB_FS_ 4CHmic - Window(LInux RP5) I reuse partly code from memsmic1 project to create 4 microfone audio device. Everything look well for channel 1 and 2 I got some trouble whit CH3 and CH4. Please help whit wrong channel mapping for channel 3 and 4. It is mapped on channel 1 and 2 on usb interface. One can see it on attached picture. Here is TLV switched off, SAI(DMA call back) reused for 4 sin generator 1,2,3,4 kHz for every supposed channel. Here you see the picture.Where i am wrong?
Hi everyone, I am working on a dual-core project using the STM32H747XI. I am implementing a custom Tickless Idle mode in FreeRTOS on the Cortex-M7 (CM7) core using LPTIM1 as the wakeup source. I’m facing a specific issue regarding the interaction between D1 and D2 domains: The Scenario: CM4 is running a continuous task (intended to stay active). CM7 enters low-power mode via vPortSuppressTicksAndSleep. If I use HAL_PWR_EnterSLEEPMode(), everything works perfectly—CM4 keeps running, and CM7 wakes up as expected. If I switch to HAL_PWREx_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI, PWR_D1_DOMAIN), the CM4 core seems to "die" or freeze as soon as CM7 enters the DStop state. Is it physically possible for CM4 to continue executing code if the D1 domain is in DStop (CM4 is using only LPTIM1 on D3 and timers on D2)? Code snippet used on CM7: _weak void vPortSuppressTicksAndSleep(TickType_t xExpectedIdleTime) { // Generated when configUSE_TICKLESS_IDLE == 2. // Functio
How to configure the sysTick_Handler(), when we are setting the HCLK 386MHz in CubeMX and systemClock() is generated, but while configuring sysTick(), uint32_t SystemCoreClock = 64000000; already there in system_stm32h7xx_dualcore_boot_cm7_cm4.c(void)SysTick_Config((SystemCoreClock) / 10000);Will it effect mine overall MCU speed and performance, because after all I'm using FMC NAND Flash to communicate with the external Micron Flash, because there I need to calculate the clock cycles need to the write enable (WE), Setup time, Address Latch Enable (ALE) time etc, will be effected, or it is completely independent, should I only consider FMC_CLK which is coming from PLL clock source 2.
Dear sir / madam The UltraLibrarian WBA5M (Module) footprint is flawed. Potentially it can screw the module under reflow.Those center GND pads are not placed correct. I noticed when comparing the ST dev-board module. see image..
Hi all,I noticed that when using the encoder, the motor undergoes an alignment phase during which it completes a rotation until it reaches the position where the Index Z signal is triggered.I was wondering if it's possible to skip this alignment phase by adding the Hall sensors (like with the B-G473E combined with the STEVAL-LVLP01 board), and if so, what should I specify in the Workbench or in the Code?Regards,Jules
I bought STM32F4DISCOVERY. But in the STMcube IDE, i see only STM32F407G-DISC1 board. Are STM32F4DISCOVERY vs STM32F407G-DISC1 same? Can I select STM32F407G-DISC1 and create a project in the IDE and use STM32F4DISCOVERY hardware to run the project? Will it create any issues?
I am currently working on an STM32 TrustZone project and trying to implement the following flow:NonSecure world running↓Calls Secure_add()↓Secure world executes↓Returns value 8↓UART prints the result in NonSecure worldHowever, I am facing an issue while jumping from the NonSecure world to the Secure world. The expected secure function execution is not happening properly.If anyone has faced a similar issue or has suggestions regarding NSC gateway configuration, linker settings, or TrustZone function calls, please share your insights. this much i am getting the outCMSE_NS_ENTRY uint32_t Secure_add(uint32_t a, uint32_t b){return a + b;} ------------------------ My Nsc.c entry logic for(int i = 0; i < 5; i++){printf("NONSECURE WORLD RUNNING\r\n");printf("I am amritha\r\n"); //for(volatile int d=0; d<500000; d++);}uint32_t result;printf("Before Secure_add\r\n");result = Secure_add(5,3);printf("Before Secure_add\r\n");printf("Secure result = %lu\r\n",
Hi, I'm using a STM32F072's DAC to output a SIN and a COS wave. The problem is I can only output values up to approx. VDDA / 2. The DAC drives unity gain amplifiers to drive a 50 Ohm load. The DAC is connected directly to the amps, using the buffer does not help. VDDA = 3.3 V. Here, CH4 is connected directly to the DAC output via a 10:1 probe. The black things on the scope inputs are 50 Ohm termination, so the CH2 and CH3 signals having only half the amplitude of CH4 is expected. All channels are DC coupled. I'm writing to the DAC using the DHR12L1/2 registers (using the STM32Cube HAL): uint16_t value = (uint16_t) (ltbDacSinLut(ltb_dac_ch1_counter_) ^ 0x8000) & 0xFFF0; HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_L, (uint32_t)value);where ltbDacSinLut returns values in the range of [-32768, 32767]. Dividing the value by 2 before writing to the DAC results in undistorted SIN / COS output, but of course the output swing
Hello,Can anyone tell me how to measure pulse width with the HRTIM? I need to measure a very short pulse from my time domain reflectometer. I am thinking of using the NUCLEO-H753ZI board with the STM32H753ZI MCU. All I know about measuring pulses with the HRTIM is that I need to use the external event registers and that the minimum pulse width must be >2.5 ns. Any help would be greatly appreciated.
Hello,I am having some hard time to connect my nucleo-wl55jc1 to any LNS, even though i checked that Device, Join, and App EUIs are all correct and there is no mismatch, but whichever LNS I try, I always get the same result First, I tried with an indoor RAK gateway, these gateways use MAC version 1.0.3, and the nucleo example uses version 1.0.4 Then I tried using MeteoScientific LNS and Helium network, could not join as well. Finally I tried to connect LORIOT to my RAK gateway, and they successfully connected, but still the nucleo could not join the server, and the gateway did not transfer any packets. Even though the steps are fairly simple, I don't know what is the problem here what is the meaning of "Event received: RESET" in the nucleo serial logs?
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
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 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?
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
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.
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?
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?
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,
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
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.