Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
May I ask how the FDCAN Message RAM offset allocation, Tx and Rx BufferElementSize can be configured on G4 Series. As in cubeMX it doesnt give me the option to like the H7 series. Or is that done automatically by the core when generating the code?If so, could I know if it is possible to change it?
I am using STM32G491RE - NUCLEO. connected to the ADM3055e CAN Transceiver Currently I am trying to send 12 Bytes of Data from IXXAT Terminal over to FDCAN1 which receives the message fine and then Output the Message on FDCAN2 though a buffer. So My logic is when a message pass the filter it gets called by the Fifo0Callback and push it to a buffer below. This works fine the buffer also get the full 12Bytes of data same FD format and everything checked out.But when I try to add the message to HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan2, &TxHeader2, TxData2). Where TxData is the dequeued message from the buffer and copys the 12Bytes. The message somehow gets truncated to 8Bytes on output. Heck, when I add "if (HAL_FDCAN_GetTxFifoFreeLevel(&hfdcan2) > 0)", It somehow says it is full even when starting the code.I have been suspecting because I cant set the HAL_FDCAN_ConfigTxBufferElementSize and HAL_FDCAN_ConfigRxBufferElementSize or even the messageRam offset
Hi,I have a strange problem on an STM32L051C8 with the comparators enabled in window mode.If I put the system in stop about 20 seconds after powering the microcontroller, the current draw is about 250 uA. If I then exit the stop mode with a soft reset and put the system back to stop after 20 seconds (without removing the power), the current draw is 0.42 uA.The comparator is initialized in ultra_low_power mode with interrupt enabled to exit the stop mode.What can I look at?Thanks
i am quite new for stm32n6, i am working with STM32N6570-DK with Arduino IMX335 . i just wanna make a simple snaphort using the project SnapshotDecimationMode (used with mb1854)as my reference. i can configured the camera via I2C and start the pipe. but the frame event did not interrupt. i think the causes of issue arepower sequence: arducam has only power en pins unlike mb1854 which has reset and power enable pins.i configured something wrong about interrupt.anyone can teach me the true way to config the camera with dcmipp interrupt?
Hi all,during testing a custom project with NETXDUO on NUCLEO-H563ZI I've noticed that sometimes web server response is rather slow.Wireshark shows rather frequent TCP retransmissions and other problems.To be sure, I've tried an example from ST (Nx_Iperf) with the same result.It seems that problem is in ETH_Prepare_Tx_Descriptors(), in check of Tx Descriptor: /* Current Tx Descriptor Owned by DMA: cannot be used by the application */ if ((READ_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCWBF_OWN) == ETH_DMATXNDESCWBF_OWN) || (dmatxdesclist->PacketAddress[descidx] != NULL)) { return HAL_ETH_ERROR_BUSY; }I removed this check and TCP retransmissions became much less frequent.Is there a better solution?
I have made a dynamic menu made with a listLayout with a number of buttons inside a scrollableContainer. When a user push the buttons the listLayout is updated with new content.I have not been able to have the scrollbar reflect the size of the listLayout after the listLayout is updated. The scrollbar will only update when the user starts scrolling through the new content. Until then it reflect the precious size of the listLayout.I have tried:scrollableContainer1.doScroll(0, 180);Thinking it would have the same effect as the user scrolling the scrollableContainer, but it does not work.Is there a way to force update of the scrollbar?
Dear all, We are using the STM32N6570-DK to encode a video stream (800x600px) and store that at a reasonable data rate to an external sd-card.I have extended the VENC_SDCARD_ThreadX example to a certain extent to cover the obvious timing differences between the video capture loop and a disk write loop. The sample code is a great way to go forward, but at the moment we reach a data write rate of about 25kb/s when using FileX.We have initially used the HAL implementation but I have changed the fx_stm32_sd_driver_glue.c code slightly to use the BSP layer for card speed negotiation that is not present in the HAL layer; debug output shows that we're at least using 4-bit wide data transfers>:CardInfo type 1, version 1, class 1461, spd 0 Inst PWR 00000013 CLKCR 00004004 It seems that just before reaching down to the HAL layer, the single transaction (~200blocks at once, typically), is split into single sector writes in the sd_write_data function (fx_stm32_sd_driv
I need to create a UART driver that works reliably in all conditions.The driver must use DMA, and since the incoming messages are NOT fixed-length, I need to use idle line detection.My question is: how can I use a callback to store the received message when an idle line is detected and then restart the reception using the STM32 HAL idle-line API?
Hello, I'm using STM32CubeIDE 2.0.0 + STM32CubeMX 6.16.1 + FW_H7 V1.12.1 I have a problem with USBX RNDIS.The generated code on file ux_device_descriptor.h at line 308 is: #define USBD_RNDIS_EPINCMD_ADDR 0x81U In the exemple code of STM32H735-DK find on stm32-usbx-exemple repo I have this #define USBD_RNDIS_EPINCMD_ADDR 0x82U The USB device is well recognized be my computer (windows 11) only if the value is 0x82U. My questions: - why it doesn't work with 0x81 - is there is a tips to modify this value on Cube ? Actually I add an error at the end of the file if value is 0x81.. Thanks for help !
I am a software developer working for a company that plans to use TouchGFX for its display solutions.We are currently integrating TouchGFX into an existing IAR-based project and want to use our own display and DMA drivers instead of the CubeMX-generated setup. While TouchGFX initializes and runs partially, we are facing a critical issue where several expected callbacks are never triggered.Problem descriptionThe following methods are never called during runtime:TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)OSWrappers::takeFrameBufferSemaphore()OSWrappers::giveFrameBufferSemaphore()Our TouchGFX thread performs all required initializations, passes our custom LCD driver to TouchGFXHAL, and then calls touchgfx_taskEntry().VSync-related callbacks are working:OSWrappers::signalVSync() is executedbackPorchExited() is executedlockDMAToPorch is 0 (as expected)Despite this, no framebuffer flushing or framebuffer semaphore handling occurs.HAL initialization detailsOur TouchGFXGenera
I am implementing a TCP Server on an STM32H563ZI (Nucleo-144) using NetXDuo. The software initialization part is working perfectly; the ThreadX kernel starts, and NetXDuo reports that the IP instance (192.168.2.55) and TCP are successfully enabled.The Implementation Logic:The system is designed to initialize the network interface, assign a static IP, and start listening on Port 80 for incoming commands. Physically, the link is established as the Ethernet LEDs are active.The Problem:Despite the stack reporting a "Ready" state:There is no ICMP (ping) response from the board.TCP connection attempts via Hercules or Telnet on Port 80 fail with a timeout.It feels like the MCU is either not receiving packets from the PHY or failing to transmit them back to the wire.I am looking for guidance on why the communication fails even though the software reports success. Is there a specific configuration for the H5 series regarding the RMII interface or internal memory management that could prevent pa
Could you please help me find out how much internal storage space this model STM32F427VIT6 has? Thanks a lot.
hello everybody I am programming 10 addressable Leds with PWM with DMA using the M7 cortex of an STM32H747 in a custom board.Characteristics:Clocks: SysClk 480 MHz, TIM kernel clock 240 MHzTimer: TIM3, Channel 4, internal clockPWM base frequency: ~770 kHz (period ≈ 1.3 µs).ARR: 312‑1 (312 ticks → 240 MHz/312 ≈ 769.23 kHz).DMA: Peripheral = TIM3_CCR4, Memory in RAM_D2, half‑word alignment (16‑bit duty), MemInc enabled, PeriphInc disabled, Mode = Normal.What worksIf I run the timer alone (fixed duty), the PWM is correct and stable.The problemWhen I enable PWM + DMA, the waveform becomes random/discontinuous. On the oscilloscope I see “splits” and gaps; the PWM is not continuous. For example, the first 8 bits might be high and the following 16 low (intended to represent RED), but the stream breaks unpredictably. The data buffer looks correct when inspected in the debugger.The configurationI am using channel 4 timer 3. with internal clock source.and DMA is configured as:where data wid
I am creating a program that jumps from the bootloader to the application program using the STM32F410.The bootloader uses 0x08000000 to 0x08003FFF.The application uses 0x08004000 to 0x08007FFF.The bootloader program jumps to the application program successfully,but after entering the application program, the USART interrupts do not function.The SPI in the application program continues to operate after the jump. I'm posting the jump-related program.Can you figure out what the cause might be? I'd appreciate your help.【Bootloader main.c】 void jump_main(){ __disable_irq(); // Clear all interrupt bits for (uint8_t i=0; i<8; i++) { NVIC->ICER[i] = 0xFFFFFFFF; NVIC->ICPR[i] = 0xFFFFFFFF; } int * address = (int *)0x08004004; __set_MSP(*(int*)0x08004000); *(int*)0xE000ED08 = 0x08004000; ((void (*)())(*address))(); } 【Application main.c】 int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration---------------------------------
Hello everyone.I am doing a TOUCHGFX project with STM32H750IBT6, W25Q512, IS42S32400F-6TL. I took my first screen printout and the image came out shifted. I am using my screen vertically by rotating it 90 degrees in Touchgfx Designer. I still haven't solved the problem. I would be very happy if you could help me.
LINK TO THE CODEHello everyone,I'm working on a data logging project using a NUCLEO-L432KC board and a standard Micro-SD card module.I have a very frustrating issue: Reading from the SD card works perfectly, but Writing fails immediately.Hardware Setup:MCU: STM32L432KC (Nucleo-32 board)SD Module: Generic MicroSD Card Module (with 5V to 3.3V regulator and level shifter).Power: Module is powered via the 5V rail from the Nucleo. I added a 1000µF / 25V electrolytic capacitor in parallel on the breadboard to prevent any power drops (brown-outs) during write operations.Pinout: * SCK: PB3MISO: PB4MOSI: PA7CS: PB6 (Software managed)Software / CubeMX Setup:Library: FatFS R0.12c (via STM32CubeIDE).FatFS Config: _FS_READONLY = 0 (Disabled), _FS_LOCK = 0.SPI Config: MSB First, CPOL Low, CPHA 1 Edge, Baud Rate 125.0 Kbits/s for init.GPIO: SPI pins are set to "High" output speed.The Problem:My code successfully initializes the SD card. f_mount returns FR_OK, and f_getfree correctly reports the total
Hello ST Community,We are working with STM32N6 (STM32N6570-DK) and an IMX335 camera sensor, and we would like to confirm whether our intended pipeline is supported and feasible on this platform.What we are trying to doOur goal is to enumerate the device as a standard USB UVC camera on a PC and stream live video:- IMX335 sensor outputs RAW10- STM32 ISP processes RAW10 (demosaic, color processing)- DCMIPP outputs RGB565- Firmware converts RGB565 → YUY2- USB Device enumerates as UVC (Uncompressed YUY2)- Live video displayed on Windows camera applicationThe USB device enumerates correctly and is detected as a UVC camera on Windows, but the live video stream currently appears black.Current Observations- USB descriptors and UVC configuration (Uncompressed format, payload handling, FID/EOF toggling) appear correct- DCMIPP and USB pipelines run without errors- The camera frame buffer contains all zeros, indicating that the ISP may not be producing valid RGB outputMain Questions1- Is live USB U
Hello all :)I am designing a board using the STM32WL33CCV6TR, and want to program/debug using the SWD interface. However, there are multiple pins the SWDIO and SWCLK can be mapped to using alternate functions. Usually with STM products, I have seen a footnote saying which pins the SWD interface is mapped to on boot. However, I cannot see this on the STM32WL33xx datasheet. My question is which pins should I use as SWDIO and SWCLK so that I can program the chip out of the box (without having to mess around with the bootloader). And could I have found this information, as I am sure it is somewhere but cannot find it. I am guessing the PA2 and PA3 pins, but not really for any good reason... Many thanks in advance!
I noticed some options in the CUBE IDE for my H745's ADCs labelled "ADC 12-bit optimized resolution" and likewise for 14 bits. I have searched the references and the internet and find no explanation of how "optimized resolution" differs from the regular resolution. Does anyone know what this means, and where it is documented? Thanks
I am using the USB OTG FS on the STM32H7. My MCU is self powered, so I need to use VBUS sensing. Can a 3.3V signal be used for the VBUS sensing on PA9 or must it be 5V? Based on the linked forum, I believe 3.3V would work, but would like to confirm with the STM32H7 series.https://community.st.com/t5/stm32-mcus/management-of-vbus-sensing-for-usb-device-design/ta-p/49485#:~:text=On%20STM32F2/F4/F7/,136): How should I configure OTG_FS_ID PA10 so my MCU is device only? Should I leave it floating, pulled to LOW, or pulled HIGH? Thanks in advance for any help on this topic.
The screen has 4 containers and many widgets. I am interested in keeping the names during the export to save lot of repertitive work
I am using below component tools MCU: STM32H750IBT6 IDE: STM32CubeIDE Version: 1.20.0 GUI: TouchGFX Version: 4.26.0 SDRAM: IS42S32400J-6TLI FLASH: MT25QL512ABB8ESF-0SIT (QUADSPI) QUADSPI With the following pin out: QUADSPI Configuration: Thank you in advance!
I'm currently using an STM32H7S78-DK, and I'm correctly able to run TouchGFX with FreeRTOS and everything. I also an error handler function that, in case of a crash of TouchGFX it writes directly to the framebuffer.Now, I would like to do a similar thing but on the boot code, so basically before the classic jump if (BOOT_OK != BOOT_Application())I have an external RAM mapped at the address 0x90000000 which works correctly in TouchGFX with .icf likedefine symbol __region_EXTRAM_start__ = 0x90000000; define symbol __region_EXTRAM_end__ = 0x91FFFFFF; define region EXTRAM_region = mem:[from __region_EXTRAM_start__ to __region_EXTRAM_end__]; place in EXTRAM_region { first section TouchGFX_Framebuffer , section Video_RGB_Buffer , section Nemagfx_Stencil_Buffer };I wanted to use the same section of memory in the Boot, accessing the framebuffer directly, so I edited the .icf of the boot withdefine symbol __region_EXTRAM_start__ = 0x90000000; define symbol __region_EXTRAM_end_
Hello,I'm experiencing an issue with the internal LDO regulator on the STSPIN32G4 MCU. The LDO is outputting 4.1V instead of the expected 3.3V, and I've been unable to resolve it despite trying multiple configurations.Problem Details:Target: 3.3V VDD from internal LDOActual output: 4.1V when input voltage > 4VBehavior: When input voltage is 3.33V, output is 3.05V (which seems reasonable given dropout), but when input is >4V, output remains at ~4.1V instead of regulating to 3.3VWhat I've Tried:All configuration options listed in Section 5.1.2 of the datasheetReplicated the three circuit configurations from Figure 9 ("3.3V LDO regulator supplied through VCC")Various register settings without successExpected Behavior: The LDO should regulate the output to 3.3V whenever the input voltage is above 3.3V + dropout voltage, correct?I've attached my schematic and screenshots showing the output voltages. Any insights into what might be causing this behavior or what configuration I might be
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.