Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi all, I am trying to make my NUCLEO N657X0 board working with : FSBLAPPSecureAppNonSecure I am having issue in understanding how to get the things done : I have created a new STM32 project on STM32CubeIDE, ending with having 4 differents projects in the IDE - AppliNonSecure, AppliSecure, ExtMemLoader, FSBL I selected generate demo code, and everything works fine in debugging FSBL following the jumpers indications etc...Until there, no problem. Now I want to run in the XIP template to execute my code from External Flash. I found the template STM32Cube_FW_N6_V1.1.0\Projects\NUCLEO-N657X0-Q\Templates\Template_Isolation_XIPIs there any documentation on how to use this ? There is no STM32CubeIDE project, its just src and inc folders. Shall I copy paste the source and include files in my previously created projects ? I am getting a bit lost on how I could start having my NSApp running and start developping my solution
Excuse me. I have some trouble in CORDIC function.I Config CORDIC by Q1.31 for input and output data format. CORDIC can't work and the return data is right.But I change the CORDIC input data to Q1.15 in config, It can't work. I always get 0.Below is my config ... LL_CORDIC_Config(CORDIC, LL_CORDIC_FUNCTION_COSINE, /* cosine function */ LL_CORDIC_PRECISION_4CYCLES, /* max precision for q1.31 cosine */ LL_CORDIC_SCALE_0, /* no scale */ LL_CORDIC_NBWRITE_1, /* One input data: angle. Second input data (modulus) is 1 after cordic reset */ LL_CORDIC_NBREAD_1, /* One output data: cosine, then sine */ LL_CORDIC_INSIZE_16BITS, /* q1.15 format for input data */ LL_CORDIC_OUTSIZE_16BITS); /* q1.15 format for output data */ and this is send data to CORDIC tempf = input_degree /180.0f; if(tempf > 1) { tempf = tempf-2; } else if(tempf <-1) { tempf = tempf+2 ; } temp_16 = (float)tempf * 32768; //for 16bit ANGLE_CORDIC = (temp_16); //for 16bit input /* Write angle
Hi everyone,I'm currently working with the STM32H573G-DK board using the Nx_WebServer example (NetX Duo HTTP server) provided in STM32CubeMX. During testing, I noticed what seems to be a blocking behaviour, and I’d like to verify whether this is expected or if there’s a way to handle it differently.Here's the scenario I tested:I modified the server to simulate a long-running request by adding a `tx_thread_sleep()` delay (~20 seconds) before sending the HTTP response.While this delayed request is being processed, the client sends a second HTTP request that should be answered immediately.However, the second request does not get processed until the first (delayed) request finishes and the response is sent.This suggests that the HTTP server is processing requests sequentially, and a single long-running request can block all other requests, which is problematic for use cases like long polling.Is this single-threaded, blocking behaviour expected for the NetX Duo HTTP server?Has anyone found
Hi, I found a pretty interesting issue while developing an STM32H7 Series MCU.And I tried many things to figure out the cause but failed. T^T If you have experienced similar symptoms or know anything about them, I hope we can discuss it together here. Subject : Differences in Flash Error Occurrence by Code Location(SRAM,DTCM) in STM32H7Model : STM32H7A3ZISpec : Internal Flash Memory (2MByte / Bank 1,2 each 1MBtye) Internal SRAM (1MByte) DTCM (128KByte) External RAM I wanted to be able to erase the Flash area where the code was loaded during code execution(for a Firmware Update), so I followed the steps below. First, store the Binary File in a Buffer located on the external Ram, and verify that it is normal.Second, execute the code I designed and perform Flash Erase/Write with the corresponding buffer data.Last, reboot the s
All control signals seem to be good: `DEN`, `VSYNC`, `HSYNC`, `CLK`. but pixel signals (R0 ~ R7, G0 ~ G7, B0 ~ B7) are always low. 1) DEN. 2) HSYNC. 3) VSYNC. 4) CLKalthough control signals correctly work, no pixel data lanes do not. Code that generated by CubeIDE: (this can show my configuration well than CubeIDE screenshot I think)LTDC_LayerCfgTypeDef pLayerCfg = {0}; /* USER CODE BEGIN LTDC_Init 1 */ /* USER CODE END LTDC_Init 1 */ hltdc.Instance = LTDC; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; hltdc.Init.HorizontalSync = 7; hltdc.Init.VerticalSync = 7; hltdc.Init.AccumulatedHBP = 15; hltdc.Init.AccumulatedVBP = 20; hltdc.Init.AccumulatedActiveW = 335; hltdc.Init.AccumulatedActiveH = 260; hltdc.Init.TotalWidth = 391; hltdc.Init.TotalHeigh = 268; hltdc.Init.Backcolor.Blue = 0x00; hltdc.Init.Backcolor.Green
Hello folks,when I was using the HAL library function to implement MCU wake-up service from STOP2 mode through LPUART serial port, I found that no matter how the data was sent, the MCU could not exit STOP2 mode. Below are the relevant configurations configured by my cubemx,the MCU I am using is STM32WLE5CCU6.Related MAIN Codes:UART_WakeUpTypeDef WakeUpSelection={0}; void sss(){ printf("[INFO]Enter Stop!\n"); HAL_Delay(10); //?? WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_STARTBIT; if (HAL_UARTEx_StopModeWakeUpSourceConfig(&hlpuart1, WakeUpSelection) != HAL_OK) { Error_Handler(); } while (__HAL_UART_GET_FLAG(&hlpuart1, USART_ISR_BUSY) == SET); while (__HAL_UART_GET_FLAG(&hlpuart1, USART_ISR_REACK) == RESET); __HAL_UART_ENABLE_IT(&huart1,UART_IT_WUF); HAL_UARTEx_EnableStopMode(&huart1); HAL_Delay(10); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFE); } void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) { SystemClock_Config();
Hello,I am using the NUCLEO-WBA55CG. I read in the Reference manual (https://www.st.com/resource/en/reference_manual/rm0493-multiprotocol-wireless-bluetooth-le-and-ieee802154-stm32wba5xxx-armbased-32bit-mcus-stmicroelectronics.pdf) that the SPI peripheral has the option to bypass the SPI clock prescaler. This is new to me and I have never worked with STM32 MCUs that have this option. My understanding is that by setting the BPASS bit in the SPI_CFG1 register, the prescaler, which is set by the MBR bits in the SPI_CFG1 register is ignored, and so the SPI clock frequency is that of the spi_ker_clk clock, in stead of being divided by at least 2 when using the prescaler with the MBR bits. When I set this bit, the SPI appears to be working as intended, except the SPI stops outputting the clock at the corresponding pin. The MOSI line and the CS line (I am using hardware chip select management) work as intended- I can see the test data I am sending and both the MOSI and CS seem to be working f
I've build a central device that need to connect to at least 4 hosts devices it periodically loops on a aci_gap_start_general_discovery_proc()when find a device that fits mac filter it connect itself and restart a scan periodbut when it get connected to 2nd hosts next call to aci_gap_start_general_discovery_proc() return a BLE_STATUS_NO_VALID_SLOT resultmy understanding is that CM0 can't deal with enought "state machines" as quickly mentionned in ble_defs.h /* Returned when no valid slots are available * (e.g. when there are no available state machines). */ #define BLE_STATUS_NO_VALID_SLOT 0x82UI didn't find any details in an5270Can I set maximum state machine count a bit higher in config ??thank's for any help
Hello,I am trying to write to SPEED_RAMP using the Registers tab in MC Control Pilot, however I get the following error:ASPEP_RESP ERROR:ERROR_BAD_RAW_FORMATI am writing the data as follow for example: 6000;500Can someone help me find the right synthax? Thank you
I am using the Nucleo-H7A3ZIQ for a project, utilising the Communication Device Class of the USB OTG-HS. Everything was working well, then there was an issue that the timers stopped taking inputs with the USB configured, while they worked fine when USB wasn't used. Due to this, I started tinkering and set the NVIC preemption priority for the USB to 1 (all others were 0). This resulted in a lot of program crashes, and the USB CDC not recognised even by the OS.It started working fine when I reset its priority. Any idea about this, and also the timers not taking inputs?
Previously, I used the HAL_DFSDM_FilterRegularStart_DMA method to enable each of the eight filters one by one. The result was a 2.4Mhz clock output, exactly as configured in CubeMX. Now, to achieve high sync between 8 filters, i referred to the synchronization content in the reference manual(RM0455): i followed the instruction and programmed as below:/** * @brief Configurate DFSDM Filter * @retval None */ void WJ_DFSDM_FilterSyncConfig(void) { // Disable Filter to set RSYNC hdfsdm1_filter0.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter1.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter2.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter3.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter4.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter5.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter6.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; hdfsdm1_filter7.Instance->FLTCR1 &= ~DFSDM_FLTCR1_DFEN; //
Hi all,I'm currently using Motor Pilot v1.2.12 and working with Observer + PLL mode for sensorless control. I see that there are parameters C1 and C2 available for tuning, but I'm not quite sure what each of them does and how they affect the motor control.Could someone please explain the function of C1 and C2 in this context?Also, are there any reference documents or official resources that go into detail about these parameters?Thanks in advance!
..
Language export fails. I followed this guide: https://support.touchgfx.com/docs/development/ui-development/touchgfx-engine-features/texts-and-fonts#translationsI installed ruby for windows using rubyinstaller-3.4.3-1-x64.exe.I updated TouchGFXf Designer and the middleware folder to 4.25.0.I ruby from command prompt like this:myproject_path\Middlewares\ST\touchgfx\framework\tools\textconvertruby translations.rb export myproject_path\TouchGFX\assets\texts\assets\texts\texts.xml translations.xlsxThen I get the following error:in 'Kernel#require': cannot load such file -- nokogiri (LoadError)I have no experience with ruby and no instructions are listed.
Hi,I want to enable the onboard microphone sensor in STM32H757I-EVAL and code that for recording audio. I am struck here for some days. It would be great if anyone can share your insights on how to navigate through this. It would be appreciated if anyone can also share how to configure this in stm32cubeideThank you
Hi,The STM32H7RSxx TRM specifies, for ETH_MACMDIOAR, the following CSR values: Bits 11:8 CR[3:0]: CSR Clock RangeThe CSR Clock Range selection determines the frequency of the MDC clock according tothe CSR clock frequency (eth_hclk):0000: MDC clock = eth_hclk / 420001: MDC clock = eth_hclk / 620010: MDC clock = eth_hclk / 160011: MDC clock = eth_hclk / 260100: MDC clock = eth_hclk / 1020101: MDC clock = eth_hclk / 1240110 to 0111: Reserved, must not be usedThe suggested range of CSR clock frequency applicable for each value (when Bit 11 = 0) ensures that the MDC clock is approximately between 1.0 MHz to 2.5 MHz frequency range.When Bit 11 is set, you can achieve a higher frequency of the MDC clock than the frequency limit of 2.5 MHz (specified in the IEEE 802.3) and program a clock divider of lower value. For example, when CSR clock is of 100 MHz frequency and you program these bits to 1010, the resultant MDC clock is of 12.5 MHz which is above the range specified in IE
HI, I download BLE_Audio_TMAP_Peripheral firmware to STM32WBA55G-DK1 board, and Headphones was select as Audio Configs on the borad. When i start playing music, the audio quality was so bad. I previously sent the input data of the headset to the audio codec chip for output on my project, and the sound quality was very good. So why is the sound quality so poor when playing music? Is it a problem with the BLE codec or is the processing speed of the MCU too slow?
After adding in the .ioc file, in software package, Touch GFX and enabled grafic applications. when I try to lunch ApplicationTemplate.touchgfx.part i receive the following error message. Brlow i also put the content of the log file Sorry - something unexpected has happened which caused an error to occur in the Designer. For more information, see the log file located at: C:\Users\vdalessandro\AppData\Roaming\TouchGFX-4.25.0\TouchGFXDesigner.log Please consider reporting this bug and steps to reproduce it at the TouchGFX Help Center so it can be fixed in a future version.You can find the Help Center here: https://community.st.com/touchgfx Error: Object reference not set to an instance of an object. 2025-05-15 10:35:12,492 [1] ERROR TouchGFXDesigner.App: Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at TouchGFXDesigner.Main.Project.Configuration.FeatureConfig.FeatureConfigCategory.Un
I am currently working on initializing the Ethernet peripheral on the Nucleo-H723ZG using the following environment:CubeIDE Version: 1.17.0 (MacOS)STM32Cube Firmware Version: H7 V1.12.1While calling the MX_ETH_Init() function, I encountered an issue where HAL_ETH_Init(&heth) returns HAL_ERROR. Upon debugging, I found that the problem is related to the software reset step in the initialization process.Here is the relevant portion of the code from stm32h7xx_hal_eth.c: /* Ethernet Software reset */ /* Set the SWR bit: resets all MAC subsystem internal registers and logic */ /* After reset all the registers holds their respective reset values */ SET_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR); /* Get tick */ tickstart = HAL_GetTick(); /* Wait for software reset */ while (READ_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR) > 0U) { if (((HAL_GetTick() - tickstart) > ETH_SWRESET_TIMEOUT)) { /* Set Error Code */ heth->ErrorCode = HAL_ETH_ERROR_TIMEOUT
Hi, I am trying to interface the internal microphone sensor (MP34DT05TR-A) in STM32H757I-EVAL. The goal is to record audio from the MP34DT05 microphones, store it on a microSD card, and play it back on a PC. I'm not able to navigate through this; could you share some resources or the steps that need to be followed to configure this and to record the audio? Also, there are three different data formats: audio codec, DFSDM, and PDM. Which do you think will be suitable for the data acquisition part?
I'd like to adapt Openbootloader to the H523/H533 chip.In STM32CubeIDE, there are example applications for several microcontrollers/development boards. I noticed there was an example for the STM32H5731-DK, but I'd like to use it on the H523/H533 chips.It would be great if somewhere in the documentation there was information on what needs to change to adapt to other chipsI have been trying to edit openbootlader_conf.h, but have been struggling to find certain values in the H533/H523 reference manual or data sheetOB_SIZE (and other option bytes related fields)I see Table 51, which has option bytes listed, but when I count them I can't re-create the 432 number which is in the openbootloader_conf.h for the H573 chip. I also can't find references to OB_START_ADDRESS or OB2_START_ADDRESS when I search for the actual hex value in the openbootloader_conf.h for the H573 chip (0x40022050U)ICP_SIZEAlso ICP_START_ADDRESS. Searching the reference manual for ICP gives 9 results, none of which are re
Hi, Community.When I try to generate an IDE project from the MotorControlWorkbench project I inherited, an error occurs.I checked both cases where a previous IDE project existed and where only the stwb6 file existed, but neither worked.The IDE, MX, and MotorControlSDK are installed.Are there any special steps required to generate an IDE project on another PC?
I have the following function to verify that a full flash sector is erased but the code never seems to exit this function and I believe it gets stuck at the point where I dereference the address value. What could be the issue?static bool check_sector_erased(uint32_t sector_base) { bool ret = true; uint32_t sector_end = sector_base + SECTOR_SIZE; uint32_t addr_val = 0; for (uint32_t address = sector_base; address < sector_end; address += 4) { addr_val = (*(volatile uint32_t*)address); if (addr_val != ERASED_32) { ret = false; break; } } return ret; }
Hello,I am trying to implement Modbus protocol in an efficient way. Untill now I have implemented everhting with UART interuot based Transmission and recption. Now I would like to implement with DMA to offload controller from much neavy lifting. For your refernce, I somhow managed with the below code t transfer the TX_Array from 0x00 to 0x09. I verified this in oscilloscope. But this aimed frame is appearing only once then only 0x00 is seen infinitely. even DE pin is not driven to low. Which indicateds that ISR is not being called and transfer is not stopped. Or somewhere it make the controoller to hang. Please let me know where I am makeing mistakes.Please pardon me, I will come back again for RX implementation after fixing this issue. Thank you. #include <stdint.h> #include "stm32f030x8.h" #define Set_USART1_BRR (40000000/9600) // 9600 Baudrate#define Set_Parity 0x01 // EVen #define Switch_Reset_LED_ON (GPIOB->BSRR = GPIO_BSRR_BS_10) // PB10 (Set pin
Hello I am trying to implement a bare metal SPI connection between the STM32U585 and the on board EMW3080 WLAN module on the B-U585I-IOT02A. Currently I am having trouble as when I set the GPIO pin that is connected to the enable reset(should be active low from my research) pin that is on the EMW3080 high, neither of the GPIO inputs I configured to take in the FLOW and NOTIFY signals from the EMW3080 go high. I am attaching my current code to this post along the Tera Term UART output that occurs when I run the code. If anyone could be able to provide any insight to why the WLAN module is not responding over FLOW/NOTIFY I would appreciate it, I have already tried using the wifi firmware update multiple times and am struggling to see what I am doing wrong as I am new to this type of coding. Please let me know if I need to provide any other resources. Wifi Firmware Update Link I used: https://www.st.com/en/development-tools/x-wifi-emw3080b.html#tools-software
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.