Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Board: NUCLEO-H723ZGMCU: STM32H723ZG (applies to others as well)Reference manual: RM0468 Rev. 3 Link Dear community,I want to do a phase measurement of an approx. 75kHz analogue sine signal with respect to the HSE clock. For that purpose, I aim to trigger the 16-bit ADC1 by a timer TIMx to get regular sampling.As I need an exact timing to reduce phase noise, I want to use the synchronous mode of the ADC to eliminate trigger jitter.In section "28.4.3 ADC clocks", the reference manual says:[...] when adc_sclk is twice faster than the adc_hclk clock, the latency between the trigger and the start of conversion is fixed.In section "28.7.21 ADC common control register (ADCx_CCR)", Bits 17:16 CKMODE[1:0], the ADC clock mode is described as:In synchronous clock mode, when adc_ker_ck = 2 x adc_hclk, there is no jitter in the delayfrom a timer trigger to the start of a conversion.Taking into account figure 161 "ADC clock scheme" (see below), the two sentences state different things: a
Hello, I am an engineer developing a board using STM32G071. Currently, I am using all pins of the MCU, SPI, I2C, and GPIO, but one of the products is overheating and overcurrent is occurring. The existing consumption is 30mA, but the problematic product consumes 110mA. I would like to inquire about which pin of the MCU can cause overcurrent to flow. Or, if you tell me a case where overcurrent can occur in the STM32G071, I will check it out.
我使用 STM32CubeMX 配置 FreeRTOS。当我调用 oskernelstart 时,发现它卡在这个界面里。回溯后,发现下图所示的函数中进入了一个异常。我在 FreeRTOS 中设置了安全模式,但现在我不知道是什么原因造成的 Translation: I used STM32CubeMX to configure FreeRTOS. When I called oskernelstart(), I found that it was stuck in this interface. After backtracing, I found that an exception was entered in the function shown in the figure below. I set the safe mode in FreeRTOS, but now I don't know what caused it
This is in the Reference Manual for the STM32G4 series advanced Arm®-based 32-bit MCUsThanks,Chris
Hi everyone,in my project i have a define that is used to change the "version" of the project.the define is always used on one byte, for example #define VER 0x36, if I change it to 0x37 I see only 20 differences in the .bin (only where is used), but when I write 0x40 I find more than 800 differences. in those 800 differences I also find changes in the startup.Has this ever happened to anyone? Do you have any suggestions?Thanks in advance!
Hi, I'm using STM32H755 nucleo board. I'm running FREERTOS on core M7 and bare metal on M4. I have been sending debug messages through USART3. It has been working ok, but sometimes messages from different tasks are overlapping. I want to change code such a way that debug messages are non-blocking. My plan has been using DMA and ring buffer. Finally, I would like to send debug messages from M4 core also using shared memory. Is this good approach or is there better way to send debug messages? Is there some example codes with this functionality? It seems that I'm not able to receive any debug messages after my kernel starts.
TLDR; STM32Ethernet has udp problems where it freezes for 20 seconds after sending data for 20 seconds and 60 seconds. After this it runs smoothly. However i'd like for it to not freeze twice as it is important the data gets sent asap.Hi, i am using a STM32-F407VET6 together with STM32Ethernet. I am using the provided EthernetUDP class to setup a udp connection. In my program i am sucesfully sending udp packets however. after sending for 20 seconds The Ethernet Link goes down and no messages are being sent out anymore. I have checked if buffers overflowed or something of the sort but to no avail. I have noticed that right at the time the data transfer stops, that an ARP gratuitous message should arrive exactly at that time as if it keeps running and suddenly works those ARP messages are sent just before the data actually started flowing again. I have checked everywhere, from what i could figure out, and saw that the ETH_DMATXDESC_OWN bit is high in low_level_output of ethernetif.cpp.I
I am using STM32H573 and trying to enable ethernet. I have used the below article for it:https://community.st.com/t5/stm32-mcus/how-to-use-the-lwip-ethernet-middleware-on-the-stm32h5-series/ta-p/691100But ethernet is not being initialized. The HAL_ETH_Init is returning error which is resulting in error handler.This is the condition being checked in MX_ETH_Init function. As even after using the steps mentioned in the article mentioned above the ethernet is not working. - Do we have to add RX and TX descriptors specific addresses in the linker file?
Hy every one,I'm facing up the WWDG usage on a STM32H755 MCU.I noticed that WWDG peripheral has 2 interrupts: normal one and the early wake-up EWI one.What is the difference?Manual is not clear! Thanks in advance
Hi all,Does STM32WL5MOC LoRaWAN Module dispatched with pre-build LoRaWAN alliance registered DevID? Or Do we need to purchase and program the ID in specific location of flash? Thanks,Deepak Naik
Dear Sir or Madam,I tried to generate code for the STM32 ZEST Kit consisting of trying to evaluate HSO (while waiting for ZEST approval):1) STEVAL-LVLP012) B-MOTOR-PMSMA13) B-G473E-ZEST1SSince the motor (2) is not available I tried using the Motor Profiler - this did not work since some registers seem to be not fully implemented (e.g. undervoltage registers).Is there something I did wrong?Best regardsMoCo
Folks,I have a bootloader for an M0 which works without using interrupts. It works in that it loads the new app, the CRC in the new app matches and I then try and jump to 0x8004000.In the past I have used a couple of different methods with M3/4 to boot to the app from bootloader dependent on what compiler/IDE I was using, but the M0 is slightly different due to how the vector table is not relocatable. So we've come up with a method to get round that and "all" I need to do is jump to 0x8004000.I *think I need something like this:void jump_to_normal_application(void) { u32 jump_address; jump_address = *(volatile u32*) (MAIN_PROG_START_ADDRESS + 4); jump_to_application = (pFunction) jump_address; asm("ldr sp, =0x20002000"); jump_to_application(); }I'm getting the error:Error: lo register required -- `ldr sp,=0x20002000'I've searched this and although I can find many hits I can't see anything vaguely relevant to my situation.Also, I would like to make 0x20002000 on line 9 t
Dear together, For the past dew days Im stuck kwith UART communication with DMA.To start with, I am implementing TX now. Later I will implement RX. I have managed for TX to work without interrupt. As per my application, I need Interrupt to inform the micro controller when transmission is completed.But when I enabled the DMA_CCR_TCIE bit in DMA1_Channel2->CCR, micro controller hangs. For your information, I have provided my code here. This is the function to Initialize DMAvoid Init_DMA(void) { // Enable clock for DMA1 peripheral by setting the DMA1EN bit in RCC AHBENR register RCC->AHBENR |= RCC_AHBENR_DMA1EN; // Enable DMA1_Channel2_3 interrupt in NVIC NVIC_EnableIRQ(DMA1_Channel2_3_IRQn); // Set priority for DMA1_Channel2_3 interrupt (Preemption = 0, Sub = 0) NVIC_SetPriority(DMA1_Channel2_3_IRQn, 0); } This is the function to Initialize UART1void Init_UART1(void) { // 1. Enable clocks for GPIOB, USART1, and DMA1 RCC->AHBENR |= RCC_AHBENR_GPIOBE
Hello,I am doing bringup to touchGFX based costum LCD controller using STM32H735 MCU connected to the LCD with Parrallel RGB using LTDC.Currently the application not returning from the tick() function called from backPorchExited().The stuck occers from the backPorchExited() first call.What could be the reason for such problem?Explanations regards the expected behaviur of tick() call from backPorchExited() will be highly appreciated.Thank you!
Hi ,I am using NUCLEO-H723ZG board for my project work. It was working fine and from few days I am facing an issue, when I try to debug or try to run the code an error pops up telling : Error in initializing STLink device. Target no device found.
Hi,i am using STM32WBA55CG and i want:1. wake-up from STOP mode to receive bytes over USART2 Rx 2. Handle data with half-complete and complete callback3. Use the IDLE interrupt to detect the end of transmissionEach works perfectly on its own. However, when I try to combine both variants, the CPU hangs.Since I cannot expect a specific byte length (1 byte could also be transferred as 100kB), I would like to process the data via a 1kB ring buffer. I can use half complete and complete callback for this. To recognize the end of the data transfer, I want to use the IDLE interrupt.
I am working on the STM32N6570-DK board, and I have a question about demonstrating data on the lcd screen. You see, my project need to do multiple tasks, like collecting the data from the sensors and using the camera to do some AI model inference. Let's name it task A, and task B. I have already written these data-collecting functions in the main.c file, and in model.cpp, I wrote the Model::getcollecteddata() and Model::AIinference() function, and connect this model.cpp with main.c. However, I am wondering if I want to use the Model::tick to send the data to the presenter and use the lcd to show them, due to the fact that I already wrote two functions and the two functions mean s two tasks, in the Model::tick(), can I use the function below: void Model::tick() { tickCounter++; if((tickCounter%20)==0) { modelListener->collecteddatavalue(getcollecteddata()); modelListener->AIinferencevalue(AIinference()); } } What I really want to ask is when I use the touchgfx, the functions
I am developing a custom board based on the MB1720 HighBand HighPower reference design using the STM32WLE5CC microcontroller.I need clarification on the operation and connection of the FE_CTRL2 and FE_CTRL3 signals that control the RF front-end switch (U3 - BGS12SN6):What is the exact functional role of FE_CTRL2 and FE_CTRL3 in this configuration?1. From the schematic, FE_CTRL2 is connected to PC13, and FE_CTRL3 to PA11, both controlling the BGS12SN6 SPDT RF switch.2. How do these signals behave during transmit and receive? Which one is responsible for enabling TX and which one for RX?3. Additionally, I’ve exposed these FE_CTRL lines to a connector (CN2). Is this standard practice, or should these only be internally controlled by the MCU?
I'm using HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, 32-bit-addr, 64-bit-data) and it crashes with an 0xfffffff7 exception. Has anyone else seen this? I've checked that the addresses are aligned to 64-bit boundary.
Dear STMicroelectronics Support, I am working with the STM32H723ZG-E01 board (Serial: A230801274) and encountering an issue where CAN communication is not functioning as expected. Based on the documentation, I have configured the FDCAN1 interface to use PD0 (FDCAN1_RX) and PD1 (FDCAN1_TX). The FDCAN peripheral clock is set to 20 MHz. The external transceiver is correctly connected and powered, and the rest of the board appears to function normally. Despite this setup, no CAN or CAN FD communication is taking place. I would appreciate your help with the following: Could you please confirm whether PD0 and PD1 are valid and officially supported pins for FDCAN1 on this specific board? Are there any known limitations, errata, or special configuration requirements for using these pins? Could you kindly share a sample .ioc configuration file and example code (bare metal or HAL-based) for basic CAN or CAN FD communication on the STM32H723ZG-E01 board? This would greatly help us verify
Hello,I am currently designing an ESC for a small vehicle (around 300g). I made a first proto board and I use the 6-steps algorithm with an hall sensored motor. I would like to be able to brake. I firstly thought to short all the phases directly to the ground with a PWM in order to brake more or less but it seems that there is no dedicated function for braking in the generated project.Here are the availabe functions in mc_api.h :/* Starts Motor 1 */ bool MC_StartMotor1(void); /* Stops Motor 1 */ bool MC_StopMotor1(void); /* Programs a Speed ramp for Motor 1 */ void MC_ProgramSpeedRampMotor1(int16_t hFinalSpeed, uint16_t hDurationms); /* Returns the current PWM duty cycle reference for Motor 1 */ int16_t MCI_GetDutyCycleRefMotor1(void); /* Returns the state of the last submited command for Motor 1 */ MCI_CommandState_t MC_GetCommandStateMotor1(void); /* Stops the execution of the current speed ramp for Motor 1 if any */ bool MC_StopSpeedRampMotor1(void); /* Stops the e
Hi,I'm working on firmware upgrade functionality for an STM32G491 series MCU. In our system, the MCU communicates with a processor over I2C, where the processor acts as the master and the MCU as the slave. Currently, we're using I2C1 on the MCU for this communication.However, as per AN2606, I2C1 is not supported in boot mode for firmware flashing, which limits our ability to use standard ISP. Therefore, we're exploring the option of using In-Application Programming (IAP) over I2C1.Is it possible to perform IAP using I2C1 in this configuration? If so, could you point me to any sample code or reference implementations?
Hi all , I'm currently using the EVSPIN32G4 evaluation board along with MC Workbench for motor control development, and I'm encountering an issue with Overcurrent Protection (OCP) behavior that I can’t quite resolve.My Setup:Gain Type: External Gain NetOCP Threshold (set in MC Workbench): 200AShunt Resistor: Physically modified to 1mΩ (0.001Ω)External Amplifier Gain: 7.33 During runtime, I monitored the motor phase current using a current probe and oscilloscope. OCP is triggered at only around 46A, which is far below the configured 200A.In the firmware, I noticed:DAC_OCP_Threshold = 7427;According to the MC SDK, the current conversion factor is calculated using this formula:#define CURRENT_CONV_FACTOR ((uint16_t)((65536.0 * RSHUNT * GAIN) / ADC_REFERENCE_VOLTAGE))I get: CURRENT_CONV_FACTOR ≈ 146 /// I = 7427/146 = 50.9AIn the official ST document UM2850 - Getting Started with EVSPIN32G4, Section 5.5.2 provides a OCP threshold formula. The formula is used to c
Hello, I am having a lot of noise of the Id and Iq current. The Eval board is connected to a BLDC, having a hall sensor. I am using the v6.3.2 of the MC Workbench. I am running the Open Loop Current Mode from MC Pilot to make sure that it is the not the position of the rotor is the problem.I attached a picture for reference. The speed reference is zero here and Id ref = 0Amps.Thank you
Posted on November 24, 2017 at 16:15I tried to figure out the specification of the max. UART baudrate for the SM32H7 series (@ 400MHz system clock).The data sheet says 12.5 MBit.Does this apply to all UART ports or only selected ones?I need 8 MBits @ 16x oversampling and 6 MBits @ 8x oversampling.Are these baudrates possible?Best regards,Holger
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.