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
hello when i use UART Idle interupt with DMA on STM32H743XIH6 chip,i found ,the interupt function will run imediatly when HAL_UARTEx_ReceiveToIdle_DMA(&huart2, (uint8_t *)Uart2RxBuffer, 50)run,and this is my core code MPU_Config(); // SCB_EnableICache(); // SCB_EnableDCache(); HAL_Init(); SystemClock_Config(); PeriphCommonClock_Config(); delay_init(); __HAL_RCC_BKPRAM_CLK_ENABLE(); HAL_PWR_EnableBkUpAccess(); MX_GPIO_Init(); User_GPIO_Init(); MX_DMA_Init(); MX_USART2_UART_Init(); HAL_UARTEx_ReceiveToIdle_DMA(&huart2, (uint8_t *)Uart2RxBuffer, 50); /////////////////////////////////////////////////////////////////////////// UART_HandleTypeDef huart2; DMA_HandleTypeDef hdma_usart2_rx; /* USART2 init function */ void MX_USART2_UART_Init(void) { huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX
Post spread from STM32H745: No device found on target on a custom board Hi, and thank you for your previous answer and for pointing me to RM0399 / figure 22. I am quite new to the STM32H7 power configuration, so I may have misunderstood the datasheet and reference manual. I am using an STM32H745BI with only an external 3.3 V LDO (no SMPS components on my board). In CubeMX I have changed the power configuration from PWR_DIRECT_SMPS_SUPPLY to PWR_EXTERNAL_SOURCE_SUPPLY Right now my board is wired like this: VDDx: 3.3 V, each with 100 nF decoupling VSSx, VSSA: GND VBAT: not connected VSSSMPS: GND VLXSMPS: not connected VDDSMPS: not connected VFBSMPS: not connected VCAP1 / VCAP2 / VCAP3: 2.2 µF to GND VDDLDO_1 / VDDLDO_2 / VDDLDO_3: not connected PDR_ON: 0 Ω to GND SWD is not working reliably and I suspect my power-pin connections are wrong. For a pure LDO-only supply (no SMPS hardware) could you please tell me how these pins should be connected? VBAT VDDSMPS
I’m working on a project that requires bidirectional communication between daisy-chained STM32F103C bluepill boards and an ESP8266. I’m using a master-slave architecture and UART for initial testing and prototyping. The chain has 3–6 STM32 boards. Right now I’m having trouble getting reliable two-way data transfer between the ESP8266 (master) and the STM32 boards (slaves). Can anyone help me get this working?
Hey,I tried to follow all the steps of this thread as good as possible. Still I have a faulty SAI Perpheral. The Problem is that the generatet FSYNC and BCK are too low. They are both also dependent on the PLL Frequency. For example if i set IC7 so that it has 12.288MHz the FSYNC is 2kHz (insted of 48kHz) and BCK is 512kHz (instead of 12.288 MHz).When i set IC7 to 192MHz FSYNC is 31.3kHz and BCK is about 8MHz. Also if I set any other clock channel than IC7 to feed the SAI1 Peripheral, then there won't be any FSYNC or BCK anymore. The D-Cache is working and doesn't give me an error as i followed this post: https://community.st.com/t5/stm32-mcus-embedded-software/stm32n6-using-dcache-with-freertos-and-sai-gpdma-usage/m-p/850823/highlight/true#M69398I am running everything in Appli. Here are the settings:SAI Setting: GPDMA1 Setting:
Hello, I am trying to make a write into flash driver but I am having some issues.I know that the only way to write a 1 to the memory is by clearing the whole page, but I am having issues writing 0s.By reading the manual I encountered: Bit 2 PGERR: Programming error Set by hardware when an address to be programmed contains a value different from '0xFFFF' before programming. Does that mean I can only write 0s once to each addres per page clear?If this is the case, why is that? Wouldn't I be capable of writinng indefinetly when I am not trying to write any 1 in the memory?
Hello, we have a system that consists of 12 VL53L7CX sensors each, on 4 different I2C busses and we are using an I2C address translators (LTC4316CDD) to address them all without needing to change their address dynamically. We are using ST's ULD (ultra-light driver) to interface with them.One challenge we are running into during application development, is that after we initialize all 12 sensors and start ranging, if we restart the microcontroller application we are sometimes unable to re-initialize the sensors - the `vl53l7cx_init()` call fails somewhere.Our current test setup makes it difficult to power cycle just the sensors because doing so also power cycles the host computer.My questions are:Is there an I2C register (or set of registers) that I can access to check if the sensor has been previously configured and if it's actively ranging? This would be helpful to avoid spending time re-initializing if we don't need to.Also, is there an I2C register that I can write to "reset" the se
I am sending and receiving MQTT messages. My problem is that after normally working it could be that one ACK is not been sent out to the broker which prevents him to send anymore messages to my board.I recognized that by watching the packets on the bus with wireshark and also some debug prints. My app is running it could be for hours. I can send and receive messages for a long time. But on any circumstances one ACK is not been sent to the network and stalls the whole communication with the broker. What about watching the tx interrupt coming from the eth. Any more ideas where to debug this in more detail. Thanks in advance
I'm using an STM32U5A9J-DK and I've followed this guide step-by-step https://community.st.com/t5/stm32-mcus/how-to-redirect-the-printf-function-to-a-uart-for-debug-messages/ta-p/49865From the docs https://www.st.com/resource/en/user_manual/um2967-discovery-kits-with-stm32u5x9nj-mcus-stmicroelectronics.pdf I'm seeing that the virtual port is set to USART1, so I've set it up with CubeMX which generated/** * @brief USART1 Initialization Function * @PAram None * @retval None */ static void MX_USART1_UART_Init(void) { /* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_7B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OV
how to design the "NRST" pin about hardware?
I am using mbedtls module to verify the signature of firmware using RSA and its giving MBEDTLS_ERR_PK_INVALID_PUBKEY after parsing the public key. I am using OpenSSL for generating public and private keys the public key is generated using openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048andopenssl rsa -pubout -in private_key.pem -outform DER -out public_key.derin der format and then converted to a .h file using python -c "data=open('public_key.der','rb').read(); print('const unsigned char public_key_der[] = {'); print(', '.join(f'0x{b:02x}' for b in data), end=''); print('};'); print(f'const unsigned int public_key_der_len = {len(data)};');" > public_key.hIn the mbedtls_config.h file I have enabled the following things#define MBEDTLS_PKCS1_V15#define MBEDTLS_PK_C#define MBEDTLS_PK_PARSE_C#define MBEDTLS_RSA_C#define MBEDTLS_BIGNUM_C#define MBEDTLS_ASN1_PARSE_C#define MBEDTLS_OID_CHere is the main function I am using to parse the public
Hi,I need help to setup the DeviceTree for our custom board using STM32MP135FAE7 and TI TLV320AIC3254.I have read the Wiki about SAI and read and tried to implement SAI using these posts as reference:https://community.st.com/t5/stm32-mpus-products/stm32mp135-pcm5102a-sai1a/td-p/573289https://community.st.com/t5/stm32-mpus-embedded-software/stm32mp135-sai-missing-clock-error-at-boot-time/td-p/55114https://community.st.com/t5/stm32-mpus-products/help-in-creating-a-simple-soundcard-with-i2s-or-sai-if-necessary/td-p/568430/page/2No Luck.And also got confused about where to put the Codec. On the Wiki Page here shows codec under i2c node but on this post there is a comment from @Erwan SZYMANSKI saying that codec should be under root not I2C or I2S. How should I decide where to put it, is it depending on the IC ? What am I missing?and following those comments, I have enabled the configs related to codec in the config file and updated the kernel and they show up.CONFIG_SND_SOC_T
Hi everyone,I am currently running the DCMIPP_Continuous mode example from STM32N6Cube firmware v1.2.0. However, I am getting stuck at the function call:HAL_result = HAL_RCC_OscConfig(&RCC_OscInitStruct);RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_NONE; RCC_OscInitStruct.PLL1.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL1.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL1.PLLM = 4; RCC_OscInitStruct.PLL1.PLLN = 75; RCC_OscInitStruct.PLL1.PLLFractional = 0; RCC_OscInitStruct.PLL1.PLLP1 = 1; RCC_OscInitStruct.PLL1.PLLP2 = 1; RCC_OscInitStruct.PLL2.PLLState = RCC_PLL_NONE; RCC_OscInitStruct.PLL3.PLLState = RCC_PLL_NONE; RCC_OscInitStruct.PLL4.PLLState = RCC_PLL_NONE; HAL_StatusTypeDef HAL_result; // Have a variable to catch the result HAL_result = HAL_RCC_OscConfig(&RCC_OscInitStruct); // Catch the result if (HAL_result != HAL_OK) { Error_Handler(); }After some debugging, I found that the function returns HAL_ERROR. Earlier, this code was working fine,
This page is currently empty: How to build and debug boot project on STM32MP25 CortexM33 in STM32CubeIDEHere's how to get to the page:STM32MP2Dev | Product - STMicroelectronicsClick on the first Wiki link (9 of 9), then you get to this page:How to build and debug boot project on STM32MP25 CortexM33 in STM32CubeIDE - stm32mpu
Can someone explain how to build own custom yocto linux ?I have experience with raspberry pi, but stm32mp2 have none normal explanation.I have cloned from git scarthgap branch of poky, meta-openembedded, meta-st-stm32mp and meta-st-openlinux. Also, I have downloaded stm32mp SDK.I can't understand if cubemx project for the board is needed ?if needed how to add it if I have generated it ? I have many years of embedded programming of stm32I can't find any build machine for bitbake for stm32mp257f-ev1 ?Overall, trying to build default machine="stm32mp2" gives plenty errors, which I cannot understand.Maybe someone can provide very direct explanation for building image ?
You flipped the power on and… nothing. USB won’t enumerate. The device resets intermittently. Or ADC samples at the wrong rate. Before blaming the hardware, check the clock tree and flash latency. CubeMX gives a helpful UI, but you must interpret the numbers — PLL inputs/outputs, AHB/APB prescalers, timer clock doubling, and flash wait states or subtle configuration mismatches will bite you.The big pictureSYSCLK (system clock) drives the CPU and the AHB bus.AHB/APB prescalers split SYSCLK into peripheral bus clocks (APB1, APB2). Peripherals (UART, SPI, I2C, ADC, timers) use these derived clocks.PLLs are used to multiply/divide crystal or internal oscillator frequencies to reach the target SYSCLK and special 48 MHz domain for USB, RNG, etc.Flash latency (wait states) must be configured so the CPU can read Flash at the chosen SYSCLK. If flash latency is too low the CPU will fetch wrong instructions → crashes or strange behavior.Voltage scaling / power range often limits maximu
I tried to follow this tutorial: How to build an AI application from scratch on the... - STMicroelectronics Community , could not figure out how to enable NPU RIF, so i skipped it. I tried to debug using the FSBL main.c, the blue led did turn on, but i got the error in the screenshot when trying to launch application in FSBL main.c. Project: willisk0612/nucleo-getting-started
The project is a TouchGFX demo running on the STM32H735G-DK.Building works (vscode+plugin+cmake+clang). Flashing works with STM32CubeProgrammer.Debug/flashing doesn't work with STM32Cube plugin, it does work with cortex-debug plugin with a custom launch.json file. Since that is incompatible with the plugin it will require using VSCode profiles and switch between them constantly.If I try to debug using the plugin I get this:STMicroelectronics ST-LINK GDB server. Version 7.11.0Copyright (c) 2025, STMicroelectronics. All rights reserved.Starting server with the following options:Persistent Mode : DisabledLogging Level : 1Listen Port Number : 61234Status Refresh Delay : 15sVerbose Mode : DisabledSWD Debug : EnabledInitWhile : EnabledWaiting for debugger connection...GNU gdb (GNU Tools for STM32 13.3.rel1.20250523-0900) 14.2.90.20240526-gitCopyright (C) 2023 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software
Greetings. I am building a 24V, 240W power supply with the help of the ST eDesign Suite website. The problem I have is that before starting, it goes into a blinking mode. To start it, I have to measure with a multimeter on the ZCD pin. Then, suddenly, it enters the steady state and outputs a continuous voltage value. Before this, the Vcc voltage has a triangular shape in the power supply, reaching the minimum supply value of 10.4V and 12.5V. Would anyone know what this is due to and how I can fix it? I was wondering if it would be possible to obtain the Spice model to simulate the component. Attached is the link to view the power supply design in eDesign Suit: L6566B QR FLYBACK AC/DC Converter | eDesignSuite | STMicroelectronics I have also used two different transformers in case the problem was this. I am attaching them as well. Greetings and thank you very much.
I have to say I am unimpressed with ST's tech support (there is none: they just referred me to the forums). And when I selected the 'Analog and audio' group, I couldn't post there as it was 'read-only'!! If there's a more appropriate product forum I *can* post to, please advise.Anyway, here goes with my request for help...Re: TDA7498E (Class-D audio amplifier)This device appears to be an old product, though apparently still in production. Is there a more recent similar device available? Is there likely to be a GaN version released anytime soon?The datasheet for this device shows that there are two 3.3V output pins (VDDPW, VDDS), and these supplies are maybe used internally. But nowhere in the datasheet is a specification for the maximum current available to be drawn externally from either of these 3.3V outputs!This also raises the question of why the AN4015 application note includes an *external* 3.3V low-current supply. Why, if this voltage is available from the device pin
The STM32WL5MOC component is both LoRaWAN and Sigfox verified. I need to be able to use both types of connections. AT commands for LoRaWAN are readily available. Is there a guide of AT commands for Sigfox and an AT command to switch between modes? Thanks.
I have design Buck converter with Viper318HD ,With below specification:Vin:(85 to 265)VACVout=12VDCIout=500mAAnd i not follow recommended Commponents value which Are mentioned in Edesign tool, i use components which are availble with me.So i need:1- Know is this design will be stable to use it or not ??
In accordance with the booting procedure for STM32MP2 https://wiki.st.com/stm32mpu/wiki/STM32MP2_backup_registers#Boot_mode_selection_feature ROM analyzes the BOOT_MODE register and decides to switch to serial boot mode: "The ROM code executes a serial boot if BOOT_MODE[7:0] is equal to 0xFF". It is TAMP_BKP96R (0x46010280) for STM32MP2xx processors. And if I write 0xff there and do a reset, then the processor will reset and go into USB boot mode. In Linux, there is a command for this: reboot romcode_serial.This mode and this command worked perfectly in STM32MP1xx processors but does not work at all in STM32MP2xx.Moreover, I even tried writing directly to this register in U-boot mode and doing a reset - the result is the same, this mode does not work. Is there any special feature in this mode for STM32MP2XX series processors or is this a ROM code issue?
Hello everyone,I'm currently working on a project where I need to transmit ADC data over UDP to a server. I've previously had it working, but after re-generating code Hard-faults or Memory faults would start to appear.CubeIDE : 1.19Firmware: FW_H7 V1.12.1 void MemManage_Handler(void){/* USER CODE BEGIN MemoryManagement_IRQn 0 */uint32_t *sp = (uint32_t *)__get_MSP();uint32_t stacked_pc = sp[6];}While debugging sp would get the value:Details:0x240000bc <memp_memory_RX_POOL_base+32>Also I get a Hardfault:0x240031bc <memp_memory_RX_POOL_base+12576>I do cache invalidation on my main code to be able to update the data that will be sent through UDP.while (1){ MX_LWIP_Process(); if (adc_full_ready) { adc_full_ready = 0; SCB_InvalidateDCache_by_Addr((uint32_t*)adc_data, adc_input_buffer_size * sizeof(uint16_t)); udpClient_send_adc(adc_data, adc_input_buffer_size); } //I also have an if for half data, as the callback of the adc sets the adc_full_ready flag to 1 }which of
If have read the RM0456 and could not found a detailed description.If I switch the option byte DUALBANK to 0 single-bank mode, what will happen if I access a address which is normally supposed to be in bank 2? Do I get a memory access error?So is my assumption correct? That would mean switching on the single bank mode of a 2MB device, I can only used 1MB of the first bank? best regards P.
Good morning, I need to connect two h7a3zi-q board via uart (only one way required), but by only connecting tx1->rx2 the programs run but I get empty strings, and by also connecting the grounds of the two boards the tx program gives HardFault. I'm sure of the content of the msgs as I also send via uart3 to my pc and I have no problems. Any tips? Thx
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.