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
Hi everyone,I’m feeling a bit defeated by a task that should be "Hello World" level simple. I’m trying to get a basic printf to show up in PuTTY using a NUCLEO-G474RE, but I’m getting absolutely nothing in the terminal.I do this all the time with my NUCLEO-H723ZG using USART3 and it works like a charm. For the G4, I’ve switched over to USART2, but no luck.Here is my setup:Toolchain: CubeMX + CMake.The Logic: I've overwritten __io_putchar() with a HAL_UART_Transmit call.The Config: USART2 is enabled, baud rate matches PuTTY (115200), and the clocks seem fine.I even had a friend who uses G4 boards regularly take a look, and even he couldn't figure out why the data isn't hitting the ST-Link. It feels like I'm missing one tiny, G4-specific checkbox or jumper setting.I've put together a bare-bones repository with just the code for the printf here: https://github.com/mpek29/nucleoG4Has anyone else run into similar issues ?Thanks in advance for any pointers, I'm sure it's something silly I've
Hello everyone,I am developing an iOS application using the ST25SDK (converted/wrapped for Swift) to interface with the M24LR16E-R Dynamic NFC Tag.I am facing a blocking issue where any attempt to call readBytes() (which is used in TagReadMemoryGenViewController.readMemoryContent) throws a ComStSt25sdkSTException with error code BAD_PARAMETER.The Setup:Chip: M24LR16E-R (IC Ref: 0x4E)Platform: iOS (Swift) using CoreNFCLibrary: ST25SDK for iOSThe Problem: Upon investigation, the root cause appears to be that the ST25SDK mTag.getMemSizeInBytes() returns a memory size of 0 bytes. Consequently, when readBytes() is called, the SDK performs an internal safety check: if (address + length > mMemSizeInBytes) { throw BAD_PARAMETER; } Since mMemSizeInBytes is 0, this check always fails.Root Cause Analysis: The issue seems to originate in the iOSRFReaderInterface during the Get System Info command. The M24LR16E-R has 512 blocks (2048 bytes total). When using CoreNFC's native getSystemI
Hello, I am currently evaluating the STM32N6570-DK and am seeking clarification regarding a discrepancy I’ve encountered. I can confirm that there is a 48MHz crystal on board for the HSE. However, the default CubeMX projects generated by the board selector, as well as other example projects I have reviewed, all configure the input frequency to 24MHz. Could you please clarify what the correct input frequency for the HSE should be on this discovery kit? Thank you for your assistance.
I've designed a custom board and, I'm writing my own firmware that controls STPMIC.While writing a general-purpose driver library to enable future use in other hobby projects, I ran into a few questions.my own general-purpose driver library is: https://github.com/jay94ks/stpmic 1. MAIN vs. ALTERNATIVE.Does this switch automatically based on low-power requirements, or is it something that needs to be configured separately? Or is it the same behavior, but can one side be used for low-power operation when needed?The PWRCTRL_EN and PWRCTRL polarity bits are described as being used to switch between these two modes. If so, is it possible to switch between these modes solely through software, without any physical pins? 2. How many times can I program the NVM?I placed an order with JLCPCB while designing my hobby project board, but they only had the APQR STPMIC1 in stock, so I couldn't order the CPQR. So, I decided to program the NVM. Is there a limit to the number of times I c
Hello,i have project with a'n STM32H743II on a custom board. I use a J-Link Plus to debug and download the program, everthing was working fine. When i updated to version 2.0.0 downloading the program elf file failed. After initialization sequence and downloading the first block the debugger stops, because it can't load the elf file, but the file exists and the path is correct. Message window:Debugger console output: SEGGER J-Link GDB Server V8.80 Command Line Version JLinkARM.dll V8.80 (DLL compiled Oct 22 2025 11:56:02) Command line: -port 2331 -s -device STM32H743II -endian little -speed 4000 -if swd -vd-----GDB Server start settings-----GDBInit file: noneGDB Server Listening port: 2331SWO raw output listening port: 2332Terminal I/O port: 2333Accept remote connection: localhost onlyGenerate logfile: offVerify download: onInit regs on start: offSilent mode: offSingle run mode: onTarget connection timeout: 0 ms------J-Link related settings------J-Link Host int
Hello,I am using NUCLEO-H755ZI-Q (STM32H755) and I am observing a reproducible boot issue related to high system clock frequency.1. Hardware / EnvironmentBoard: NUCLEO-H755ZI-QMCU: STM32H755Power supply: USB (on-board)Debugger: ST-LINK (Connect under Reset)Supply configuration: LDOToolchain: STM32CubeIDE 1.19.02. Issue DescriptionWhen the system clock is configured to 480 MHz, the board fails to boot after power-on or reset.Flash programming and verification succeedImmediately after reset release, the target becomes unresponsiveST-LINK connection is lost When the same firmware is configured to 400 MHz, the board boots and runs normally.Interesting behavior:Power-on the boardFlash firmware configured for 400 MHz → boots normallyWithout removing power, rebuild and flash firmware configured for 480 MHzThe board runs normally at 480 MHzIf power is removed and re-applied, 480 MHz boot fails againThis behavior is fully reproducible.3. ObservationsThe issue only occurs after a cold power
Dear All,I am trying to minimize the u-boot and started to remove some features I don't need.I tried to remove whole video & LCD support, but run into issue that stm32mp1.c has a large patch, that applies LCD automatic recognition and extern reference to panel drivers. I am using Kirkstone, but it is also in the patch for Scarthgap.Patch: 0002-ARM-v2021.10-stm32mp-r1-BOARD.patchstm32mp1.c:extern U_BOOT_DRIVER(rm68200_panel);extern U_BOOT_DRIVER(hx8394_panel);(...)Here are feature I'd like to disable, but removing i.e. VIDEO_LCD_xxx features gives me a compile error for missing extern reference to rm68200_panel. CONFIG_CMD_ADC=yCONFIG_STM32_ADC=yCONFIG_FDT_SIMPLEFB=yCONFIG_DM_VIDEO=yCONFIG_BACKLIGHT_GPIO=yCONFIG_VIDEO_LCD_ORISETECH_OTM8009A=yCONFIG_VIDEO_LCD_RAYDIUM_RM68200=yCONFIG_VIDEO_LCD_ROCKTECH_HX8394=yCONFIG_VIDEO_STM32=yCONFIG_VIDEO_STM32_DSI=yI tried different things to remove, but neither works. Removing and/or modifing the whole patch is rather not worth th
I have a custom board with stm32wba65 processor. I also have an RFM95 LoRa module. I need to add LoRaWAN capability. I tried adding I-CUBE-LRWAN into my CubeMX but was not able to load it (not a recognised package).How can I get an ST or Semtech approved LoRaWAN stack into my project?Please do not suggest I use stm32WL processor.
Hello STM Community,I currently have a NUCLEO-U575ZI-Q board and the X-NUCLEO-IKS4A1 motion MEMS and environmental sensor expansion board. I’m looking to add BLE functionality and was considering the X-NUCLEO-WB05KN1.Before proceeding, I’d like to ask:Are the X-NUCLEO-IKS4A1 and X-NUCLEO-WB05KN1 compatible when stacked together on the NUCLEO-U575ZI-Q?If not, is there an alternative BLE expansion board that is known to work well with the IKS4A1 on this Nucleo board?Alternatively, is there an expansion or adapter board that allows both shields to be connected without pin conflicts?Any guidance or shared experience would be greatly appreciated!Thanks in advance.
I'm developing a new secret card project using STM32L476RG and X-NUCLEO-NFC07A1 board, I plan to let the secret card to store private key and do signature related tasks. I'm not sure where can I get blank card which contains the same MCU with STM32L476RG) and the same NFC7 with X-NUCLEO-NFC07A1? I found there are blank card in sale support NFC ISO 14443 protocol. Seem the NFC7 using ISO 15693 protocol. So the NFC blank card support support ISO 15693 protocol can run my image, as showed in image below?ThanksJack Ding.
This is a continuation from this post, where I erroneously marked the post as solved: https://community.st.com/t5/imaging-sensors/vl53l7cx-distance-data-stratification/td-p/866073Unfortunately I'm still experiencing the issue where range data continue to be unstable, and appear to stratify or cluster into discrete magnitudes.Test setup:2x VL53L7CX sensors on one I2C busCover glass installed on both sensorsRanging enabled on both sensorsThe video is showing data from a single sensorI have a test setup with a sensor looking at the back of a notebook at a fixed distance as shown in this picture. The range data returned from the sensor varies between actual the distance, and shorter distances. You can see this in the video below. In addition, in the video I'm also printing the `target_status` for all 64 zones on the terminal output to the right. Would anyone have insight, or perhaps offer troubleshooting steps? Thank you EDIT: Added test setup details
Hello all,Trying to set up the custom display on the STM32H750B-DK dev board.Interestingly, the display works via LTDC functions in Keil just fine... but I do not have much luck with the TouchGFX. For example, started with setting up the TBS in the Designer to avoid the complications of memory and other configurations (thanks to the ST support) and continuing in the CubeIDE where I have opened the .*.ioc file to update the MX configuration for the LTDC and TouchGFX... it compiles ok, I can opend the TouchGFX designer and "upload" the picture, for example, I can see the picture to be in the memory. See attached build memory analyzer.However, when I run the application or debug, I cannot see the preview of the picture.One of the ideas, as it is explained in the TouchGFX manual, namely Board bring up, would be to preview a simple framebuffer, not sure how easily that would be?I am not sure how to tackle this problem, so any comments, ideas, or hints are more than welcome! Best.
Hi, I'm working with a STM32WL5MOC with the STM32Cube FW_WL V1.4.0. In my main.c I have this initialization: MX_GPIO_Init(); MX_DMA_Init(); MX_RTC_Init(); MX_LPUART1_UART_Init(); MX_USART1_UART_Init(); MX_ADC_Init(); MX_CRC_Init(); MX_SPI1_Init(); MX_LoRaWAN_Init(); I put the MX_LoRaWAN_Init after all inizialization. However, I noticed that the code get stacked in MX_RTC_Init();, in particular on here if (HAL_RTCEx_SetSSRU_IT(&hrtc) != HAL_OK).I attach the ioc file and the main. Thanks.
The Errata sheet for STM32G030x6/x8, ES0486 - Rev 6, states in chapter 2.2.9:After connecting the debug interface and until the device power-down, the boot source upon reset or wakeup from a low-power mode is determined by the PA14-BOOT0 pin level before connecting the debug interface (stored by the device), as opposed to the actual PA14-BOOT0 pin level. The device power-up restores the operation of the PA14-BOOT0 pin as direct boot source selector.But this also applies to the empty check: if the debug interface is connected, the empty check is only updated on device power-up (reset is not sufficient).So, if you program an empty device with the STM32CubeIDE in order to debug the software, you need to stop the first debugging session, perform a power cycle and start the next debugging session. Otherwise, the µC will keep executing the bootloader and debugging will fail with “Break at address 0x1f… with no debug information available, or outside of program code”.
HeyI've got great success with the VL53L4CX at sorter ranges, but at longer ranges i seem to get two objects. One closeby between 10 and 30mm away, and one at the distance that it should be.I've done calibration and i cant' get this to go away. I'm assuming it's crosstalk but i've done the crosstalk calibration and so on. What could this be?Example of some of my log output, where you can see the two outputs and some other values from the same measurements.[995156] PerformMeasurement(offset=0, maxdepth=2000, ignoreBelow=10)[995162] Read 388 bytes...[995163] VL53L4CX_SetCalibrationData status: VL53L4CX_ERROR_NONE[995166] VL53L4CX_SetXTalkCompensationEnable status: VL53L4CX_ERROR_NONE[995166] VL53L4CX_SetMeasurementTimingBudgetMicroSeconds status: VL53L4CX_ERROR_NONE[995166] VL53L4CX_SetDistanceMode status: VL53L4CX_ERROR_NONE[995166] VL53L4CX_SetOffsetCorrectionMode status: VL53L4CX_ERROR_NONE[995166] VL53L4CX_SmudgeCorrectionEnable status: VL53L4CX_ERROR_NONE[995166] VL53L4CX_SetUserROI
When using the memory management tool (MMT) on the STM32H573 to set the backup RAM as secure it generates an invalid secure attribution unit (SAU) config:#define SAU_INIT_REGION5 1 #define SAU_INIT_START5 0x40000000 /* start address of SAU region 5 */ #define SAU_INIT_END5 0x400373FF /* end address of SAU region 5 */ #define SAU_INIT_NSC5 0The above code is the last region the MMT defines for the SAU.Typically the tool would define the region 0x40000000 to 0x4fffffff (the non-secure peripheral address space) as non-secure. However 0x40036400 is the start of the backup RAM address space which shouldn't be made non-secure.Since this is the last SAU region, there is nothing configuring the region 0x40037400 to 0x4fffffff as non-secure, and so hard faults occur when e.g. trying to access the non-secure RCC address space.I believe correctly generated code should look like the below:#define SAU_INIT_REGION5 1 #define SAU_INIT_START5 0x40000000 /* start address of SAU region 5 */ #d
Dear STMicroelectronics Support Team, We are currently using the STEF12S eFuse in a 12 V power distribution design and would like clarification on the correct usage of the EN/FAULT shared pin, specifically from a microcontroller software perspective. Application Context Nominal input voltage: 12 V Load current: up to 5 A MCU-controlled power path Requirement to detect output short-to-GND, overcurrent, and thermal faults in firmware Understanding So FarFrom the datasheet and functional diagrams, we understand that: The EN/FAULT pin serves as an enable input during normal operation. The same pin is pulled LOW by the device (open-drain) to indicate fault conditions such as overcurrent, short-circuit, or thermal shutdown. During thermal shutdown, the pin voltage may be at an intermediate level due to internal pull-up and pull-down circuitry. The output is disabled during fault conditions. Clarifications Requested Is the recommended firmware approach to treat any LOW o
Hello ST Community,We are developing an iOS application using the ST25SDK (Swift) to interact with a device equipped with the ST25DV02K-W1 (Dual Interface EEPROM).Our Goal: We need to configure the PWM parameters to control an Adjustable Output Current (AOC). Based on our system design (ported from a working Android implementation), we need to write 4 bytes to Block 62 (Address 0xF8 / 248bytes).The Data Structure: The 4 bytes represent:Bytes 0-1: Period (Little Endian)Bytes 2-3: Pulse Width (Little Endian), where Bit 7 of MSB is set to 1 to indicate "NFC Update".The Issue: The iOS app calculates the correct payload (e.g., [B1 3B 70 AF]) and executes writeSingleBlock without throwing any errors. The console logs confirm the command is sent. However, the value on the device does not change. We suspect the Microcontroller (MCU) on the other side is overwriting the value immediately because it cannot access the I2C bus while the RF field is still active.What we tried:We force presentPasswo
I have installed the stm32 cube ide , after creating the project i am get .ioc file for the configuration , i have done reinstall process but i am unable to clear the issue , the ide is opened as the image attached .
Hello. I'm using B-G431B-ESC1 to operate drone motorThe operation was successful using FOC, but from 28,000 RPM and above,it changes to - speed as seen on the Pilot screen. (When the rpm becomes negative, speed control becomes impossible.)In fact, using betaflight, I have seen it go up to 45,000 rpm.Any idea how I can change the minus speed or what I need to change??
TL;DR: The receiver ESP32-LoRa node is showing garbage values instead of accelerometer values. The STM32 - LoRa sender node does read correct values from the MPU6050 sensor, as we confirmed that through PuTTY. .ioc configuration Context: So I am trying to program an STM32F411CEU6 module to read accelerometer values from MPU6050 (a 6-axis motion sensor). Then what I am trying to do is send those values to an ESP32 module. I am using Ra-02 SX1278 LoRa boards as the transceiver for the communication. We verified that the values were read properly by printing the MPU6050 sensor readings to the serial port. At the receiver end, we used Sandeep Mistry's LoRa.h library for programming the ESP32 in Arduino IDE. Clock Configuration for ref.Issue: The receiver end was receiving garbage values when we tried to monitor the sent values. Even the code in void setup() was taking a while to execute. I believe the issue is with configuring the LoRa parameters between the sender and recei
Can anyone help me understand how these two arrays have been made#define M1_ANGC {-116,-363,-611,-843,-1091,-1338,-1571,-1833}#define OFST {0,17,51,99,167,252,348,474}these arrays are used in MTPA calculation with y=mx+c equation.These are the motor parameters for which the array has been calculated. Your assistance will be appreciated.
CubeMX version 6.16.1 I found STM32WBA55CG project with ThreadX, the parameter of "TX_LOW_POWER_USER_ENTER" and "TX_LOW_POWER_USER_EXIT" will be reset to default after the ioc re-open.This bug can be 100% reproduce.
Hello community members, I am using a STM32H5 with acitvated MPU region. I want to check and test dection of nullpointer access.Because of safety reasons. I have configured and activated the mpu so far. When doing a write access to the declared null pointer, the MemManageFault Handler is called as expected. uint32_t *m_pTest = nullptr;*m_pTest = m_value; // -> MemManageHandler is called (as expected)when doing a read access, the BusFaulthandler is calledm_value = *m_pTest; // ->BusFaultHandler is called (not my expectation)//here my mpu configuration and settingsSCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk |SCB_SHCSR_BUSFAULTENA_Msk |SCB_SHCSR_USGFAULTENA_Msk;/* Configure the MPU to prevent NULL-pointer dereferencing ... *///check nullpointer access Region1MPU_InitStruct.Enable = MPU_REGION_ENABLE;MPU_InitStruct.Number = MPU_REGION_NUMBER1;MPU_InitStruct.BaseAddress = 0x00U;MPU_InitStruct.LimitAddress = 0x200U;//512Byte for exampleMPU_InitStruct.AttributesIndex = MPU_ATTR
Hello,I am below Hardware and Software setup:Hardware:MCU Board: NUCLEO F401REPower Board: X-NUCLEO IHM08M1BLDC Motor: Portescap 22ECP45-8B-154.01 (specifications_22ecp45.pdf attached)Software:MC Workbenach v6.4.1I am using sensorless FOC (STO-PLL) in WorkBench tool. I am trying to increase the speed of the motor to its MAX 47000 RPM. But, I am getting only 7200 RPM with Parameters from Motor Datasheet in MC Workbench tool. I have changed the HW to short 3-SHUNT and removed mentioned capacitors.Below are my parameter configurations: Max speed I am getting on Motor Pilot:I queried Motor for the Max speed of the motor. They replied it is achievable by using 14 mNm Torque. I have few questions:1. In the Motor profiler tool, reaches upto 12000 RPM then giving Speed Feedback error. What configurations can set to run profiler tool successfully?2. Does ST HW (F401RE + IHM08M1) support 47K RPM @24V for the Motor?3. With ST workbench tool having Sensor
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.