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 ST,I found a problem of fixed-range local ADC non-linearity from 170mV to 480mV on STM32U545 after full hardware linear calibration.1. Test EnvironmentHW: NUCLEO-U545RE-Q board (MB1841D), Firmware package: STM32CubeU5 FW V1.8.0.Test instruments: Precision DC power supply, function signal generator, digital oscilloscope (used to verify the actual voltage at ADC input pins).Working Mode: Button→ LPTimer→ ADC→ DMA→ UARTMX: See attachmentMain code: See attachment2. Two types of input tests (static DC + dynamic triangle wave, identical distortion observed)(1) Static DC step voltage testWe applied stepped DC voltage from 81mV to 850mV via precision power supply and resistor voltage divider. The real voltage on ADC1 input pins was measured and recorded with an oscilloscope for every step, ruling out inaccuracies from signal sources or resistor division. Test results: ADC1 conversion curve is perfectly linear below 170mV and above 480mV. A consistent concave distortion only exists within 17
/* USER CODE BEGIN Header *//** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * <h2><center>© Copyright (c) 2022 STMicroelectronics. * All rights reserved.</center></h2> * * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** *//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include "main.h"#include "seven_seg.h"#include "timer.h"#include "74HC595.h"#include "led.h"#include "welding_mode.h"#include "adc.h"#include "led_
Hi everyone!I'm writing my first bare-metal driver for STM32 in C (CMSIS, no HAL). The driver controls a TMC2209 stepper motor driver over half-duplex UART.The basic functionality is currently working: initialization, frame assembly, CRC calculation, and movement control via VACTUAL. To keep it hardware-agnostic, the UART send function is decoupled using a function pointer (handler->send). Registers are defined using union and bitfields (struct).Since this is my first driver, I'd love to get feedback from experienced embedded developers on the following questions: API Design & User Access: What level of API access should I expose to the user, and how should it be structured? Is it better to hide register manipulation behind high-level functions (e.g., set_speed, set_current), or keep direct register access accessible? Bitfields vs. Shifts/Masks: Is using union + struct (bitfields) acceptable for production-ready embedded code, or is it better to switch to explicit bit shifts a
Hi,I have been using the H755 Nucleo board for some time and always struggled with the firmware/libraries. To make matters worse, there are no examples for this board. I was using CubeIde 1.15 and decided to upgrade to 2.2.0 to see if the libraries handling improved. I started an empty project with the BSP included and added a simple code on CM7 to blink some leds with a HAL_Delay(), and it worked fine. Later I only added a timer (TIM1) on CubeMX, regenerated the code and now the CM4 does not compile. There is and never was any code added/modified to this core. The errors I get are related to the inclusion of libraries:arm-none-eabi-gcc -o "AFE16_Burn-in_Controller_CM4.elf" @"objects.list" -mcpu=cortex-m4 -T"C:\Users\rafael.puyol\Documents\Reliability\afe16_burn-in_controller\AFE16_Burn-in_Controller\CM4\STM32H755ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="AFE16_Burn-in_Controller_CM4.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--st
I am designing the power system for an application using the STM32N645. In the datasheet for the STM32N6x5 minimum Vbat is defined as "TBD". In the STM32N6570-DK schematic the Vbat rail is set to 3.3V. If it can operate at 1.8V it would simplify the power architecture. Does anyone have any experience with running it at 1.8V? Or is there a timeline for when this specification will be released?Thanks!-Bash
Hello ST Community!I am currently considering an STM32N6 for a new project and decided to use CoreMark as one of the benchmarks to compare candidates. According to its datasheet and published results on https://www.eembc.org/viewer/?benchmark_seq=13733, the STM32N657 should reach a score of ~3616. I noticed that the published results on the EEMBC website report usage of “ArmClang v15.0 - Keil v6.18” as the compiler. I figured it would be worthwhile checking what score I’d get from STM32CubeIDE’s GCC toolchain.I ran the test on a NUCLEO-N657X0-Q board and obtained a CoreMark score of 2389, which is quite a bit lower than I expected when comparing against the published results.The test application is designed as follows:CoreMark source code from https://github.com/eembc/coremark using the instructions in barebones_porting.md.CPU clocked at 800 MHz.Overdrive voltage obtained from external power supply (Pin PB12 = 1).Code runs from ITCM.Data and Stack are placed in DTCM.Interrupts and SysT
Hi all,I'm working through a self-directed embedded systems curriculum, writing everything at the register level (no HAL, no CubeMX-generated I2C code) to actually understand what's happening under the hood. Posting this in case it saves someone else the same debugging loop, and to sanity-check my conclusion.Setup:Board: Nucleo-F411RE Sensor: GY-521 breakout, sold as "MPU6050" I2C1 on PB8 (SCL) / PB9 (SDA), AF4, open-drain, onboard 4.7k pull-ups Standard mode, 100 kHz (CCR = 80, TRISE = 17, APB1 = 16 MHz) Pure register access via a self-built I2C_TypeDef-style struct — no ST HAL calls anywhereTransaction sequence (reading WHO_AM_I, register 0x75):START, wait SB Send (0x68<<1)|0, wait ADDR (confirmed ACK) Clear ADDR (SR1 then SR2 read) Send 0x75, wait TXE and BTF (important — TXE alone isn't enough before issuing a repeated START; BTF confirms the byte and its ACK are fully clocked out) Repeated START, wait SB Send (0x68<<1)|1, wait ADDR (confirmed ACK again) Clear ACK bit (
Hey im using Stm32CubeIDE 2.2.0 with a Segger JLink Debugger.After flashing the device the Controller doesnt start running.Starting the Debug Mode is working, and after a normal Power Reset the device also starts.Switching back to CubeIDE 2.1.0 is solving the problem too.Any ideas?
As the title describes, the conversion tool to convert Stm32CubeIDE projects over to Visual Studio Code seems to work. Apart from the fact that, at least in my case, it failed to copy over the assembly files, .s files, in the project. Which led to build errors, specifically thumb mode errors.Just posting this here so that it may help others. Not quite sure how best else to let others know.
Hi, I was making a demo project so needed a really straightforward way to use the ADC of my STM32F446RE.I configured the ADC1 with only channel. Default parameter everywhere except I enabled ‘Continuous Conversion Mode’ as I understood it, all I had to do with it was to start the ADC (HAL_ADC_Start(&hadc1)) and pick the values every time my loop needed it. I was surprised to notice that ‘HAL_ADC_PollForConversion(&hadc1, 100)’ worked only the first call then always yield HAL_TIMEOUT as I was expecting the ‘Continuous Conversion’ mode to allow me to not call HAL_ADC_Start and stop every time.After finding the linked post, I found the solution was to change the ADC setting from hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV Into hadc1.Init.EOCSelection = DISABLE The thing is this option is not available in STM32CubeMX (V6.17.0) so I have to pick either ADC_EOC_SINGLE_CONV or ADC_EOC_SEQ_CONV.I have the behavior I wanted but I wonder if this can be improved in STM32CUBEMX or is the
HI, It appears that the LSM6DSO32X has a higher shock/acceleration rating when compared to the automotive rated ASM330 IMU modules. 20’000g rating for the LSM6DSO32X and a 3’000g rating for the ASM330 modules. Am I reading that right? The automotive modules have a lower shock rating than the consumer module? thanks
We are considering using IIS2ICLX for product development.I would like to know the following specifications for this product. ① “stability” of “bias” with respect to a fixed calibration value over a period of one year② “stability” of “scale factor” with respect to a fixed calibration value over a period of one year
Regarding the behavior of temperature drift of the IIS2ICLX, I would like to ask for your guidance.- When the temperature increases, how does the zero-point temperature drift behave?- Does the amount of zero-point drift change depending on the rate of temperature increase?For example, after heating rapidly to 80°C and then allowing the temperature to stabilize sufficiently, compared with slowly heating to 80°C and allowing the temperature to stabilize sufficiently.
Hello,I am currently working with the IIS2ICLX MEMS inclinometer sensor, and I am unable to find the noise spectral density curve as a function of frequency.Would it be possible for you to provide it, in particular for the low-frequency range (0.1 Hz, 1 Hz, 10 Hz, etc.)?Thank you very much in advance for your help.Best regards,
STM32F411RET6 Can't boot, a floating GPIO during startup.I am designing aى energy meter. It has a "Capacitive power supply" so it is very limited power (16mA @ 16V), rise time for the voltage rail is in ms.The meter has Latching relay. We are driving this latch through GPIO & npn as shown in the schematics pic. My bad design, I didn't put a pull-down resistors in the latch control lines.During startup the latch control (MCU_L_ON & MCU_L_OFF) are float, till the FW boots and set the GPIO to 0.Out of 50 produced & flashed: 40 pcs success in booting. 10 didn't success. The failed ones has consistent behavior of having voltage of 0.6v on MCU_L_OFF which makes the npn turns ~ on and draws current, so the voltage in the power supply won't increase as it should. Vcc (3v3) voltage stays around 2.2v. it has small oscillations but never fall below 2v. If latch control disconnected, no issue occur.latch control Capacitive power supply stm mcuWe don't have brown out enabled. Only the
Hello Gyessine, We tested the board in chamber, it seems that it can only work @105℃, even we decrease the CPU clock to 40MHz, if CPU clock is 200MHz, it only can work @95℃. We are using seperate LDO for 1.2V Core, you can check the circuit below.
Hi,I'm currently encountering an issue with USB CDC on the STM32F466: the device is not being recognized as a USB CDC device.I'm using the USB_OTG_FS peripheral, with the USB_DEVICE middleware configured as CDC. However, in the Parameter Settings for USB_OTG_FS, I don't see an option for Internal PHY.I then tried using USB_OTG_HS with Internal FS PHY instead, and in that configuration, the Internal PHY option is available in the parameter settings.So I'd like to confirm the following:Is the Internal PHY option only available when using Internal FS PHY (i.e., only through USB_OTG_HS configured for FS mode), and not available for USB_OTG_FS directly?If I need to use CDC with USB_OTG_FS, do I need to add external pull-up resistors (since there's no internal PHY option to handle this automatically)?Thanks in advance for your help.
Hello,I’m using an Karo SOM module (MP257) on a custom board with SFP module.The SFP module is powered with the main 3.3V regulator. It has a TX_DISABLE input (0=ON, 1=OFF). This input :Is TTL Has an internal pull-up R (around 10k) Has an external pull-down R (10k) In connected to PE2This makes a voltage divider : without driving the TX_DISABLE line, the voltage is something like 3.3V / 2 (1.8V to be precise)Some simple tests to confirm that :SFP module unplugged => voltage is driven only by the pull down R => 0V A source meter on the TX_DISABLE confirms the presence and value of the internal RPU. Now let’s play with the MP2. Is this processor able to blink a led ? Don’t laugh, nothing could be further from the truth. After linux boot : gpioinfo shows PE2 is input. It should logically be driven by the driver, but for an obscure reason, this is not the case. At least we can do things manually… Set it to 0 ?gpioset -b disabled -d push-pull PE2=0=> Voltage is still 1.8V Ok, bad.
Hello,I am integrating the VD5943 image sensor with a Lattice FPGA acting as a MIPI CSI-2 receiver.I have reviewed both the VD5943 Datasheet (DS14968) and the Reference Manual (RM0532), but I could not find any information about the operating mode of the MIPI CSI-2 clock lane.Could someone from ST please clarify the following?Does the VD5943 transmit the MIPI CSI-2 clock in Continuous Clock mode or Non-Continuous Clock mode? If this behavior is configurable, which register controls it? If it is fixed, which mode is implemented by default?This information is important to ensure compatibility with our FPGA CSI-2 receiver and downstream processing.Thank you for your support.
Hi,I am trying to perform injected conversion of two channels in ADC1 (STM32G431x), and I wish to trigger them in discontinuous mode. The ScanConvMode is enabled and the discontinuous mode for injected measurement is also set (injectedDiscontinuousConvMode = ENABLE). However, the conversion still happens continuously. I had to hard set the bit (SET_BIT(ADC1->CFGR, ADC_CFGR_JDISCEN)) to make it work in discontinuous mode.Any help here will be appreciated! Thanks.
This is more of a suggestion, really... but I would love to see CubeMX (along with other standalone programs) fully integrated as a VS Code extension. For instance, the development environment for the nRF54 series allows you to handle everything from pin mapping to clock configuration directly within VS Code.In contrast, CubeMX requires installing far too many components, and compatibility issues are a major problem. I really don't understand why every tool has to be created separately and installed natively. I am certain that a setup involving just a single SDK installation and a VS Code extension would be far more convenient for users. Furthermore, this approach offers significant advantages for remote development; traditional native development environments require extensive configuration—such as X11 forwarding or RDP—just to access the GUI. However, if everything could be handled via an extension, the user would simply need to connect to the server via SSH in VS Code and install th
Hi! I have already trained my AI model using the STM32 Model Zoo Services, and the project is fully running on the STM32N6570-DK board. The model has been successfully deployed, and the object detection is working correctly with the camera.In parallel, I have also developed the graphical user interface using TouchGFX as a separate project. At this point, my goal is to integrate both projects into a single application: the TouchGFX interface and the AI inference application.I have read your article about integrating TouchGFX with the Camera Middleware, which was very helpful.However, I could not find information about integrating TouchGFX with an AI application generated from the STM32 Model Zoo Services.What I would like to achieve is the following workflow: the application starts with the TouchGFX interface, and when the user presses a button, the camera is initialized, the AI inference pipeline starts, and the model begins detecting objects in real time.Could you please advise on the
Hi ST team,I am working with an STM32MP257 where Linux runs on the Cortex-A35 and a FreeRTOS application runs on the Cortex-M33. The M33 firmware is loaded and started by Linux using remoteproc.The application is running correctly, but I would like to understand the recommended workflow for debugging the M33 application.I have read the "Debug support" section of RM0457 and understand that the M33 can be accessed through the shared SWD/JTAG interface by selecting the appropriate Access Port. However, I'm still not clear on the recommended debug workflow when the M33 is managed by remoteproc.My questions are:Can STM32CubeIDE/ST-LINK attach to an already running M33 started by remoteproc, or should the M33 be stopped first? If Linux has already loaded the firmware, should the debugger load only the ELF symbols instead of downloading the application again? Is there any special OpenOCD/ST-LINK or CubeIDE configuration required for this use case? Is there an ST application note or example de
Dear STM Support Team,I am working on a custom hardware platform based on the STM32N6570-DK.We have replaced the default MX66UW1G45G Octal SPI NOR Flash on the evaluation board with an Infineon S25FS512S Quad SPI NOR Flash. Since the default external loader is designed for the Macronix Octal flash, STM32CubeProgrammer is unable to program the new flash device.We would like to develop a custom External Loader (.stldr) for the S25FS512S. However, we are unable to find the source code or documentation specific to the STM32N6570-DK external loader.Could you please clarify the following?Is the source code for the STM32N6570-DK External Loader (MX66UW1G45G_STM32N6570-DK.stldr) publicly available? If yes, where can it be obtained? Is there any application note or documentation describing the API and project structure required to develop an External Loader for the STM32N6 series? Are there any reference projects or examples for creating a custom .stldr for STM32N6 devices? If the source is not
I want to make analytical loss model of SCT50N120 device so for that I need Eon and Eoff vs Rg(ext) variation plot. where to find it?Sorry for the wrong description name .
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.