Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi, I’m implementing a self-powered USB 2.0 Full-speed device with an STM32H753XI and a USB-C connector.Could you please confirm that the attached schematic: Uses STM-recommended resistor values for the VBUS-sense divider on PA9 to prevent MCU damage if the USB is connected while the MCU isn't powered (MCU is self-powered) Omitting the 22 Ω series resistors on USB_P/USB_N is acceptable for device-only operation. Provides complete ESD/over-voltage protection for the MCU. Contains all capacitors / resistors required for reliable enumeration and long-term robustness. Thanks in advance for your feedback. Best regards,
Merhabalar,https://community.st.com/t5/stm32-mcus-embedded-software/usb-hs-in-stm32u5a5/m-p/809596#M64236I am writing to continue my question here.When I checked the classic core middleware, I saw that it only supports the STM32U575 dev board.I am using the STM32A5U5 development board. Can I run classic core middleware on STM32A5U5 development board? If so, how do I run it? I need to work with bare-metal and CDC.How do I structure the .ioc file?Can you explain in detail?Thank you for support.
Hi everyone,I'm working with the WB05KN because I’d like to take advantage of the option to have the firmware preloaded during production.However, I also want to make sure that I’ll be able to load a custom firmware in the future. Is this possible?I tried flashing the BLE_TransparentMode_SPI and BLE_TransparentMode firmwares from the examples for NUCLEO_WB05KZ, but without success — the firmware gets stuck inside SystemClock_Config. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } I understand that the two components have different part numbers, but my understanding is that the only difference is the pre-flashed firmware — or is there something else that differentiates them?
Hi, I'm trying to get a PWM output that changes duty cycle on each period with DMA in circular mode. I have seen other similar posts (ultimately I'd like to control a WS28 LED with 800kHz), but they are for other MCUs and everything is different in the details. I tried this for quite a while in a bigger project, so reducing it here to the bare minimum.To start with, I'm using a slower timer and just try to get the DMA to change the CCR1 at all on a dev kit (NULCEO-H563ZI)Starting of with this example: The unmodified example works and outputs a PWM on PE9 (50% DC). No I configure DMA as well: In the main.c, I add the DMA: In my understanding, the CC event of timer1 ch1 should now trigger the DMA transfer of the samples from buf, one by one, so DC should be 10000, 50000, 10000, 50000, and so on (circular DMA).The output on the scope is unchanged, the DMA never seems to transfer anything.I also tried to use other trigger source for DMA (GPDMA1_REQUEST_TIM1_T
I'm planning to connect 40 LED with a current of 20mA (total 800mA) to 40-gpio pins of STM32G4 device. The pins will be configured as Open-drain so the 20mA LED current of each pin will flow through an external resistor and the internal low-side NMOS transistor of the IC.In this case I believe there will be no restriction about the STM32G4 power dissipation and current capabilities. This is true or am I wrong? Please could anyone clarify this?Thanks in advance,Gaston
Hi all,I a developing a custom product were the partition is like Bootloader + APP1 + Partition 2 , were I Integrated the DFU library into bootloader and which is successfully enumerated in PC without any errors. My goal is do the flashing .bin file into app1 partition using this USB DFU. But I couldn't even connect the the device. Attaching the screenshot and logs for your reference.the MCU is stm32h563rgt6 with 1mb of flash. Bootloader size: 128kb //0x08000000App1 partition size: 384kb and //0x08020000Partition2: 384KB ////0x08080000this also asking when trying to connectand I proceeded with OKplease see the logs from STM32 Cube programmer15:53:40 : UR connection mode is defined with the HWrst reset mode15:54:11 : USB speed : Full Speed (12MBit/s)15:54:11 : Manuf. ID : STMicroelectronics15:54:11 : Product ID : STM Device in DFU Mode15:54:11 : SN : 336E3683323315:54:11 : DFU protocol: 1.115:54:11 : Board : --15:54:11 : Device ID : 0x048415:54:14 : Dis
Hey guys!I am currently working on stm32F2 series, the issue i was facing in HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) when the UART transmit the first byte the interrupt call back function is not called instead calling the RxCpltCallback it call the " USART1_IRQHandler(void) "and the RxCpltCallback function does not trigger at first byte in UART at the second byte it call the RxCpltCallback function and it works fine and i attached the code i was wrote #include "main.h"UART_HandleTypeDef huart1;UART_HandleTypeDef huart3;unsigned char ra_buffer[32];void SystemClock_Config(void);static void MX_GPIO_Init(void);static void MX_USART1_UART_Init(void);static void MX_USART3_UART_Init(void);int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();MX_USART3_UART_Init();HAL_UART_Receive_IT(&huart1,ra_buffer,12);while (1){HAL_Delay(1000);}void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){HAL_UART_Receive_IT
I’m trying to establish USART communication between two STM32F407-Discovery boards, where one board acts as Master and the other as Slave.Hardware setupMaster Board clk -> save board Clk - [common clock]Master Board TX → Slave Board RXMaster Board RX ← Slave Board TXBoth GND connectedUsing STM32F407-Discovery boards SYNCHRONOUS MODEconnectivity configurationsUSART port used (e.g., USART2)Baud rate (e.g., 115200)Word length (8 bits)Parity (None)Stop bits (1)Clock settings ( synchronous) clock polarity : lowclock phase : one edgecode of master and slave:// Masterchar data = 'A';HAL_USART_Transmit(&huart2, (uint8_t*)&data, 1, HAL_MAX_DELAY);// Slavechar rx;HAL_USART_Receive(&huart2, (uint8_t*)&rx, 1, HAL_MAX_DELAY);output : Im getting grbage value like 127@ , so onWhat I've tried - Verified TX/RX wiring- Checked baud rate matching- Tried loopback test on each board (TX→RX)- Switched from polling to interrupt-based reception
Hello all, I disabled the M4 core based on the tutorial by ST Employee mEALLEm, I pressed Apply, saw the option byte successfully programmed notification, but I have been waiting for MCU disconnect notification for 20 minutes now. The LD4 keeps blinking greed and red. Is there something I am missing because it should not be this long ? Thank you
Hello,I have this board that I have to use for the project. I am using STM32H7S3H8 and 4x MEMS microphone, and I am strugling to get to the point where only math with CMSIS-DSP is important. Is there any example, .ioc file that I could look up to for configuring all the microphone stuff, so I can get math to do magic using DSP on signal using comming from microphones.I configured it to use AzureRTOS and sending data to remote TCP server (still have to figure out certificate stuff for TLS 1.2.), but now I want to add 4x microphone MP34DT06J , using SAI (as I understand all this). And when it comes to cubemx configuration, honestly I am lost. I found numerous pdf's explaining stuff that I don't actually understand (I am not embedded dev, just a regular algorithm stuff developer).So, to my understanding, this is setup that I need to do, but then I come to DMA, which is also with numerous options, that I dont fully understand If anyone can share template, where I can just g
For community awareness:Unless otherwise stated, STM32 GPIOs do not have partial-power-down / Ioff / back-drive protection.Example: If VDD=0V (or VDD unpowered) and a GPIO is driven with 3.3V, then excessive current may flow into the GPIO.This includes TT and FT GPIOs.The behavior of a back-powered GPIO is nondeterministic.Some back-powered GPIOs behave High-Z. Some draw excessive current. Some pull down after ~100ms (GPIO becomes an output). The behavior varies with temperature. The behavior varies chip-to-chip even with same part marking / date code. Measuring different TT and FT GPIOs on a standalone IC with multimeter in diode mode has inconsistent results: sometimes measuring OL, 0.8V, or 1.5V and the measurement changes either due to measuring other pins or due to temperature.ST GPIO documentation may cause confusion regarding FT GPIO back-drive behavior. There are also forum posts which suggest FT GPIOs might have back-drive protection.However, FT pins do not have back-driv
This is a repost because the forum decided that my follow-up was a 'solution'.We want to scan using the BLE Full stack, v1.21. What is happening is that the BLE stack is claiming that these HCI commands are unsupported. HCI_LE_SetScan_ParametersHCI_LE_SetScan_EnableHCI_LE_Set_Extended_Scan_ParametersHCI_LE_Set_Extended_Scan_EnableHCI_Read_Local_Supported_CommandsThe last one is unexpected.The AN5270 doesn't list the 'full' stack among the firmware that is documented as having specific commands. Section 2.1:In Table 1 "Y" means that the corresponding command applies to the dedicated Bluetooth® Low Energy (BLE) stack variant, namely LO / BO / PO / BF / LB, respectively, for Link layer only / Beacon only / Peripheral only / Basic feature / Link layer only basic.Is there another place for documentation on the supported HCI commands per stack? Is there another set of commands we should be used to enable scanning?Cheers
Greetings,Looking at PM0271, there seems to be an API call aci_gap_start_gen_disc_proc. However, I don't see this in the Cube firmware package anywhere in the headers and I haven't found it in sample code as yet. We would like to configure the STM32WB55 for dual role BLE, Central and Peripheral. The Peripheral works. When we enable the Central role and then send the scan_enable command, the wireless stack doesn't accept the request. So, we figure it might be helpful to see an example. What examples are available that demonstrate BLE scanning on the STM32WB55? I checked the AT_Client/Server. BTW, It's pretty difficult to search through samples as the IDE tends to bog down then crash.Cheers
Hello everybody.This is my first post in this forum and I am quite new to the stm32 MCUs. So sorry in advance if I dont know or misunderstand some things. Right now I am working on a setup to read values from a sensor (dps310) and print them in a console on a linux pc. I am using two Nucleo boards for this because the goal is to have a radio communication between the two boards and to remotely read the values from the sensor. Right now the boards are directly connected to each other with uart because I am doing this step by step. So the setup looks like this:Sensor --(SPI)--> Nucleo-F429ZI --(UART)--> Nucleo-F439ZI --(UART/USB)--> PCThe Nucleo-F429ZI is working fine and does exactly what it should which is to read the sensor and transmit the data about once every second to the other board.The Nucleo-F439ZI however is giving me some headaches. The idea is pretty simple. Receive the data with HAL_UART_Receive_IT() and use printf() to transmit the data to the pc in a re
I was used normal mode USB CDC with Host Only -> and in middleware ( USB CDC) And it worked no matter what and good for beginners. After Update That files ware missed with same settings-up for new project. i was in middle in middle of the project for normal USB cdc. if STM programmers need to do that they have to it like new menu item and add new descriptor method or some what then users can understand and now we struck.. if some one updated his project i don't know what happened.. now i'm at middle cannot go forward..
I am trying to implement Mass storage class in STM32U083RCT6. i thought to implement mass storage on external flash but it is not happening for RAM memory itself USB is not working.
i use stm32h750 as a decoder to translate use audio data into i2s 16bits 48khz data.however, when i use usb_otg_fs, everything works properly,but when i use the same configration and only switch to usb_otg_hs,some problem has occured. i use usb3300-ezk as the external PHY, which can communicate with my windows11 laptop through a type-ccable.the computer can detect stm32 audio class and bus hound shows the det description progress run correctly and then system send set interface 0, when i try to display music, it sends set interface 1 for several times but meet xact error.i noticed that something may related to the main clock and usb clock, but i cant find the right settings.
Hello. I have a custom board with a STM32U5F9 device, it has a 1-lane DSI connection to a 240x320 colour display with a JD9852 Controller. This works fine in LP mode; I can initialise the JD9852 controller and write to the GRAM using DSI commands in LP mode- this all works great. I can use Adaptive Command Mode to send my frame buffer to the display via the LTDC & DSI in LP mode. But, when I enable HS mode for LongWrites, the data sent after a HAL_DSI_LongWrite call, observed on my scope, is not as expected for a DSI LongPacket format. I can see the DSI bus going from LP to HS mode as expected, I can see the SoH byte pattern, but after that the bytes on the line are always wrong. (I'm counting data bits on each pos, neg DSI clock edge). Example. I send 8 bytes of FE'h via a LongWrite command so I expect to see 15 bytes on the DSI data line; (SoT) (39 09 00 ECC) (2C FE FE FE FE FE FE FE FE) (CS CS) (EoT) (Sot) (Header) (Payload) (Checksum) (EoT) But I actually observe only
Dear Sirs,I have been developing a board with an H7 and a WB5. I have not had any issues, but one day the WB5 stopped answering, and when I try to connect with the CubeProgrammer I get: "no stm32 target found if your product embeds debug authentication".I moved to a new board wight out of the box, without luck, I changed from the STLink V2 to a new bought STLink V3, no luck.At this point I do not know what to try, because I have already validated my custom PCB as I have it already running and it just lost the communication one day, and with a completely new board (because I thought I could have reflashed the SWIO/SWCLK pins or something to different pins) it does not work either.One point to mention , is that the CubeProgrammer detects the Target Voltage at 3.23V.I have updated both STLinks to the last FW versions that the updater tool allows.I tried too by setting the BOOT0 pin to 1 so it boots in the default bootloader.What could I try? Am I missing something? Has something been upda
I purchased the NUCLEO-L476RG and X-NUCLEO-GFX01M2 boards and connected them together.I downloaded the STM32L476 LCD Example project (I think I found in X-CUBE-DISPLAY v3.0.0 projects), compiled and loaded the code onto the NUCLEO-L476RG. The example worked great with a couple minor changes like HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin).The provided images (.H const char arrays) displayed correctly and the text strings with various size fonts worked as well. Text strings are displayed at x/y position with selected color and background color. But when text strings are positioned over an image, there is no way to make the text character background transparent using the supplied evaluation code. I tried using the different layers of the Nucleo-GFX01M2, but only one default layer seems to be supported by the supplied software driver. See "SetLayer" below.It seems the STM32L476RG eval board cannot support two graphic layers for the Nucleo-GFX01M2, or STM did not bother
I have tried USB examples for Stm32F070, F401, F407 Black board and calling a single "CDC_Transmit_FS" function to print a string but none is working. The hcdc->TxState value is some garbage big value so it always stay busy and also not getting interrupts for USB receive as I have put break points in it too. The STM32 device show up as "composite" instead of VCP. For configuration it is RCC->Bypass Clk, USB connectivity->Device Only, USB_Device->VCP, heap size->0x1000.
I am using STM32U5G9 implementing USB MSC device. When calling function ux_device_stack_initialize(), it returns error 18, which is correspond to UX_MEMORY_INSUFFICIENT. This error happens line 397 of use core file ux_device_stack_initialize.c. if (endpoints_pool -> ux_slave_endpoint_transfer_request.ux_slave_transfer_request_data_pointer == UX_NULL) { status = UX_MEMORY_INSUFFICIENT; break; } May I know how to fix this error?
Hello,maybe this is bit off-topic, but does anybody know if it is possible to suspend an ERASE operation and write to another (previously erased) sector?I want to save a page in flash in case of a power outage and want to interrupt a probably ongoing ERASE.If so, is this possible in internal flash or only in external flash?In our design there are 2 QUAD SPI NOR flash connected to the dual QSPI- and one QUAD SPI NOR to a SPI interface of the STM32H75x. It would be surely possible to write to an idle flash while the other is busy erasing a sector. But it would be nice if write-while-erase-suspended would work on a single flash.The documentation of flash is confusing e.g. in the MICRON flash, which is soldered on the STM32H753_EVAL board, it seems there is difference in sector erase and erase command:The MACRONIX AN0247 says that programming is allowedbut the datasheet says that only read is allowed in suspended stateAny experience here, has anybody checked this out?
Im using a STM32WLE5CCU6 board, I am able to log easily using the APP_LOG() helper function that is provided. The problem is that im not able to receive anything as the USART interrupt never fires hence, HAL_UART_RxCpltCallback() is never called. After searching in the web I saw https://github.com/STMicroelectronics/STM32CubeWL/issues/34 facing the same issue, however the fix they have said doesn't work for me. I also tried the changes proposed in bug stm32 hal driver lock mechanism is not interrupt safeand https://github.com/STMicroelectronics/STM32CubeWL/issues/32 Yet none of these solutions make the interrupt work. If I comment HAL_UART_Transmit_DMA(&huart1, p_data, size); in UTIL_ADV_TRACE_Status_t vcom_Trace_DMA(uint8_t *p_data, uint16_t size) { /* USER CODE BEGIN vcom_Trace_DMA_1 */ /* USER CODE END vcom_Trace_DMA_1 */ HAL_UART_Transmit_DMA(&huart1, p_data, size); return UTIL_ADV_TRACE_OK; /* USER CODE BEGIN vcom_Trace
STM32WB55arm_rfft_fast_instance_f32 fft_instance; arm_rfft_fast_init_f32(&fft_instance, NUM_SAMP);I'm trying to use the rfft_fast function from the arm_math.h libraryBut when I compile I get... ../STM32_WPAN/App/custom_app.c:122:24: error: expected declaration specifiers or '...' before '&' token122 | arm_rfft_fast_init_f32(&fft_instance, NUM_SAMP);| ^../STM32_WPAN/App/custom_app.c:69:25: error: expected declaration specifiers or '...' before numeric constant69 | #define NUM_SAMP 256 I looked at the docs & many examples of the init function, the usage is always as above. Compiles fine if I comment out the init function but obviously that is of no use to me.
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.