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
Framebuffer is RGB565,Can I make a dynamic bitmap of ARGB8888? I made one by cacheable container and display the dynamic bitmap by a texturemapper but the image came out is not correct,something did appear on screen,but size and color not right. but if I change bitmap type to rgb565,the image show correctly,but with black background and no alpha ,not what I wanted. There is enough cache,I confirm the dynamic bitmap is created successfully on both type.I tried to display the dynamic bitmap by a Image widget,but the result is the same.In this forum,I can see a solution,to register a LCD32bpp class and set it as Auxiliary LCD in the hal.But I didn't found any thread on this subject.How to use off screen rendering of a textarea in a... - STMicroelectronics CommunityCan I get any help from any @st_it guys?
I followed the steps in this demo workshop to upload a simple program to toggle LEDs to the Nucleo-N657X0 board. The project is in FSBL. I can run the code in debug mode and upload the signed program to the external flash on the Nucleo-N657X0 board with STM32CubeProgrammer. However, when I tried to run the code with the 'Run after programming' option, I got the warning that the core is locked up. Besides, the Option Byte tab and the Erase tab are gone when the ST-Link is connected (See figure below), so the commonly suggested fix of modifying Option Byte is not possible.. My board is NUN657X0Q$CR1 (MB1940). I'm using STM32CubeProgrammer v2.20.0. The CubeIDE is v1.19.0. The firmware is STM32Cube FW_N6 V1.2.0. The SigningTool is v2.20.0 as the programmer. I wonder if there a register that I can check to see the state of the MCU? Is it something to do with the Secure Programming? Any suggestions and comments are greatly appreciated!
Background: I am using the STM32H747I-DISCO board and the BSP SDMMC example from the ST Repository as my starting point. I can provide my code if necessary but wanted to keep post as short as possible. I have looked at AN4838, AN4839 and AN5200 ST Micro Documents. They are detailed but not getting me to my answer fast enough. My Goal:I am trying to understand the detailed reason(s) why I need to enable the D-Cache when using FatFS calls with the SDMMC peripheral on the STM32H747I-DISCO board to avoid a timeout and also why I-Cache does not necessarily need to be enabled. My Understanding to this point: The CLIFF NOTES of what I think I understand (between the ST documentation, AI hallucinations and true answers): Enabling the D-Cache reduces AXI bus contention since the IDMA in the SDMMC peripheral needs AXI bus to move data from the FIFO to SRAM on a very tight timeline, mandated by the SDMMC peripheral. When you enable the D-Cach
It appears that the STM32WLxx FW 1.4 package includes a LoRaWAN stack that implements AES in software. Is there a technical reason that the AES accelerator in the STM32WLxx is not used? I can imagine things like:AES hardware functionally uses more power, or increases latency waking from STOP2, than the Semtech implementation.AES hardware does not provide the functionality required by LoRaWAN (at first glance, this does not appear to be the case).It's just too organizationally difficult to fork the Semtech code to use the AES hardware, or there is some licensing wrinkle (I can't imagine such a thing).If there's no reason not to use the AES hardware, I'd like to explore doing so.
Hi everyone[PN]: STM32F303RE, X-Nucleo IHM17M1, Faulhaber 0620-006B[VERSION]: 6.4.1[TOOL]: MC Workbench setup[DETAILS]: Hi everyone. I'm currently trying to configure the aforementioned hardware for motor control. My question is in regard with sensored startup. In sensorless mode, the open loop motor startup is configured in the "sensorless startup parameters" window in "Speed sensing config" settings. However, when in sensored mode (hall effect), there is no option to do configure the startup behaviour of the motor. I have tried both 6Step and FOC, and in both modes the motor fails to startup, but operates normally once I give it a "nudge". At least for my application, it seems like an open-loop startup is still required. Is there any way to accommodate this, or do I have a misunderstanding of the implementation in some regard.
Hi all,I'm struggling to get SPI working on my STM32U5G9J. I have an nordic master device outputting 6 bytes of data every 500 ms over SPI and plugged into the proper pins, double checked and confirmed on analyzer.stm32u5g9j_dk2.overlay/ { aliases { spi-slave = &spi1; }; }; &spi1 { status = "okay"; pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pb5 &spi1_nss_pb0>; pinctrl-names = "default"; /delete-property/ cs-gpios; fifo-enable; };main.c#include <zephyr/kernel.h> #include <zephyr/logging/log.h> #include <zephyr/drivers/spi.h> #include <zephyr/drivers/gpio.h> #include <zephyr/sys/util.h> LOG_MODULE_REGISTER(main); #define SPIOP (SPI_OP_MODE_SLAVE | SPI_WORD_SET(8) | SPI_LINES_SINGLE | SPI_TRANSFER_MSB) static const struct device *spi_in_dev = DEVICE_DT_GET(DT_ALIAS(spi_slave)); static const struct spi_config spi_in_cfg = { .frequency = MHZ(1), .operation = SPIOP, .slave = 0, }; int main(void) { if (!dev
Hello, I'm starting a new project with the N657 device. I can't get the debug SWO port to work. 1- I'm redirecting the putchar to the SWO port: int __io_putchar(int c) { ITM_SendChar(c); // HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF); return (c); } 2- The trace and debug clock is set to 8mhz 3- In the debugger setup, i enabled the port and set it to 8mhz 4- in the debugger, I enable trace 0, and enabled it. Nothing ever seems to get sent to this window. Note: I know the cable/usb dongle is good since it works with the h743. Does anyone have any suggestions? thanks Matthew
Hi,I have an STM32g473 with 120kb or RAM, running at 169,75MHz.I have some image data stored starting at 0x2000_0000 which comprise of a palette of 235 colors in 00rrggbb format (1 word per color), follower by 304 lines of 370 pixels (one byte each, which is used as an index in the palette to get RGB value.)The data are copied in RAM to avoid wait states when loading them from flash, which mean most is in SRAM1 but the last 85 lines are in SRAM2 and MCC SRAM. The code is in flash.The first line of data display correctly, but the last 85 lines get one extra cycle per pixel (most probably due to reading the data).I could not find anything in the RM0440 that explains where this one cycle penalty come from. The only peripheral I use in addition to SRAMs and Flash (for the code) are the DACs and one GPIO (the gpio is not accessed during the loop that sends the pixels and get the penalties)Can someone help understanding this?
Hello ST Community, I am working on STM32N6 with an IMX335 camera sensor, ThreadX + USBX, and trying to stream live camera video over USB Type-C (UVC) to an external screen / PC. Current status: - Camera + ISP + DCMIPP pipeline is working correctly - Live video is already displayed on the STM32N6 board screen - I want the same live video to be streamed via USB Video Camera / ISP configuration: - Sensor: IMX335 - Sensor output: RAW10 - ISP enabled and processing the RAW data - Frame size currently: 800 × 480 - Pixel size in memory: 2 bytes per pixel - DCMIPP is writing frames to memory using DMA My main confusion is: What is the exact output format from the ISP to memory?Is it RAW, RGB, or YUV (YUY2 / NV12), and how do we confirm this from the HAL / ISP configuration? USB UVC configuration I am using USBX Device Video (UVC) generated from CubeMX. CubeMX gives two main options for video streaming format: UNCOMPRESSED MJPEG UNCOMPRESSED: I understand this usually means YUY2 (YUV422) for U
I have been trying for hours to upload code to the STM32-N6 and I am simply out of ideas. I only managed to upload debug code to RAM once, then I tried erasing the flash on the PCB using STM32CubeProgrammer (which worked, the standard code is not on there anymore) but now I cannot even use the debug option. Every time I try to upload code (I tried all BOOT pin combinations) it simply doesn't work. sometimes it has a timeout while trying to connect and really often I get the following output: Starting server with the following options:Persistent Mode : DisabledLogging Level : 1Listen Port Number : 7184Status Refresh Delay : 15sVerbose Mode : DisabledSWD Debug : EnabledInitWhile : EnabledInfo : default port : 7184Info : Remote address: 127.0.0.1Info : stlinkserver already running, exitTarget unknown error 32Error in initializing ST-LINK device.Reason: Unknown. Please check power and cabling to target. I am using the 5V_STLK header connection for power. Right now, I cannot
I am using software Independent watchdog at STM32H735IGK and i want to freeze it when entering standby mode.I set option byte FW_IWDG_SDBY unchecked but unfortunately it is not working and my program keeps getting out from standby mode.My code:At init:MX_IWDG1_Init(); While the program is running:__HAL_IWDG_RELOAD_COUNTER(hiwdg); When entering standby: HAL_RTCEx_DeactivateWakeUpTimer(&hrtc); HAL_PWREx_ClearWakeupFlag (PWR_WAKEUP_FLAG_ALL); __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); __HAL_PWR_CLEAR_WAKEUPFLAG(PWR_FLAG_WKUP1); // E1 __HAL_PWR_CLEAR_WAKEUPFLAG(PWR_FLAG_WKUP4); // INT //Configuring wakeup pins PWREx_WakeupPinTypeDef sWakeupPin1; sWakeupPin1.WakeUpPin = PWR_WAKEUP_PIN1; sWakeupPin1.PinPolarity = PWR_PIN_POLARITY_LOW; // Flanco de bajada sWakeupPin1.PinPull = PWR_PIN_PULL_UP; HAL_PWREx_EnableWakeUpPin(&sWakeupPin1); PWREx_WakeupPinTypeDef sWakeupPin4; sWakeupPin4.WakeUpPin = PWR_WAKEUP_PIN4; sWakeupPin4.PinPolarity = PWR_PIN_POLARITY_LOW; // Flanco de bajada
I'm referring to RM0481 Rev 4 and I'm currently working on my SDMMC driver. For one reason and another, I need to start a data transfer for multiple read/write commands, but without sending the command again (because it has already been done so).The RM states this about the DTEN (Data Transfer Enable) bit: Ok. Maybe I'm missing something, but isn't the whole point of SDMMC is to communicate with SD, SDIO, and eMMC cards? The marketing people said so: What gives? Can I use or not use the DTEN bit? Or is it just leftover legacy from older versions of the SDMMC IP?
The UCPD / CC circuit is one of the few that connect an MCU pin to the PCB connector. There does not appear to be any specific information on how to protect this pin. Thus, I assume the same rules as other pins apply. That means 5V or even 3V being applied to this pin when the MCU is unpowered would be bad. Is there any recommended protection scheme against this? Is an inline resistor sufficient?
HI, I have a strange issue with our STM32H747 board using the IS42S16400J SDRAM chip.We have been reading the "How to set up the FMC peripheral to interface with... - STMicroelectronics Community" page and this all seems OK.The differences between the system described and our board is that we have 8 MB RAM instead of 32 MB and we do not use the byte lane select signals (LDQM and UDQM from the SDRAM chip are routed to ground). When writing to SDRAM, we see (random) writes to the other 32 bits word within the same 64 bits. This is true for both 16 and 32 bits write from the CM7 core. So writing 0x12345678 to address 0 in the SDRAM results in a random value being written to address 4. Same applies when writing to address 4 - there I see a random value appearing at address 0. If I first write 0x12345678 to address 0 and then 0xaa55aa55 to address 0x14, I see the value 0x12345678 being writting to address 0x10.This is almost as if the processor performs a 64 bits write with the lower o
I am having to program a unit via UART, and every time I open the STM32CubeProgrmmer GUI the interface selector shows J-Link/Flasher.It remembers if I choose ST-Link.If I manually edit the "interface=" entry in config.properties to 2, STM32CubeProgrmmer opens with UART selected.On exit, the "interface=" entry is rewritten to 1.If I select USB as the interface, the "interface=" entry is rewritten to 2, which opens as UART the next time, and then the "interface=" entry is rewritten to 1 on the next exit.
Hello, I created a complex project for a STM32H573 based custom board. That project is ThreadX based and it shall use the USPBD package. I generated to project with STM32CubeMX version 6.16.1 using STM32Cube MCU Package for STM32H5 Series 1.5.1 (see attached IOC file for reference) I create the code for the latest STM32CubeIDE 2.0.0. The project is imported successfully, but does not compile and the following errors are logged: Description Resource Path Location Type 'USBPD_CORE_PDO_TYPE_APDO' undeclared (first use in this function); did you mean 'USBPD_CORE_PDO_TYPE_FIXED'? usbpd_dpm_user.c /test03/USBPD/Target line 1100 C/C++ Problem 'USBPD_CORE_PDO_TYPE_APDO' undeclared (first use in this function); did you mean 'USBPD_CORE_PDO_TYPE_FIXED'? usbpd_dpm_user.c /test03/USBPD/Target line 1577 C/C++ Problem 'USBPD_ParamsTypeDef' has no member named 'PE_UnchunkSupport' usbpd_dpm_user.c /test03/USBPD/Target line 1507 C/C++ Problem 'USBPD_ParamsTypeDef' has no member named 'PE_UnchunkSupport
Hello,I have a custom yoloV8n model that works on STM32N6570-DK_GettingStarted_ObjectDetection. I have trained a yoloV11n model that i would like to test on the board.But on this exmple there is no yoloV11_ui.c ?How i can adapt this example ?Do i need to use app_postprocess_od_yolo_d_ui.c ?Regards,
I have been working with and familiarized myself with the GettingStarted applications, most specifically the object detection program found on GitHub: https://github.com/STMicroelectronics/STM32N6-GettingStarted-ObjectDetectionI would like to take the next step and load my own model onto the board, I like the setup the current code has to output the frames and show the inference processing on the LCD screen and would prefer to utilize the current sample code if possible. My question is thisAm I able to load in my own model I trained using the ModelZoo services, replacing the current model after I convert it to C code. Or will I have to make my own code from scratch to do this Camera->Frame->NN->LCD pipelineAndDo I have to train the model using a certain resolution? I am currently gathering training images by running code found here: https://github.com/STMicroelectronics/x-cube-n6-camera-captureThe output frame that is captured is 800x480 resolution RGB888,
I've got an STM32MP135AAE3 for which I'm writing my own FSBL. It's basically working!There are two scenarios:1) Chip set to serial boot; the BootROM wakes up and I use STM32_Programmer_CLI.exe to send it my FSBL which it stores in SYSRAM, BootROM then passes execution to my FSBL2) Chip set to boot from eMMC; BootROM wakes up, sees my FSBL in eMMC, copies it from eMMC to SYSRAM, passes execution to itIt would be helpful for my FSBL to know which scenario it is, and according to STM32 MPU ROM code overview I should be able to inspect the first 512 bytes SRAM2 for a bunch of boot information as defined in this H file. It also says SRAM2 is for "ROM code secure data" and SRAM1 is for "ROM code non-secure data" and I'm running in non-secure mode so maybe it's actually SRAM1 for me?In any case, I've got my LD file set up so nobody touches the first 512 bytes of either SRAM1 or SRAM2:MEMORY { SYSRAM (rwx) : ORIGIN = 0x2FFE0000, LENGTH = 128K SRAM1 (rwx) : ORIGIN = 0x3
Hello,I'm trying to use 2 networks from the STM32 model zoo on the STM32N6. I would like to load the weights of both models into my external RAM, and the activations into the npuRAM3,4,5 and 6. I have selected the n6-extram profile for both models.I cannot figure out how to configure from X-CUBE-AI the address for the activations and weights, such that they don't overlap. The compiler reports:Compilation details ------------------------------------------------------------------------------------ Compiler version: 1.1.1-14 Compiler arguments: -i st_yolo_x_nano_256_0.5_0.4_int8_OE_3_3_0.onnx --json-quant-file st_yolo_x_nano_256_0.5_0.4_int8_OE_3_3_0_Q.json -g image_network.c --load-mdesc stm32n6.mdesc --load-mpool stm32n6__extRam.mpool --save-mpool-file stm32n6__extRam.mpool --out-dir-prefix neural_art__image_network/ --optimization 3 --all-buffers-info --mvei --cache-maintenance --Oauto-sched --native-float --enable-virtual-mem-pools --Omax-ca-pipe 4 --Ocache-opt --Os --output-info-file
Hello ST/TouchGFX team,Our team have been using scroller widgets to display data that is lazily loaded from a persistent database. It works well, but since these widgets use 16-bit indexes, it limits the amount of rows that can be displayed to 32k. Given the way these widgets work, it's only necessary to keep the visible items in memory and the index is kept only as the first visible item's offset, increasing the index size would have minimal if not negligible memory impact, and since TouchGFX only runs on 32-bit ST MCUs, any arithmetic operations are done in 32-bit anyway so there should be no performance impact.In fact, we've been able to hack a solution to this by modifying the provided framework headers and source files to these widgets. The only issue is that the TouchGFX generator is hardcoded to create the updateitem callbacks with int16 signature and there is no way to change this except for modifying the base classes -- which are overwritten every time the project is rege
Hey there at @Pavel A. I've implemented USBCDC as a device In stand alone mode successfully I intend on implementing CDC host stand alone that is to say without X-thread RTOS.The generated files from cube MX don't have Read_run and Write_run functions for stand-alone when implementing the host side which makes me wonder if it is achievable you to have USBx as a host in stand alone.
Hi everyone,I am working on a custom board based on the STM32F429I MCU (RMII mode) and I am trying to integrate LwIP with a DP83848 PHY.At the moment, I am unable to get Ethernet working. The issue appears during PHY initialization — the code blocks while trying to communicate with the PHY over MDIO.Project ContextMCU: STM32F429IPHY: DP83848 (RMII mode)Middleware: LwIPDevelopment tool: STM32CubeIDE (project originally generated with CubeMX, but I cannot re-generate it now due to version mismatch)ETH driver: HALI have tried:Using the LwIP stack with the HAL ETH driverAttempting raw Ethernet (without LwIP)In both cases, the system gets stuck during PHY initialization.Observed BehaviorThe code freezes when accessing PHY registers (MDIO communication).When debugging, execution appears to stop when checking or configuring the ETH clock.The PHY does not respond to register reads.Suspected CauseI suspect either:The RMII clock (50 MHz reference clock) is not correctly generated or routed.The P
# External Loader Issue: STM32U5G9ZJT6Q + MX25L12833FZNI-10G (Quad-SPI)## 1. Problem SummaryHello, I'm a novice developer who recently started working with embedded systems. I've been struggling significantly with implementing an external loader for several weeks now...I'm developing an external loader for **MX25L12833F** (16MB Quad-SPI NOR Flash) connected to **STM32U5G9ZJT6Q** via OCTOSPI1, but it continuously fails in STM32CubeProgrammer. The loader compiles successfully and generates a `.stldr` file, but programming operations fail.---## 2. Hardware Configuration### 2.1 MCU: STM32U5G9ZJT6Q (LQFP144)- Cortex-M33, up to 160 MHz- 2.5MB SRAM- OCTOSPI peripheral### 2.2 External Flash: MX25L12833FZNI-10G (Macronix)| Parameter | Value ||-----------|-------|| Capacity | 16MB (128Mbit) || Max Clock | 133 MHz || Page Size | 256 bytes || Sector Size | 4KB || Block Size | 64KB || Operating Voltage | 2.7V - 3.6V |### 2.3 Pin Mapping (OCTOSPI1 Port 1)| Function | STM32 Pin | Flash Pin ||--
hi all,which firmware to use for STEVAL-STWBXCS1? datalog2 or ai monitor?regards,
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.