Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello, I was wondering about the reasons to supply external clocks to the N6 MCU, since it seems that via HSI and LSI there are clocks integrated into the MCU. I am having trouble to understand whether the internal clocks can satisfy my requirements:- I don't have special accuracy requirements for LSE/LSI nor HSI/HSE- I am using the CSI-2 interface- I am using SPI and UART Interface Are there reasons to supply external clocks?Are there other considerations that I might have to take into account? (especially for example considering data rates of the interfaces that I am using or other) Best RegardsLucas
Dear, we start to handle stepper motor shield Xnucleo-IHM02A1 - with bipolar stepper motors 3A/24VDC. Is there a manual or video - how to start with...?
Hello, everyone,My project uses the WB55CGU6 microcontroller.The project is for me to be able to pair with the microcontroller via a phone app (e.g. BT Simple terminal) and use commands to control it. For example, if I send ‘1’ in ASCI on the phone application, the stm32wb will light the diode which is connected to the GIPOA_01 port, if I send ‘2’, the stm32wb will light the diode which is connected to the GIPOA_02 port or any other complex procedure. I would also like, for example, the processor itself to send me cyclically to the phone application, e.g. data from some sensor.I would like to know what ‘Ble Application type’ to set.Alternatively, which example to focus on (example that contains an .ioc file) so that I can preview the BLE solution and configurationI am just starting my adventure with STM32 but previously I did a lot of projects on ATmega and such a project was done with HC-05 and a processor that was connected to it via USART. The processor received data from the BME-28
Hello,I am developing a GUI application with TouchGFX which I would like to run on a STM32F767ZI connected via LTDC to a display with RGB888 interface.The display datasheet: https://newhavendisplay.com/content/specs/NHD-5.0-800480AF-ASXP.pdfI am having problems with the configuration in CubeMX. I followed the guide in AN4861 to configure the LTDC but I am still having problems.With my current configuration, when I set the background for the LTDC to red, and the Layer 1 to transparent (alpha = 0), I can see that the display correctly displays a red background.When I set the Layer 1 to opaque (alpha = 255) with a red background, the display always shows a black background with a TV static like white rectangle on the top of the screen. It doesn't matter if I added TouchGFX as a Middleware or not, it always displays the same thing.Current configuration attached.Thanks in advance for the help!
Hello,I have the following BLDC motor equipped with hall sensor, having an accuracy of 60 electrical degrees (15 mechanical degrees). Motor characteristics:Voltage: 18VDCRated speed 15,000 rpmRated torque 0.200 NmRated current 15.5 A Winding resistance (phase–phase) mΩ 50 Winding inductance (phase–phase) µH 42Number of poles poles 8The BLDC is connected to a gearbox of a ratio 40. I am using the STEVAL-PTOOL4A that was configured using MC Workbench V6.3.2. The motor control used is the FOC with the hall sensor as speed feedback. I have tuned the PI current and speed for high speed (max speed is 18000RPM) and under load the motor works good. However, I am struggling to have stable speeds at low values (starting 1000RPM to around 4000RPM). The motor runs with some oscillations with no load but when I put a load, it stalls and the speed falls to zero. I tried to tune the PI of the speed again, but I couldnt do better than removing the oscillations with no load.&n
I have attached the X-NUCLEO-IKS02A1 on the NUCLEO-L476RG board and connected it to my laptop. I opened tge MEMS Studio and when I am trying to connect, it is showing Board Not Identified as shown in the attached snap.How should I proceed further?
Board & Setup: STM32H563RGT6 running FDCAN2 in Normal mode (HAL_FDCAN_Init, Mode=FDCAN_MODE_NORMAL) SN65HVD230 transceiver in silent mode (Rs pin connected to 3.3V) (120 Ω intergrated) wired with a single 120 Ω terminator at the far end No other pull-up/down or termination changes when the USB–CAN dongle is unplugged Filters configured (Reading the data from the BMS of a custom battery): FIFO0 → IDs 0x1E0 (BMS_STATE), 0x1E2 (PACK_MINMAX), 0x1E3 (PACK_AVG) FIFO1 → ID 0x1E1 (PACK_VALUES) Symptom: With the USB–CAN adapter or another node on the bus, everything works: the real BMS sends all four messages, our STM32 ACKs them, and they appear in Cangaroo. As soon as the USB–CAN dongle is unplugged (or if our transceiver is switched to any other mode -> Slope control or High speed (no slope control)), no messages are observed on the bus—even though the BMS should still be broadcasting at 1 Hz (it constantly spits out data at a 1 Hz rate) and our STM32 is in Normal
Hey all, I’m working on integrating a PS/2 trackball into a custom PCB using QMK, and I’ve hit a weird snag. My MCU is an STM32F072 (custom PCB, project repo here: https://github.com/vuckale/takt11800/tree/master/Firmware. I’m following the official https://docs.qmk.fm/features/ps2_mouse and using the “interrupt” version for the mouse interface. Here’s the issue: - Sometimes after flashing, the trackball works perfectly. - If I unplug and plug the keyboard back into the PC, the trackball usually stops working. Sometimes after multiple re-plugs or after waiting a while, it comes back, but it’s super inconsistent. I’ve tried: - Different pin combos for clock/data (B3/A15, A0/A1, B10/B11)—all with 4.7k pull-ups to 5V except A0/A1 which are not 5V tolerant and I pull them up with 10k resistors to 3.3V. - If I add #define PS2_MOUSE_USE_REMOTE_MODE in config.h, then the trackball is detected every time after replug… but the cursor goes crazy—jumps around the screen, and left/r
Test procedure.Nucleo-H753zi with "arduino style" shield installed.Hardware includes DAC80501 to generate linear ramp 512 points, than OP amp to scale up and convert SE to Diff.ADC2 runs in Diff mode, channel 3 (PA.6 & PA.7 -> SB 33/ 35 modified),clock 10.5 MHz, S/H 16.5 clocks, oversampling 256, than software oversampling x16 - total 4096.Linear regression done on the same nucleo, data plotted on TFT ILI9486 .Scale in 16-bits, meaning all screen 32 = 5 LSB, or 0.001611328 V, where LSB = 50.354 uV. Results: Linearity is exceptionally good, error less than 1 LSB (limited by 16-bits DAC). Left side slightly distorted by OP amp not capable to get 6.4 mV to ground.Last image shows intentionally introduced distortion to calibration factor N-4, value changed from 1FF to 1A0, for verification.
Hello, I have been trying to implement USB support on an STM32u5g9vjt6Q using USBX in standalone mode without success as of yet. I have been referencing this guide (How to implement USBX in standalone mode ) I am trying to use the onboard USB Phy in full speed mode, I think my issue comes down to clock configuration. I am able to perform a USB DFU firmware update through the onboard ST bootloader so I am fairly certain I do not have a hardware issue, I also have a 16mhz external crystal.My firmware will end up in a Error_Handler after a timeout, the timeout is happening during this block of code inside of USB_CoreReset() do { count++; if (count > HAL_USB_TIMEOUT) { return HAL_TIMEOUT; } } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);Debugging shows GRSTCTL = 0x80000001, CSRST = 0x1I will attach a picture of the call stack w/ the section of code and the contents of the register. I will also attach the CubeIDE project.Thanks!
I am building MCUboot using Zephyr for some of the STM32 MCUs like `stm32f769i_disco`. MCUboot using zephyr client tested and working fine with the board `stm32f769i_disco`. Now I am trying to use that MCUboot with the User application I have written in STM32CubeIDE but the application hangs or nothing happens. The Bootloader output looks fine, but nothing prints from the application. What configuration steps am I missing on user application side or MCUboot side?Using the standard addresses:MCUboot: 0x08000000User Application: 0x08040000VECT_TAB_OFFSET: 0x40000I have attached my user application project as a zip file. *** Booting MCUboot xxxxxxxxxxxx *** *** Using Zephyr OS build *** I: Starting secure bootloader I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3 I: Scratch: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3 I: Boot source: primary slot I: Image index: 0, Swap type: none I: Validating primary image... I: bootutil_img_validate
Hello community,I'm facing a UART communication issue with my STM32F042K6T6 board and would appreciate any insights. Here are the details:Hardware Setup:MCU: STM32F042K6T6Peripheral: STPM3x Energy Metering ICConnection: 9600 baud, 8N1, no flow controlVoltage levels: 3.3V on both sidesThe Problem:My STM32 fails to properly receive data from the STPM3xHowever, when I check with a logic analyzer, I can see the STPM3x is transmitting valid data packetsThe STM32 misses packets entirely even max delay provided.Tried interfacing ESP32 → STPM3x works very fine.What I've Verified:Signal Integrity:Clean waveforms visible on logic analyzerProper baud rate (9600) confirmedCorrect parity and stop bitsBasic Tests:Loopback test (TX→RX) also not working properly as only the first byte is received others omitted.Different baud rates yield same issueTried multiple GPIO pins NOTE : The stpm3x.h & stpm3x.c library is ported manually from CPP. I also attached the original CPP files for the referen
Hello Everyone,I'm using a Nucleo-G474RE board with TIM20 configured in input capture mode on channels 1–3 to measure PWM frequency from a function generator. Everything works fine when the signal is active, but when I turn off or disconnect the input, the code starts reporting a consistent 50 Hz frequency on the channel that gets disconnected—even though there is no signal. I'm using HAL, and the input pins (PB2, PC2, PC8) are configured without any pull-up/down resistors. I suspect it's retaining old capture values because when I was developing the code I was testing one timer channel with constant 50hz signal. Or Maybe it is caused by some electronic noise . How can I make sure the timer detects that the signal is lost and reports 0 Hz instead of a false frequency?
Hello,I have built a project in touchGFX and it loads and runs on my STM32H735G-DK discovery board using the TouchGFX software only. However, I need to be able to expand this program to do more things so I want to use TouchGFX with Keil. This is what I have been told to do to make this work:1) Generate the project using TouchGFX2) Open .ioc file and change the tool chain to Keil MDK and Generate Code3) Go back to TouchGFX and generate code again4) Go back to CubeMX and generate code again5) Open project in Keil and Go to Project Options --> Debug --> Settings --> Flash Download and make sure the RAM for Algorithm has a large enough size. I change these settings to Start: 0x24000000 Size 0x0000FFF4After making these changes and building the project and loading it to my Discovery Board it should allow me to just click "Run" once and the program should run...however in the command window I get the following message:Cannot access Memory (@ 0x70000000, Read,
Hellofor some specific usage I am evaluating possibilities of using CM33 with HCLK 250MHz for maximum code execution performance. To do so I have crafted procedure in assembler and calculated the cycles using ARM reference manual. The code is doing only some data conversation from one data buffer into another one. Then I place this code in SRAM1, enabling I-Cache, setting RCC and I try to measure code execution time. Let’s say execution cycles calculated by hand is about 3000. later work I am basing on the code generated by CubeMX and inject my bare metal stuff. 1) using DWT->CYCCNT I see no difference in execution from FLASH or SRAM1 - result is about 79002) using TIM6 started before my func and stopped after it thus TIM->CNT has time in 4ns intervals - formal cycles. Running from SRAM -same result. Example of the „issue” LDR r0, =label During step debugging for this instruction the TIM6->CNT is incremented by 6 units. &
GoodDay all stm32 developers, My company having a IoT device that running touchGFX via SPI screen using stm32wb55, we found an issue that when switch to another screen, by calling button callback. buttoncallback: { FrontendApplication *const poApp = static_cast<FrontendApplication *>(Application::getInstance()); if(p_gui_obj->contr_mgr.pending_screen_type != p_gui_obj->contr_mgr.curr_screen_type) poApp->gotoSettingScreenNoTransition(); } While the LCD display transit to new screen, SettingScreen, at very first moment the button and toggle switch , slider able to react but the handleDragEvent void SettingView::handleDragEvent(const DragEvent& event) unable to get DragEvent until a short waiting like 2 seconds, is there any solution we can implement to shorten the wait time before the user could having a gesture input after a screen change? Thank you for your help in advance, I know you all have more experience than me.
I have a hmi project using stm32u599 and touchgfx,I use RGB565 lcd and double buffer,totally in sram.Recently,I noticed there is some thing flick on my screen,it appears very short time,but still noticeable.This phenomenon appears only a week,I managed to take a snap of screen and here it is:the dark part of the picture is what appears on screen. position and shape is fixed every time. there is no resource like this in my resources.
Hi!I've been trying to insert FatFs in my IAR proyect for using a uSD for a while but it doesn't work.I tried by downloading FatFs from the Internet, but also creating a STM32Cube project for another board and putting it on mine, but when I rebuild all, there are many errors.I don't know if I have to activate something that I'm not minding or if there is something in those scripts I need to change before it compile. Could you please help me?
Hello,I'm currently working with the STM32F429IIT6 and using the LTDC to continuously output an image via parallel RGB + control signals. The image I'm trying to display is 854x480 pixels in 24-bit RGB888 format. The LTDC clock is running at 10.56 MHz.According to ST’s Application Note AN4861, I am using the internal frame buffer to send parallel RGB signals along with synchronization signals to the LCD. The total image size is:854 x 480 x 24-bit = ~1.2 MB,which fits comfortably within the STM32F429’s 2MB Flash memory. What I want to optimizeMy actual image is very simple — it consists of one horizontal line (854 x 24-bit) that repeats identically for all 480 lines. So, in theory, I only need one line of data and could repeat it 480 times on the display. However, the standard LTDC configuration in STM32Cube sets FBStartAddress to point to a full-frame buffer (854 x 480 x 24-bit). This results in a lot of redundant memory usage.My QuestionIs it possible to configure the LTDC t
In 'G0B1, 'G071 and 'L412 Datasheets, ULPEN is mentioned several times (namely 3 times).It probably corresponds to PWR_CR3.ENB_ULP in case of 'G0x and PWR_CR3.ENULP in case of 'L412/'L422.I did not check if this propagates to newer STM32, too.ST, can the nomenclature please be unified.Thanks,JW
Hello,do you plan to release newer version of Eclipse ThreadX X-Cube packages?We are using x-cube-azrtos-f7 1.1.0 which contains ThreadX V6.1.10 which is outdated and insecure.Even remote code execution is possible: https://github.com/eclipse-threadx/netxduo/security/advisories/GHSA-m2rx-243p-9w64 and eclipse foundation only provides security support for ThreadX v6.4.x.SincerelyMo
Hi, Dual FOC not introduced on STM32F7 series is it due to being not implemented or peripheral of the STM32F7 series(limitations) does not supported? Thanks, Rahul D
I recently got the P-NUCLEO-LRWAN2 board. I'm trying to set up the end node NUCLEO L073RZ using STM32IDE. I want to flash the firmware to the end node, get response from it for AT commands in Tera Term and connect it to TTN. Please provide the step by step procedure to set up the end node.
I have created a tool called TouchGfxHelper, which automatically generates all the main, model, ModelListener, presenter, and view components with your specified functions. All you need to do is define them.The tool is free of charge and can be downloaded from the www.ib-uk.net/Downloadbereich(please note that my website is currently only available in German). The ZIP file includes the software and an example project that runs on an STM32F746 Discovery board.Any feedback is welcome—please feel free to send it to me
Hi All,I wrote my code in STM32IDE without using TrustZone. Now I need to enable it, however this does not appear to be available in STM32IDE once the project has been created. Am I correct, or is it possible to enable TrustZone for an existing project in STM32IDE afterwards?Best Regards,Cati
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.