Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello I am working on Customized board developed using STM32H755ZIT6 microcontroller. I have initialized UART first and it was working fine. Than In the same project I initialized SPI and tested back the UART and now uart is not working I used different pin configuration and Different DMA setting for both but still same problem is there UART is not working. But this code works fine on the NUCLEO H755ZIT6 board
I have the STM32H747I-DISCO, and am interested in connecting a larger touch display. What possibilities are there? What limit is there on display resolution? Could a 2560 x 1600 display be used for example (I do not need video. I just need larger physical format, higher resolution, and low frequency update in real time)? Where are the critical choke points on display resolution (apart from the obvious video memory)? MB1166? Elsewhere? What about connectors? Firstly there is CN1 a 60 pin connector on the back of the LCD daughterboard MB1166 which plugs into CN15 on the main DISCO board - is this a standard MIPI connector or arbitrary to this device? Are there independently produced displays with a compatible connector? The LCD itself is connected, as far as I can see, by two flex cables, a 12 pin flex connector CN2 from the display and a 6 pin flex connector CN3 from the touch screen. Could CN2 and CN3 be potentially used by an alternate larger display in place of the ex
Hello,I have an STM32F777 with FreeRTOS and TouchGFX. An ST7789V2 display is controlled via SPI with a partial framebuffer. After a certain time the TouchGFX task gets stuck in the function “getBlockForTransfer(Rect& rect)” in the line “assert(state[sendingBlock] == DRAWN);”(File: FrameBufferAllocator.hpp).Has anyone ever had something like this? How can I isolate the error why this happens?The screenshot shows the point where the task hangs.
Hi,I am facing a strange reset-related issue on my STM32WLE LoRa boards involving the SUBGHZ radio and the RF switch.My application sometimes needs to trigger an NVIC_SystemReset() or I reset the board through the NRST pin.However, a reliable reset only occurs when the SUBGHZ radio is explicitly placed into Standby mode and both TX and RX lines of the external RF switch are turned off before the reset.Here is what I observe:Working sequencePut SUBGHZ radio into Standby modeDisable the RF switch (TX = OFF, RX = OFF)Call NVIC_SystemReset()→ After reset, execution always starts correctly at flash address 0x08000000 (line 0 of my application).Non-working sequenceCall NVIC_SystemReset() while the SUBGHZ radio or RF switch is still active→ The system reset seems to occur only partially:• the CPU resets (peripheral turns visibly off), but• execution does not jump to the reset vector at 0x08000000 For the NRST-Pin. According to the reference manual, this pin needs to be pulled down for at
Hi,The memory address of the AH1B is being referenced on the memory block as 0x4000 0000 (page 67) but further in the documentation it is referenced as 0x4002 0000 (page 69) Please open an internal ticket for doublecheking and possible fix on the nex Rev. Best,Alessandro
Hello,I am in the process of designing a product which is based on the STM32-H753 and requires P/SRAM.However, I'm concerned the H753 might not support on PSRAM with QSPI, I need the PSRAM for write/read.I haven't found any application notes or examples from ST showing connection QSPI PSRAM into the STM32 only for FMC or OCTOSPI Flash.Has anyone successfully used QSPI PSRAM with STM32H7 ?Are the specific requirements or limitation I should be aware of ?(attached reference images for context):
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
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?
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 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,
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 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.
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
Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code. Hi, I’m now trying to port the STEVAL-STWINBX1 firmware to my custom hardware whose MCU is STM32U575VGT6. I started by porting the data logging application: fp-sns-datalog2\STM32CubeFunctionPack_DATALOG2_V3.1.0\Projects\STM32U585AI-STWIN.box\Applications\DATALOG2During execution the following code gets stuck,and eventually returns HAL_ERROR. /* Wait for calibration completion */ while (LL_ADC_IsCalibrationOnGoing(hadc->Instance) != 0UL) { wait_loop_index++; if (wait_loop_index >= ADC_CALIBRATION_TIMEOUT) { /* Update ADC state machine to error */ ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_ERROR_INTERNAL); __HAL_UNLOCK(hadc); return HAL_ERROR; } I’ve verified that the hardware is fine with my own test program (DAC generates a sine wave, ADC sampl
Hello ST Community,I am currently working on a ZigBee communication project using the STM32WB55RG microcontroller. My goal is to establish ZigBee communication between the STM32WB55 (running ST ZigBee stack) and an external Digi ZigBee module (for example, ZigBee Series 3 ).Before proceeding, I would like to confirm the following points:Feasibility:Is it possible for the STM32WB55 ZigBee stack (ZigBee 3.0 based) to communicate directly with a Digi ZigBee module over-the-air, assuming both are configured on the same ZigBee channel, PAN ID, and security settings?Technical References:Are there any application notes or examples that describe interoperability between STM32WB ZigBee and third-party ZigBee devices (such as ZigBee )?What ZigBee profiles or device roles (Coordinator / Router / End Device) should be configured for best compatibility?Roadmap / Implementation Plan:My current plan is:Use STM32WB55 as a ZigBee Coordinator or Router (using ST ZigBee stack ).Use the Digi ZigBee module
Split from "Range [0,-1) out of bounds for length 48" trying to open Debug Configuration - this is a new question.Hi,When I am testing the STM32N6570-DK_GettingStarted_ObjectDetection I have faced the same "Range [0,-1) out of bounds for length 48", that issue was solved after that I'm getting below issue as going to Hard_fault handler in from app_postprocessing.
Hello Everybody,Here are the software and boards in this case:1. MC workbench 6.4.12. STM32 FW V1.28.2I’m running the code generated by ST MCSDK and noticed that the waveforms on the microcontroller’s U-phase and V-phase channels (see pins Ch. U and Ch. V in picture 2) are not center-aligned—there is a slight offset (see picture 1: the center of the blue waveform is shifted a little to the left relative to the yellow one). How can I fix this? I suspect this mismatch is causing noticeable acoustic noise while the motor is running.How can I fix the problem? Thank you!
Hi, I am using ADC1 on stm32H563ZI nucleo board with trustzone enabled, I am not getting proper adc values (getting adc count of 822). When trust zone is disabled I am getting proper value of around 4095 with input of 3.3Volt .I am attaching the project.Please help with this issue.
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.