Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Dear STMicroelectronics Support,In our application, the STM32H7B3I-DK board is used in a "shield" configuration: it is mounted on a carrier/daughter board(PHOTO 2) (via the Arduino connectors CN19/CN20/CN10/CN11) which supplies its power. The daughter board therefore injects a 5V voltage directly onto CN19, pin 1 (5V_VIN), without going through a USB supply or through the standard VIN input of the kit.Power configuration5 V is applied to CN19, pin 1 (5V_VIN). JP1 is configured in the 5V_VIN position. VIN (CN19, pin 8) is left unconnected.MeasurementsVoltage before R114 (1 kΩ): 5.0 V Voltage after R114: 1.6 VThis corresponds to a voltage drop of approximately 3.4 V across R114, which indicates a current of about 3.4 mA flowing through the resistor.I would like to better understand whether this behavior is expected and the purpose of R114 in this circuit.Could you please clarify the following points?Is this voltage drop across R114 normal when powering the board through 5V_VIN? What is
Good day,We are using a composite USBX device class combining CDC and MSC over USB Full Speed, built on X_CUBE_AZRTOS-H7 version 3.3.0 (USBX 6.4). During testing we discovered that a certain Windows PC sends a MODE SELECT(10) command (opcode 0x55) and causes an endpoint stall.After a rather long debugging session, it was found that the USBX source _ux_device_class_storage_mode_select() is explicitly not implemented — it stalls the OUT endpoint, UX_FUNCTION_NOT_SUPPORTED (which is not checked in the thread) and never recovers:The MODE SELECT(6) SCSI command is not even implemented and the storage thread falls through to the default case, also triggering a endpoint stall. So:- Are there any plans to implement these MODE SELECT(6/10) commands properly in a future USBX release?- Does anyone already have a workaround for this?- Wouldn't it be cleaner to reply with an ILLEGAL REQUEST instead of stalling the endpoint?System details:- MCU: STM32H7- USBX version: 6.4 (X_CUBE_AZRTOS-H7 3.3.
When using the FDCAN peripheral on a STM32H743 or a STM32H753 and the message filters are setup to only accept certain messages, does the FDCAN hardware ACK a valid message that is rejected by the message filter?
I am working with an STM32 microcontroller and a VL53L0X sensor. The sensor readings are transmitted over UART1 at 115200 baud, 8N1.I have verified: UART initialized at 115200 baud, 8N1, no parity XCTU terminal set to ASCII mode (Hide Hex enabled) Line endings set to \r\n Any suggestions for reliable output?Numeric values are printed correctly, but the text parts like "Distance" and "mm" are missing or appear as dots in XCTU’s terminal. For example, instead of:CodeDistance: 25 mmI see:CodeD..ta..e: 25 mm
Board: STM32N6 (Custom board with USB OTG HS)I am trying to create a USB composite device with: - CDC ACM Instance 0 (LOG port) - Interfaces 0, 1 - CDC ACM Instance 1 (DATA port for GenICam/GenCP) - Interfaces 2, 3 - UVC VIDEO class - Interfaces 4, 5Dual CDC works perfectly. However, when I add CLASS_TYPE_VIDEO to UserClassInstance[], the device fails to enumerate entirely (not visible in lsusb). --- Working Configuration (Dual CDC Only) // ux_device_descriptors.c uint8_t UserClassInstance[USBD_MAX_CLASS_INTERFACES] = { CLASS_TYPE_CDC_ACM, // CDC0 - interfaces 0,1 - endpoints 0x81,0x82,0x03 CLASS_TYPE_CDC_ACM, // CDC1 - interfaces 2,3 - endpoints 0x84,0x85,0x06 }; Result: Device enumerates as 0483:5710, two /dev/ttyACM ports appear, communication works. --- Failing Configuration (Dual CDC + VIDEO) uint8_t UserClassInstance[USBD_MAX_CLASS_INTERFACES] = { CLASS_TYPE_CDC_ACM, // CDC0 - interfaces 0,1 CLASS_TYPE_CDC_ACM, // CDC1 - interfaces 2,3 CLASS_TYP
Hi,first time TouchGFX user but not new to graphics programming and hoping to get some help understanding a TouchGFX problem I'm having on a Riverdi RVT50HQSNWC01-B I'm thinking of using for an automotive dashboard display.If I don't throttle my display changes, the display buffers don't have the same content. The buffer with the most complete looking content does have a small glitch towards the bottom right hand side of the RPM segmented display, so I'm guessing it's not as simple as TouchGFX didn't get around to doing all updates on both buffers but more like it ran out of space somewhere to manage the updates? I've tried putting invalidate()'s either side of making changes, as suggested in this (https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/double-buffer-one-buffer-is-not-updated/m-p/165271#M9822) thread, but that doesn't help. The only thing that helps is to throttle updates inside the screen handleTickEvent() to every other tick (and not do them the first 3 ticks either
Hi,I am working with the OEMiRoT reference project (STM32U385) and I need to configure a single Secure application image without TrustZone isolation (S-only application), while still keeping the Secure Data Image enabled.From flash_layout.h, I see the following: #define MCUBOOT_APP_IMAGE_NUMBER 1#define FLASH_NS_PARTITION_SIZE (0x32000) /* default case */and also this condition: #if (MCUBOOT_APP_IMAGE_NUMBER == 1) && (FLASH_NS_PARTITION_SIZE == 0) which seems to define the “FULL SECURE” case.QuestionTo correctly implement an S-only application (no S/NS split) in OEMiRoT:Should I explicitly set both:MCUBOOT_APP_IMAGE_NUMBER = 1FLASH_NS_PARTITION_SIZE = 0ORIs FLASH_NS_PARTITION_SIZE automatically set to 0 by the OEMiRoT provisioning/build system when selecting the S-only configuration, meaning it should NOT be manually modified in flash_layout.h?ConcernThe header comment suggests that some Flash layout values are automatically generated by the ROT provi
Hello,long time lurker, now with an issue that I would like to solve. I developed a firmware that runs standalone without issue. I would like to use the secure manager on my STM32H573VI microcontroller.I followed the procedures at this link: https://wiki.st.com/stm32mcu/wiki/Security:How_to_make_your_application_compatible_with_Secure_Manager and I am able to run the python provisioning.py --sfi-flash command. Then from the cube ide I can debug my program that is written with cmake and the cubemx template.Since I am using threadx I set TIM6 as a time base for the HAL.What I observe is the following...- if I run the application straight away, I do not see the tick increment. - I set an __enable_interrupt() before HAL_Init() and I see that the tim6 interrupt is fired.Then in the ISR, I see that with the first line of HAL_TIM_IRQHandler, when reading htim->Instance->DIER then I land in a BusFault_Handler. I run out of ideas. No clue about how to deal
Hello STM Community,We are developing a battery-powered iot product using the STM32WLE5 (single-core variant) with LoRaWAN communication. Problem DescriptionAfter an under-voltage event, the SUBGHZSPI bit gets permanently stuck at 0. The radio becomes completely unresponsive. Key observations:The issue **persists across full power cycles** (battery removed for minutes, capacitors fully discharged) A **software system reset** (`NVIC_SystemReset()`) does NOT fix it **Re-flashing the firmware** does NOT fix it The only known fix is using STM32CubeProgrammer To Reset the bit ( Done in the picture below ). The error is SUBGHSPISD stuck to 0. Once we set the bit to 1 we can resume normal operation. What we have tried (without success):1.RF subsystem reset via RCC_CSR_RFRST LL_RCC_RF_EnableReset(); // delay LL_RCC_RF_DisableReset(); // wait for RFRSTF to clear 2. SUBGHZSPI peripheral reset (APB3 bus): __HAL_RCC_SUBGHZSPI_FORCE_RESET(); // delay __HAL_RCC_SUBGHZSPI_RELEA
Dear ST Team,I am using the STM32H5 Nucleo-64 board (MB1814) to develop a CAN communication-based application. In my implementation, I am using the TX Queue for message transmission and RX FIFO0 for message reception, both operating through interrupts.While reviewing the HAL library, I observed that the Message RAM allocation for the RX FIFOs and TX Queue is defined using static, hardcoded macros, as shown below:#define SRAMCAN_FLS_NBR (28U) /* Max. Filter List Standard Number */#define SRAMCAN_FLE_NBR ( 8U) /* Max. Filter List Extended Number */#define SRAMCAN_RF0_NBR ( 3U) /* RX FIFO 0 Elements Number */#define SRAMCAN_RF1_NBR ( 3U) /* RX FIFO 1 Elements Number */#define SRAMCAN_TEF_NBR ( 3U) /* TX Event FIFO Elements Number */#define SRAMCAN_TFQ_NBR ( 3U) /* TX FIFO/Queue Elements Number */Since my application uses only TX Queue and RX FIFO0, I would like to know whether it is possible to reallocate the Message RAM to increase the number of elements for these two resources while set
Does STM32 provide an mbedTLS integration library for the STM32H573 crypto hardware accelerators? If so, could you please share the details? I found a library at the link below, but it does not cover all the hardware accelerators supported by the STM32H573. Could you share a more complete mbedTLS integration library if you have one?
Hi ST Team,I am using an STM32U585AII6Q on a custom hardware board. My firmware is based on SBSFU with TrustZone enabled.For production manufacturing, I would like to provision blank devices using STM Secure Firmware Install (SFI) over the ROM USB DFU interface.I would appreciate clarification on the following points:What is the recommended procedure to create and use an SFI package that contains both my custom firmware and the required production option bytes? Can the SFI package program both the firmware and the option bytes in a single operation through the USB DFU interface? My intended production option byte configuration is: TrustZone (TZEN) enabled BOOT0 pin tied High on the hardware BOOT_LOCK enabled RDP Level 2 enabled No OEM password provisioning (OEM2 not provisioned) Is this configuration supported through the SFI provisioning flow? After the SFI package has been programmed with the above option bytes, can anyone confirm that the ROM USB DFU bootloader will no longer
TouchGFX Version: 2.26.0Problem: preview in Designer looks different from generated code.Details: when moving a modal into an existing container, Designer does not draw the dimensions correctly. Steps to reproduce: Add a container that is smaller than the screen size and move to somewhere away from screen edges. Add a modal to the screen. Add a Box to the modal. Move the modal into the container. See the incorrect drawn modal. Switch between screens to force correct drawing.Workaround: in Designer, go to another screen, and then go back to the screen you were editing.See also attached images:
[English was established as the common basis so that everyone in the global community can understand each other (see ST Community Terms and Conditions - STMicroelectronics Community, article 10)]Can an STM32 microcontroller be programmed by OpenPLC? If so, how? Is there a video tutorial on YouTube?---apakah mikrokontroller stm32 bisa diprogram oleh open plc? jika iya, bagaimana caranya? apakah ada video tutorialnya di youtube?
I am using stm32h563zi microcontroller (Nucleo-H563zi) in this i have created project using trust zone. In this aim was to use UART4 to transmit message. But i am unable to transmit, i have uploaded main.c of secure and nonsecure. what is the possible error in not transmitting the message usign UART4 in nonsecure.
I create this post as my own (and others) experience contradicts the solution to the follow ticket. More information found in the replies section.Please look into it and see if you agree.https://community.st.com/t5/stm32-mcus-products/does-stm32h56xx-1mb-device-has-extra-memory-for-high-cycle-data/td-p/849391
Hi everyone,I'm planning to build an IoT-based data logger using an STM32 microcontroller and would appreciate some advice from those who have worked on similar projects.The project requirements include:Reading multiple environmental sensors (temperature and humidity) Logging data to an SD card Sending data to a cloud platform via Wi-Fi or LTE Low power consumption for long battery life Ability to update firmware remotely in the futureI'm currently considering the STM32L4 or STM32U5 series because of their low-power capabilities, but I'm open to suggestions if another family would be more suitable.A few questions:Which STM32 series would you recommend for this type of application? Is STM32CubeMX sufficient for managing a project of this size, or would you recommend another workflow? Have you used FreeRTOS for sensor reading, data logging, and communication tasks? Was it worth the added complexity? Are there any common pitfalls I should watch out for when designing the hardware or firmw
I’m using SDIO + DMA on an STM32F407 and I need a “transfer complete” callback for SD writes/reads. What is the correct way to attach a user callback for SDIO + DMA completion when using the CubeMX‑generated SD/FATFS drivers?Thank you!
I'm exploring Secure Firmware Install of our product firmware, programming it to a Nucleo H563ZI development board straight out of the box, never previously used. I'm programming it with firmware binaries (including a bespoke OEM iRoT), option bytes and a couple of OBkeys files (one for certificate-based Debug Authentication, another for my iRoT’s keys). For these current experiments, I'm using a global license for installation.I'm using STM32CubeProgrammer and STM32 Trusted Package Creator version 2.22.0, with X-CUBE-RSSE package version 2.0.0 installed.Running the installation process within the GUI STM32CubeProgrammer, the following message boxes are displayed as it proceeds:* (Info) File download complete* (Info) MCU Reset* (Error) Error: Execution of RSS CMD failed, returned value = 0xFFEADE2A* (Error) Error: Failed to Process Area Number 1 of type HThe installation process stops after the last of these errors. After failure, the MCU's option bytes are in this state:OPTION BYTES B
Hi,I have this question because the reference manual states:“When flash high-cycle data area on Bank1 is enabled, the code memory map is not continuous from Bank1 to Bank2 on 2M- and 512K-byte devices.”So, does this mean that enabling high-cycle data sectors as EDATA on a 1MB device does not affect the code memory space, while on 2MB and 512KB devices, some sectors are reassigned for EDATA usage? If that’s the case, it seems like the 1MB device effectively has an extra 96KB of high-cycle data memory.Snaku
STM32H563MIY3Q is not available in LDO, is it available in Bypass mode ? Can an external LDO be used to power the core? Since there is no internal LDO inside the chip, is it unnecessary to keep the external Core voltage at 1.1 V before the VDD reach the POR threshold level? Do VDD and external core supply have timing sequence constraints? If an external LDO is used, can the VDDSMPS pin be connected to GND? Is there a reference schematic available? How should the software be configured when we use an external LDO for core power supply on this chip?
I'm planning to use an STM32G0 to make a Type-C to DP controller based on DP Alt Mode, and the high-speed data lines go straight to the DP links, but I'm not really sure how to connect them.Its shape would be something like this.According to the pin assignment of TA0356, item EThis is the Type-C socket definition I found from USB-IFThe mapping in TA0356 is shown in green font.The DPLinks connections are A2 - A3 = TX1 → ML1B11-B10 = RX1 → ML0B2 - B3 = TX2 → ML2A11-A10 = RX2 → ML3 Third, this is VESA's PDF,where PDPLinks correspond to shown in blue font.TX1→ ML0RX1→ ML1TX2→ ML2RX2→ ML3Because in the VESA PDF it shows a Type-C cable adapter, we need to swap the TX and RX internally. This is mentioned in the USBIF PDF.So, when the DPLinks in the VESA PDF switch to my design, the following changes will happen, shown in blue font.TX1→ ML1RX1→ ML0TX2→ ML3RX2→ ML2After converting like this, I got a sequence of different DPLinks than in TA0356, where ML0 and ML1 are the same, and ML2 and ML
Hi Dear,I connected as picture my SWD pins. What is best solution for SWD Pins? Sould i capasitor, TVS or safety component? Is there any guide for STM32?
I set PA6 and PA7 to ADC4_INx in CubeMX and ran CODE GENERATE.The generated main.c file implements MX_ADC4_Init(), but it doesn't seem to be called from anywhere.Should I call this somewhere in the main statement?Also, I tried implementing ADC reading within the main loop, but the return value of HAL_ADC_GetValue() is always 0 (even though it's actually around VDD/2).I've attached main.c. Could you please tell me the correct implementation method?
Hi everyone,I’d like to propose an enhancement for a future TouchGFX update.Currently, the clickable area of a ToggleButton is limited strictly to the dimensions of the button’s image. While this works in simple cases, it can be limiting in more practical UI designs.I suggest giving the ToggleButton a resizable clickable area, similar to the way the FlexButton works. Specifically, this would allow the developer to: Expand the clickable area independently via standard width and height properties. Freely position the toggle image within that area (just like an image placed inside a FlexButton). Use case example:Imagine a screen with multiple toggle options, each accompanied by explanatory text or an icon next to the button. With this feature, users could simply tap on the descriptive text or icon to activate the toggle, instead of having to precisely hit the small button image. This would significantly improve the user experience, especially on smaller screens or touch targets.I believ
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.