Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi Everyone,I am working on a project with TouchGFX. I'm working with STM32U5G9ZJT6 and I have an external RAM APS12808L-OBM-BA connected via HSPI (Fclk-hspi 100 MHz) in mapped mode. The project is working, but the image animation are not working well. To solve it I have decided to increase the HSPI frecuency.The APS12808L-OBM-BA memory can operate at up to 200MHz. However, when I exceed 118MHz, I can't map the memory. You can see a picture below reading the memory after mapping (you see "?").I have changed the memory read latency (MR0 and MR4) to increase the Fmax.I need all of suggestions for this issue.Thanks in advance all
Dear ST team.(related :Re: UART of NUCLEO-WB09KE UART signal no found - STMicroelectronics Community)I am testing with NUCLEO-WB09KE EVBStarted from the example code ; "BLE_Peripheral_Lite", which is using PB0/PA1 as usuart portI can see the Uart output signal on MB1801, CN3.37. Then I manipulate to code to use LPUART; PB4/PB5 [attached code: BLE_Peripheral_Lite_LPUART1_PB4PB5.zip]But the result is, Uart output signal is still on MB1801, CN3.37(same PIN with USART).Did I do something Wrong? or Missed something?Please Help
Can I join a LoRaWAN network only once?so that after a software or hardware reset, i would not need to join the same network once again I am working with LoRaWAN_End_Node_LBM example
If the STM32H743IIK6 is clocked by an external 25MHz clock generator, but we still aim for minimum current consumption until a wake-up is required, what is the lowest achievable current draw assuming everything is powered down except for the external oscillator? Thanx,Eli.
In the last weeks, I was working on running W25Q256 nor flash chip from vendor Winbond with STM32F746 MCU on a custom board. My guideline in this road is ST's how to run QSPI flash video tutorial (5-part video) and of course some genius guys in the community who's helped me a lot to rewrite the functions of QSPI flash (Init, Erase, Write, Memory-mapped). So far functions tested in the Main.c and I can read the pre-written data on the memory. The next step is to generate (.stldr) external loader file and modify Flash.ld file.according to the video tutorial, I added Loader_Src.c, dev_inf.c, and dev_inf.h files to the workspace but there is a little confusion about flash.ld file that contains memory definitions and all other data and text stuff to assign to specific memory (>FLASH, >RAM, >QUADSPI).for the point of concern, I use STM32F746 with IS42S32400F SD-RAM connected with 2-banks to MCU and of-course W25Q256 NOR-FLASH.how to modify flash.ld file to my specific condition and
The graphical representation shows an internal op-amp amplifying the signal entering the comparator's positive input.However, the STSPIN32G4 positive input comparator cannot be an op-amp output unfortunately and is limited to op-amp positive inputs - see Ref. Manual RM0440 ver 9 (Figure 168).This is misleading, because only non-amplified signals gets to the positive input of the comparator.
Please provide a Linux version of MCSDK. ST already has CubeMX and CubeIDE for Linux and they also run on Java, so I guess it should not be a problem.Or even a better alternative, just provide source code for MCSDK examples in a git repository. It is very frustrating to obtain source code through CubeMX and always having to log in.
Hello,I noticed that the MB1720 High_band Low_power configuration and the MB1720 High_band High_power configuration have different input line differentials. I would like to know, when combining High_band/Low_power nodes with High_band/High_power nodes in the same RF mesh network, what design considerations should be followed and how the part should be designed?Thank you.
Hi Technical Support Team,I am working with the Nucleo-H563ZI board and would like to enable the I3C interface within the Zephyr environment.Could you provide a minimal sample project or a reference configuration (Devicetree/Kconfig) to validate the I3C host driver and I3C shell?Thank you for your assistance.----------------------------------------------prj.confCONFIG_I3C=yCONFIG_I3C_SHELL=yCONFIG_I3C_STM32=yCONFIG_USERSPACE=yCONFIG_I3C_RTIO=y----------------------------------------------
:warning:Note: The internal GPIO structure has been simplified for better conceptual understanding. (Components such as ESD protection diodes, pull-up and pull-down resistors, etc., are not shown.):warning:Warning / Disclaimer This analysis is based on my personal study and interpretation of technical documents. Therefore, I cannot guarantee that it fully represents the actual internal behavior of all STM32 microcontrollers. This is a simplified conceptual model for educational purposes.INTRODUCTIONIn this document, we will examine how our code affects GPIO units at the MOSFET level. Our analysis focuses on the MOSFET switching logic in General Purpose Output (Push-Pull, Open-Drain) and Input Mode (Analog and Alternate Function modes are not included in this analysis). I used the following documents as references for this analysis and the visuals:AN4899 Application Note (STMicroelectronics)RM0365 Reference Manual (STM32F3 series)Since this analysis is based on the STM32 architecture, w
Hello,I am working on a project using an STM32H7S3 with an XSPI NOR Flash (ISSI IS25WX064) running in XIP (Execute-in-Place) memory-mapped mode. The firmware is split into two stages: a Bootloader and an Application context executing directly from the external flash.I need to put the flash into Deep Power-Down mode (command B9h) before the STM32 enters Standby, in order to minimize total system current consumption. On wake-up, the Bootloader handles the Release from Deep Power-Down (ABh) before re-entering memory-mapped mode and jumping to the Application.I am struggling to find a clean way to send the Deep power down command from the Application context. The main obstacles are:1. The XSPI handle (hxspi1) lives in the Bootloader context, so the Application does not have direct access to it.2. The Application code runs from XIP flash. This means that aborting the memory-mapped mode (required before sending any command) from code that itself is fetched through that same memory-mapped int
Hello everyone, I have a custom PCB with an RFM69HCW and an STM32L011G4U6, I'm stuck, transmission and reception work fine, but if I want to add an ID, it gets stuck, here are my two INI files, sorry for my English. void RFM69_Init_RX(void) { uart_print("=== RFM69 CAPOT RX INIT (868MHz) ===\r\n"); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET); HAL_Delay(50); RFM69_WriteReg(0x01, 0x04); // Standby HAL_Delay(10); // === Fréquence 868 MHz === RFM69_WriteReg(0x07, 0xD9); RFM69_WriteReg(0x08, 0x00); RFM69_WriteReg(0x09, 0x00); RFM69_WriteReg(0x11, 0x7F); // Puissance max // Configuration Paquet RFM69_WriteReg(0x02, 0x00); // Packet mode RFM69_WriteReg(0x03, 0x1A); RFM69_WriteReg(0x04, 0x0B); RFM69_WriteReg(0x2F, 0xAA); // Sync Word RFM69_WriteReg(0x30, 0x55); RFM69_WriteReg(0x37, 0x00); // Pas d'adressage RFM69_WriteReg(0x38, 9); // Payload Length = 8 octets (suffisant pour "arm" et "o
Hello, I have implemented a DDS sine wave generator where I use a timer interrupt to update DDS phase word and also use the same timer triggering a SPI transmission via DMA to an external DAC using a nucleo-g431rb. I am now doing the same thing with a nucleoh723zg on a different pcb, but cannot achieve the same performance. I've only uploaded 1 spectrum image of the H7 output but the problem is the image I uploaded is not the constant spectrum, it's center frequency changes -20 to 20 Hz every sweep. I am using ~16MHz SPI speed and I have checked hardware of both pcbs, there is no problem with the communication and DAC CS jitter is very low (or none) for both MCUs. I also checked the phase word variables on the run via uart in H7 and saw that there are reoccurring (not periodic though) jumps in phase word. But I use uart so cannot be exactly sure about that. I'm sure there are no missing interrupts which I'm controlling by flipping a GPIO pin. I can use a direct write to SPI data regist
I need to implement a protocol using 11110000 as preamble. The protocol is 2-FSK 868.1 MHz, +/-35kHz, 25kbps. According to RM0511 STM32WL33 only supports 01010101 or 10101010 as preamble for 2-FSK. Is it feasible to use the STM32WL33? I am planning to use direct buffer mode.
Hi ST Support Team,I am working with the STM32L476RCT6 on a custom-designed board for an NFC reader project.I am facing a critical issue during basic bring-up:Issue DescriptionThe MCU appears to hang when using HAL_Delay() and HAL_UART functionsThe code runs only during debug (step-over execution), but not in normal run modeIn normal execution:HAL_Delay() blocks indefinitelyUART transmit functions also get stuckIn debug mode:Code executes correctly step-by-stepGPIO (LED toggle) works as expectedWhat I Have VerifiedFirmware is successfully flashedMinimal project (only GPIO toggle, no complex logic)Using default CubeMX-generated initializationSystem clock configured to HSI (no external crystal)Issue persists even in a very simple projectObservationsBehavior suggests a possible issue with:SysTick / time base not runningInterrupts not functioning correctlyOr clock configuration problemRequestCould you please help identify:Why HAL_Delay() is blocking in normal execution but works during deb
Hi everyone,I’m relatively new to embedded systems, so apologies if this has already been discussed elsewhere. I’ve tried searching, but haven’t been able to find a clear solution.I’m currently developing a system based on the STM32F746G Discovery board using TouchGFX for the touchscreen UI. In addition, I’m interfacing with a distance sensor over I2C. My goal is to log data (timestamp + sensor value, already formatted) to an SD card.The issue I’m facing is the following:When I enable only SDMMC and FatFS in CubeMX, I can successfully open a file and write data to it.However, when I integrate this functionality into my full project (which includes TouchGFX, FreeRTOS, and I2C), the SD card logging no longer works.I’d really appreciate any guidance or suggestions on what might be causing this or how to approach debugging it.Thanks in advance!
The board I am using is NUCLEO-H7S3 and I have encountered the following issuesI want to perform continuous and large data sampling using ADC+DMA, but when the collected value reaches 10000, the subsequent values become 0. When I modify the number of collected values to 50000, it stops at 17231 and the subsequent values remain 0. At this point, I am connecting the ADC pin to the 3.3V on the board. I'm not sure where the settings went wrong, please help me.Thank you.
"I am currently working on implementing Ethernet communication using a NUCLEO-H753 board. As a first step, I attempted to perform a ping test. I followed the official tutorial videos provided by STMicroelectronics step-by-step, but unfortunately, I am not getting the expected results (the ping is failing). I would appreciate any guidance or advice on what might be causing this issue or which specific configurations I should double-check." "Let me share my CubeMX configuration with you first so we can review the setup." 1. System Core - CORTEX_M7 2. Connectivity - ETH 3. LwIP 4. Clock I will also share the modified source code with you. STM32H753ZITX_FLASH.ld /* Modification start */ .lwip_sec (NOLOAD) : { . = ABSOLUTE(0x30040000); *(.RxDecripSection) . = ABSOLUTE(0x30040100); *(.TxDecripSection) . = ABSOLUTE(0x30040200); *(.Rx_PoolSection) } >RAM_D2 /* Modification end */ ethernetif.c /* USER CODE BEGIN 2 */ #if defined ( __ICC
Hello, I've recently managed to modify the SBSFU example for the STM32F413H-Discovery board and adapt it for my STM32F419 mcu, building it and executing it successfully.Now the issue is, i need to modify the loading mode from serial ymodem to downloading the firmware image from a file inside of an USB stick To do this, im using the ST driver that is present already in other projects, which requires interrupts (specifically OTG_HS_IRQn and possibly others) but when the code tries to setup the interrupt and its priority with HAL_NVIC_SetPriority(OTG_HS_IRQn, NVIC_PRIORITYGROUP_4, 0); HAL_NVIC_EnableIRQ(OTG_HS_IRQn); There's a reset of the MCU, so how do i make it so that the SBSFU project can use interrupts?I stumbled upon the AN5056 document where at page 38 talks about interrupt support in the SBSFU, but for the STM32L496 which has a Firewall feature i do not have. Is that still the correct way of proceeding? If so, how?Best regards
Hello,I am working on a project where I need to both read and write regularly into the STM32 flash memory. I have some concerns and questions regarding its endurance.First off, I posted a question not long ago about writing to FLASH using ST EEPROM library. I was wondering why upon writing to a variable, it did not effectively write it into flash. This is essentially due to how the library itself works. Hence why I can not really use it to manage flash wearing, because I need the writing to happen precisely when I call a write function due to the fact that my product can be power off at any moment.So going back to the reference manual RM0456, I came upon section 7.3.8 which states:"Each flash memory page can be written and erased 10 000 or 100 000 times. A maximum of32 pages (256 Kbytes) per bank feature this increased endurance of 100 kcycles. Thisenhanced endurance can be used for data storage that usually needs more intensivecycling capability than code storage.Any flash page can be
Hi all, I’m debugging a reproducible SPI6 slave issue on STM32H753ZI and would like feedback from anyone familiar with H7 SPI v2 behaviour. Setup MCU: STM32H753ZI Peripheral: SPI6 slave Master: Raspberry Pi 5 (spidev) Pins: PA5 SCK PG8 NSS PG12 MISO PG14 MOSI SPI mode: CPOL=0, CPHA=1 (HAL SPI_PHASE_2EDGE) Pinmux verified as AF8 on live registers. Important context about observed bytes Initially master read 0xFF consistently; after removing pull-up resistors on the MISO path, reads became 0x00.This was line-bias behaviour, not a functional fix: pull-up + Hi-Z -> 0xFF no pull-up/weak low bias + Hi-Z -> 0x00 So the core issue remained: slave not reliably driving/qualifying frames. What I tested I instrumented both HAL and LL test images (counters + CR1/CFG1/CFG2/SR + pin-level edge counters). A/B tests that did not fix it NSSPolarity LOW vs HIGH AFCNTR 0 vs 1 soft/hard NSS var
Hi, I am using the Nucleo-L552ZE-Q board. I use STM32CubeMX version 6.17.0 which appears to be the laters version. When generating code for SD card FAT FS using CubeMX i get "sd_disckio.c" file containing only stubs of the functions, without content (the stub functions just return error value/no_init value). In CubeMX i have done some fault finding steps already with no luck. I have configured SDMMC1 before enabling FATFS. I am staying with default values, exvcept clock divider (Currently using 8). I am using Mode "SD 4 wide bus" Under Middleware->FATFS i enable it for SD card. SOMMC instance is SDMMC1, BSP code none. The rest is default values. FAT FS version in cubeMX is R0 12c I have tried investigating the options in CubeMC, but i cant spot anything wrong so far. I also tried starting from scratch with a new project in CubeMX, with the same result: sd_diskio.c only contain stubs. Does anyone have a fix for this issue? Or can anyone point out where i find the&nbs
Hi,I want to create a pin-compatible board to X-NUCLEO-SRC1M1 to further explore USB-C charging, is there a STEP or DXF file available for this or any other X-NUCLEO board that has both the ST Morpho and Arduino UNO R3 connectors please?Kind regards,Al
Hi, I am using two rotary encoders on an STM32U5G9ZJT. Currently I have:- TIM8_CH1 and CH2 available- TIM3_CH3 and CH4 available I know that standard encoder mode uses CH1 and CH2. CubeMX shows options like:- Encoder Mode (with remap CH1/CH2)- Encoder Mode + Index (with remap CH1/CH2 + ETR) My encoders are simple mechanical rotary encoders. Question:Should I use "Encoder Mode with remap" to map CH3/CH4 to CH1/CH2,or is there any benefit to using "Encoder Mode + Index"? Is there any difference, If I use "TIM8 in encoder mode" or "TIM3 encoder mode from remap" Thanks!
Hi everyone,I’m currently experimenting with the GPIO_IOToggle_TrustZone example using STM32 TrustZone.When I build and flash both the Secure and NonSecure firmware, everything works correctly: the LED toggles as expected, so the interaction between Secure and NonSecure worlds seems fine.However, I’m running into an issue with debugging:I can successfully debug the Secure projectbut I cannot seem to debug the NonSecure projectI am using STM32CubeIDE and I would like to understand how to properly configure the environment to be able to debug the NonSecure application as well.Specifically:Do I need a separate debug configuration for the NonSecure project?Is it required to start debugging the Secure project first and then attach to NonSecure?Or is there a specific STM32CubeIDE / ST-LINK / TrustZone debug configuration that I am missing?Any guidance on the correct way to set up STM32CubeIDE for debugging the NonSecure project would be really appreciated.Thanks in advance!
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.