Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Not sure that I have the latest version of the HAL but I used two ip address for the ETH MAC and tried to enable both in the L3 filter.But I could not get any data to the second interface. with the filter turned on-Looking more closely on the HAL_ETHEx_SetL3FilterConfig I found what can only be a copy paste mistake.Writing the destination address for IPv4 was mede to the MACL3A0R1R register instead of the expected: MACL3A1R1RMight be fixed in newer version but using two IP-address perhaps is a bit unusual.
Hello, I need to have D-Cache enabled to improve performance of FMC external SDRAM (it's >3x slower without D-Cache enabled). I also want to use I2S for audio. But with D-Cache enabled, I don't get any data from ADC. What can I do to use I2S with D-Cache enabled?
Hi. I have a newly purchased NUCLEO-U575ZI-Q. I followed the instructions here to install the toolchain on Windows 11:https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html#documentationhttps://wiki.st.com/stm32mcu/wiki/STM32StepByStep:Step1_Tools_installationAfter one unsuccessful attempt where I chose my own installation folders, I uninstalled everything and took the defaults.What a mess! The default installation folders are spread between AppData, Program Files, and C:\ST. But OK, if that's what it takes.Unfortunately, I got to step 5 and found that the instructions diverge from reality.They never said to click Finish to complete the Import Projects dialog. And there is no way to select the project they mention from it. But if I click Finish, then a tiny icon appears on the upper left. If I click it, then there is a Project Explorer window.The next step is:My IDE has no Debug icon (the the little yellow blob on its lower left). Bu
Continuation of this thread. Hello, I've wired SDRAM (AS4C4M16SA-5TCN) with STM32H730ZBT. Connection works, I can read/write data, but every other byte. Let's start with array declaration: uint8_t *externalRAM = (uint8_t*)0xC0000000; /* USER CODE END PV */ Then I'm trying to write some bytes to this array, ie: externalRAM[0] = 0xAA; externalRAM[1] = 0xAA; externalRAM[2] = 0xAA; externalRAM[3] = 0xAA; And to read it: uint8_t test[4]; test[0] = externalRAM[0]; test[1] = externalRAM[1]; test[2] = externalRAM[2]; test[3] = externalRAM[3]; And this is the result: Sometimes test[1] has 0xAA too, but mostly it's 0. I've tried to lower FMC frequency or change memory timings. What does this look like?
Hello,I'm spec'ing a system where we would need to interface 4x eight-channel ADCs with an MCU for audio capture. Simultaneous capture on all channels is an important requirement.Currently we are considering the STM32H750VB MCU which has 4x SAI interfaces, and the Analog Devices AD7768. All ADCs would be running at the same time, synchronized, and the data from them would be DMAed into ring buffers.I'm not familiar with the ST SAI interface. It seems like they can support 8 channels in TDM mode (which that ADC supports), but I'm not sure?Can this be done with the STM32H750VB?
Hello, I have a query about how HAL_UART_Receive_DMA and HAL_UARTEx_ReceiveToIdle_DMA work?For my application there is a varying payload size, so I am wondering how would I trigger the HAL_UART_Receive_DMA(&huart3, rx_buffer, 4096, 0xFFFF); interupt? As from my understanding it would be waiting for all 4096 bytes of data which won't arrive unless a different frame was sent.Whereas HAL_UARTEx_ReceiveToIdle_DMA(&huart3, rx_buffer, 4096); triggers once the serial port stops communicating, however it stores the received data in 512 byte chunks, which has proven difficult to access when generating a LUT from the rx_buffer.If anyone can shed some insight over how these interrupts work? And how to make them applicable for a variable payload would be great.
I have implemented a USB Audio 2.0 device that receives audio from the PC host (speaker endpoint) and loops it back (microphone endpoint). The PC correctly recognizes the device, and audio playback works, but I'm experiencing unexpected low-frequency noise.Specific symptom: When playing a pure 350Hz sine wave from the PC, the device receives not only the sine wave but also significant noise content from 0Hz to 350Hz. This noise is audible in the loopback audio sent back to the host.The audio data flows through a simple memory copy without any DSP processing:ux_utility_memory_copy(write_buffer, read_buffer, copy_len); ux_device_class_audio_write_frame_commit(g_mic_stream, copy_len);I also perform FFT analysis for visualization (TouchGFX), and the spectrum confirms the low-frequency noise is present in the received audio data itself, not introduced by my processing.I have tried to disable the microphone endpoint and keep just the speaker endpoint but the issue persists.Any guidance on di
what am i doing wrong?
Hi Team,We I have shortlisted the STM32U535RET6QTR microcontroller for our microwave oven control panel. The MCU includes an integrated Touch Sensing Controller (TSC), and our design requires 8 capacitive touch keys.Before finalizing the component selection, we require clarification on the following points to ensure compliance with home‑appliance safety and EMC standards:1.Is the STM32U535RET6QTR suitable for microwave‑oven capacitive‑touch applications?2.Does ST provide any dedicated capacitive‑touch sensing IC, apart from the built‑in TSC in STM32 MCUs?3.What are the advantages of using STM32U535RET6QTR (with integrated TSC) compared to a dedicated touch‑sensing chip?4.If we use the integrated TSC in STM32U535RET6QTR, what hardware challenges may occur?5.What software‑related challenges can arise with the integrated TSC?6.Can STM32U535RET6QTR meet home‑appliance certification requirements such asIEC 60335‑1 / IEC 60730‑1 Class‑B?7.For an 8‑key capacitive touch panel, what does ST rec
Hello ST Community,I’m working on bringing up audio capture using the X-NUCLEO-CCA02M2 microphone expansion board with the NUCLEO-N657X0-Q (STM32N6), and I’m struggling to obtain any audio data.According to the CCA02M2 documentation, the board is compatible with STM32 Nucleo boards via the ST-Morpho connector and supports acquisition through I²S, SPI, DFSDM, or similar digital audio peripherals. However, I have not been able to find any example, tutorial, or application note specifically targeting STM32N6 devices.My goal is to run an Edge Impulse audio model on the STM32N6.I was able to successfully run inference using manually provided raw features from the example in this repository:https://github.com/edgeimpulse/example-standalone-st-stm32n6So the ML pipeline itself is working correctly.My difficulty is specifically with capturing audio from the X-NUCLEO-CCA02M2, due to lack of clear documentation or examples for STM32N6 boards.My setup:• Boards connected pin-to-pin through ST-Morph
Hi.I want to use NUCLEO-WL55JC with 32MHz crystal, not TCXO. So i do following steps according to UM2592(User manual of STM32WL Nucleo-64 board)No C30 and no C38 as those capacitors are integrated into the STM32WL MCU.SB20 OFF in order not to supply the TCXOC31 OFF in order not to have a 32 MHz signal coming from the TCXOR39 and R40 ON to connect the X3 crystal to the STM32WL MCU I use LoraWAN_end_node project in STM32Cube_FW_WL_V1.4.0.So i do following steps in configuration in CubeMX (also attach clock configuration)Select HSE as Crsytal/Ceramic Resonator instead of TCXOIn stm32wlxx_nucleo_radio.c, BSP_RADIO_IsTCXO function returns RADIO_CONF_TCXO_NOT_SUPPORTED instead of RADIO_CONF_TCXO_SUPPORTED. But after that, NUCLEO board give me message MAC txTimeOut instead of success tx process. While i use TCXO, there is no problem to send tx and also connect to LoraWAN. What can i do to use standard crsytal instead of TCXO? Be
Hello ST Community,I am facing this issue developing firmware on the NUCLEO-N657X0-Q (STM32N657).My architecture involves a standard FSBL that jumps to a main Application.Application:Interfacing with a Adafruit BNO085 IMU via UART (3 Mbps) using the CEVA SH2 driver, adapting the official CEVA SH2 example code of this repository to my Nucleo. The driver uses USART2 with GPDMA1 Channel 0* (Circular Buffer for RX).Setup Details:MCU: STM32N657X0Peripheral: USART2 (3 Mbps) + GPDMA1 Channel 0 (RX Circular Buffer).Timer: TIM2 (used for microsecond timestamping in the driver).Cache: Disabled (to rule out coherency issues).Symptoms:1. FSBL: If I initialize and run the sensor logic inside the FSBL, it works perfectly.2. Application: If I move the exact same logic to the Application (after the jump), the code hangs inside the driver's code.3. Breakpoint fixes the problem: In the Application, if I place a breakpoint at the beginning of the shtp_service() function (called period
Are there any plans to make a Linux version of the Motor Control Workbench? @cedric H mentioned 4 years ago that it is almost ready.
Hi everyone,I’m reaching out because I’m having trouble setting up a USB HS CDC (Communication Device Class) using the internal PHY, without VBUS sensing.I use STM32H7S3I8T6.My program gets stuck in the following loop before timing out: /* Core Soft Reset */ USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; do { count++; if (count > HAL_USB_TIMEOUT) { return HAL_TIMEOUT; } } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST); return HAL_OK; }Despite searching through various forum topics, I can't seem to get it to work.Here is my STM32 configuration:Clock : USB Clock : Power Regulator :USB HS Configuration :USB_DEVICE Configuration :Here is my configuration.I would be very grateful for any help you can provide.Thanks in advance,Paul
Hello,I am testing a demo of my TSD TSS012004A-AD board.It has 36KB internal RAm and 256KB internal FLASH.My configuration on touchGFX like below:And my linker result is like below:As you can see there is still %55 empty on my internal FLASH and very little SPI_FLASH is used, I would like to use only internal memory. Why this 13388B is not used on FLASH, even I force to use internal flash section on touchGFX settings. Thank you,
Hey, I am using the RK043FN66HS-CTG LCD touchscreen (480 x 272 resolution) and have used the GT911 drivers found at:GitHub - DiveInEmbedded/GT911-Touch-driver: Simple and ready to use touch driver for Goodix GT911I have a custom STM32H743IIT6 PCB.It is currently recording coordinates incorrectly in the y- axis. Bottom right hand corner should be 480,272 (X,Y) roughly in landscape configuration. I am getting ~440,180.I have gone through the GT911 Register Datasheet but cannot seem to figure out why the readings are still off.Any suggestions why I am getting these issues. I understand the config version register has to be increment by one with each set of GT911 settings. My GT911 Config is here: static uint8_t GT911_Config[] = { 0x89, // Config version 0xE0, 0x01, // X = 480 0x10, 0x01, // Y = 272 0x05, // 5 touch points 0x40, // ModuleSwitch1 (landscape, no flip) 0x20, 0x01, 0x08, 0x28, 0x05, 0x50, 0x3C, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Unable to run the program in the MCU. When I try to execute the program in my Nucleof401re board, The IDE says it is not able to detect the board. I'm literally struck here just to blink an led. I kindly appreciate any possible solutions. But do explain it in simple terms as I'm new to this kind of stuffs.
Hello,I'm working on a comprehensive project where I need to implement low-power modes without using a sequencer. However, nothing works after MX_APPE_Init. How can I deinit it?I am using MAC 802.15.4 /* Init code for STM32_WPAN */ MX_APPE_Init(NULL); HAL_Delay(5000); EnterRTCStandbyMode(10000); /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ MX_APPE_Process(); /* USER CODE BEGIN 3 */ tagReadResponseSend(); } To summarize, I want to know how to deinit MX_APPE_Init. Yes, there's a sequencer, and it works perfectly, but I want to disable MX_APPE_Init and use EnterRTCStandbyMode for sleep modes.
Hi Everyone,I'm using the P-NUCLEO-WB55 board and seeing an an issue when attempting an OTA firmware using the STBLESensorClassic mobile app running on iOS device. Execution is blocked waiting for the "FLASH_FLAG_CFGBSY" to clear in FLASH_WaitForLastOperation() in stm32wbxx_hal_flash.c. Please see screenshot below of call stack and location. SetupCubeIDE v1.14.1STM32Cube_FW_WB_V1.21.0ST BLE Sensor Classic 4.20.1 BackgroundIf I use the out of the box OTA example "BLE_Ota" on the P-NUCLEO-WB55 board the OTA update works fine. However, this example uses the sequencer which is not representative of our end application. We are using FreeRTOS in our end application. In an effort to create an application that is somewhat representative of our end application I've combined/merged the "BLE_Ota" & "BLE_HeartRateFreeRTOS" examples into a single project. With this merged project running on the P-NUCLEO-WB55 board the issue is reproducible. I've attached th
G'day Brains Trust,Does anyone know where ST record the export classification for their products?Specifically looking for the ECCN for STM32G474RET3.RegardsGTC-BH
I have flash update operations working fine on an STM32U535 with 512kB flash, but am getting an error on a 256kB device. Driving into the debugger, I find it coming out of the FLASH_WaitForLastOperation HAL routine, specifically after: reg_sr = IS_FLASH_SECURE_OPERATION() ? &(FLASH->SECSR) : &(FLASH_NS->NSSR) which returns 0b10001000, which winds up being the FLASH_NSSR_PROGERR, and FLASH_NSSR_PGSERR. I am not sure why. Code segment enclosed here: const uint32_t NVRAM = 0x0803E000; FLASH_EraseInitTypeDef EraseInitStruct = {0}; HAL_StatusTypeDef hfError; uint32_t PAGEError = 0; // To hold any page error code uint32_t pageNumber = (NVRAM - 0x08000000) / 0x2000; uint32_t progAddress = NVRAM; uint64_t *pSource = (uint64_t)&memory[0x1800]; // 1800 uint32_t quadWordCount = 0xFF / 16; if (HAL_FLASH_Unlock() != HAL_OK) { printf("Cannot erase FLASH memory.\n\r"); // Handle error, e.g., print error message return; } // Clear
hi, i trying DTLS on netXduomy goal is TLS and DLTS running independently (STM32H5 is server, PC is client) so i success mutual TLS(Ver 1.3) but failed DTLS runningi'm in situation that DTLS connection is completed at client but server is not answer about client hello(3 time ignored) i check variables and found handler pointer is null - active_dtls_session->nx_secure_dtls_tls_session.nx_secure_session_cipher_handler_server == nullso i guess DTLS initialization was not completed but i don't know what do i do i attach my code and variables please help me thank you DTLS_SESSION_CONFIG g_dtls_session_table[1]; #pragma data_alignment=8 NX_SECURE_DTLS_SERVER dtls_server; typedef struct { NX_SECURE_DTLS_SESSION sessions[1]; ULONG padding; UCHAR metadata[32*1024]; } DTLS_MEMORY_BLOCK; NX_SECURE_DTLS_SESSION *active_dtls_session = NULL; UCHAR dtls_reassembly_buffer[32*1024]; UCHAR dtls_client_cert_buffer[20*1024]; #pragma data_alignment=8 DTLS_MEMORY_B
..
Dear All,I am working on a project based on the STM32U5G9NJH6Q MCU.I have made a project using CubeMX v6.14. I am working on CubeIDE and I am using TouchGFX 4.25.0 for the GUI of my application.I have used the STM32U5G9-DK2 to verify my GUI design, using hardware accelerated vector fonts. On the DK everything seems to be working fine.But on the custom PCB I am working on, I see this:The larger font on the screen is a vector font, whereas the smaller fonts are bitmap, so I am using a mix of the 2.If I do not use hardware accelerated vectors (use software accelerated vectors instead) then the problem disappears, but the GUI is slow. My linker script looks like this: /* ****************************************************************************** ** ** @file : LinkerScript.ld ** ** @author : Auto-generated by STM32CubeIDE ** ** @brief : Linker script for STM32U5G9NJHxQ Device from STM32U5 series ** 4096KBytes FLASH ** 3008KBytes RAM ** ** Set heap size, stack size and stack lo
I am developing a Battery Management System (BMS) for a hybrid inverter solar panel system. I am using the ADBMS1818 IC as the battery management chip from Analog Devices. Currently, I am looking for a suitable MCU for my system. I found that the CYT2B7 MCU from Cypress Infineon fits my system well. However, during the development process, I need to use an MCU from STMicroelectronics. Could you recommend a series that meets my needs? Below are the specifications of the CYT2B7 Thank you for your assistance.
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.