Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I designed simple board around STM32C011J6 MCU (SO8 package). I'm using fresh-from-packaging parts, ordered from Element14 (Farnell). When I try to connect to MCU (via SWD, using ST-LINK/V2 ISOL), I get "Can not read memory! Disable Read Out Protection and retry" error:13:05:51 : Connected via SWD.13:05:51 : SWD Frequency = 0,9 MHz. [I've tried frequencies between 400kHz to 4MHz, same result]13:05:51 : Connection mode : Connect Under Reset.13:05:51 : Device ID:0x44313:05:51 : Device family :Unknown device13:05:51 : Can not read memory! Disable Read Out Protection and retry.Chip Erase doesn't work either, which suggests RDP2 (if indeed enabled). Is there some issue I concerning board layout/setup have managed to miss (SWDCLK for instance is used to control a FET in main application, but that should not interfere here; SWDIO and NRST are not shared), or has someone delivered me bogus parts (as I suspect)?I am not seeing any activity on any of the MCU pins when disconnected fro
Can't connect to new board: NUCLEO-N657x0-Q Error: No STM32 target found
Title and content edited: modified MPU by MCU. There is a big differenece between MPU and MCU products Hi, we are currently selecting an STM32 MCU. We need a dual core M7+M4 and so we've spotted STM32H757, so far so good. Unfortunately we (lately) found out that even if its timer(s) are stated as HRTIM they do not have the DLL feature implemented and do not support high resolution PWM. So the question is "Is there any ST MCU fullfilling both requirements, M4+M7 and HRTIM with DLL?" Thks
Hi all,I want to use the EMMC as USB storage space.After connecting to the computer and successfully formatting, I found that the file transfer speed is very slow (write speed is 1-2 Mb/s, read speed is 2-6 Mb/s).After enabling DMA, the speed still hasn't improved.And I referred to an example(https://github.com/STMicroelectronics/x-cube-azrtos-h7/blob/main/Projects/STM32H735G-DK/Applications/USBX/Ux_Device_MSC) and switched the read/write interface to DMA(BSP_MMC_WriteBlocks_DMA,BSP_MMC_ReadBlocks_DMA), but the enumeration failed. Is this due to differences in the chip series or incorrect configuration?Aside from this, are there any other methods to improve the speed?The attached file is my project.
Hi all,I'm working on an audio project with an STM32U575, where SAI 1A is receiving TDM data from an ADC and SAI 2A needs to take the data after processing and output it over I2S to a DAC.The audio sample rate is 48 KHz in both cases, and both SAI blocks get their clocks from PLL2P at 12.288 MHz.How should I buffer and process the data? I'm concerned about whether the SAI peripherals will drift apart from each other if I try to start a naive double-buffering system.Thanks for any tips!
Hello everione!I’m working on a project where I need to measure the total harmonic distortion (THD) of voltage and visualize its harmonics. The fundamental frequency is 50Hz. I’m relatively new to STM32, and I’d appreciate any guidance on libraries or tools I could use for this task, or if there are any similar projects that could serve as a starting point. I appreciate any suggestions or resources you can share, thanks.
I'm trying to set up a simple UART debug just for transmission from the the NUCLEO board.uart.c#include "uart.h" #define GPIOAEN (1U<<0) #define UART2EN (1U<<17) #define CR1_TE (1U<<3) #define CR1_UE (1U<<13) #define SR_TXE (1U<<7) #define SYS_FREQ 16000000 #define APB1_CLK SYS_FREQ #define UART_BAUDRATE 115200 static void uart2_set_baudrate(uint32_t periph_clk, uint32_t baudrate); static uint16_t compute_uart_bd(uint32_t periph_clk, uint32_t baudrate); static void uart2_write(int ch); int __io_putchar(int ch) { uart2_write(ch); return ch; } void uart2_tx_init(void) { /*** Configure UART GPIO pin ***/ /* Enable clock access to GPIOA */ RCC->AHB1ENR |= GPIOAEN; /* Set PA2 mode to alternate function mode */ GPIOA->MODER &=~ (1U<<4); GPIOA->MODER |= (1U<<5); /* Set PA2 alt function to UART tx (AF07) */ GPIOA->AFR[0] |= (1U<<8); GPIOA->AFR[0] |= (1U<<9); GPIOA->AFR[0] |= (1U<<
Dear ST Community/Support Team, We are developing a Firmware Over-The-Air (FOTA) solution for an IoT asset tracking device using the STM32H747IIT6 microcontroller (LQFP176 package, dual-core Cortex-M7/M4, 2MB dual-bank Flash). The system integrates a SIMCOM cellular/GNSS module for connectivity and location services, with firmware downloads staged via AT commands (e.g., HTTP for files like fwv1.bin) and processed using STM32 HAL UART/Flash APIs. Project Overview: Hardware: STM32H747IIT6 as main MCU; SIMCOM module on UART1 for AT commands (e.g., AT+FSOPEN/FSREAD for file staging); GNSS NMEA parsing on UART2 (offloaded to M4 core). Software Stack: STM32CubeH7 HAL (v1.13+), FreeRTOS on M7 for multitasking, dual-bank Flash for safe updates (Bank1: Bootloader + Active App; Bank2: New Firmware). FOTA Flow: Poll server for update manifest (version, URL, checksum). Download chunks to SIMCOM FS or SD card. Verify (CRC/SHA256), copy to inactive bank, set flag, reset.
I am trying to send GPS data using B-L072Z-LRWAN1. I use PingPong project and changed the PingPong_Process as follows.static void PingPong_Process(void) { Radio.Sleep(); memcpy(BufferTx, tempBuffer, sizeof(tempBuffer) - 1); Radio.Send(BufferTx, PAYLOAD_LEN); } "tempBuffer" contains a portion of the GPS data. When I receive data on another B-L072Z-LRWAN1 and view it in TeraTerm, it appears to be capturing GPS data. However, data reception stops after a few minutes. Sometimes it stops after one minute, while other times it continues for about 20 minutes. I can send text data using same B-L072Z-LRWAN1 without problem. However, errors occur when sending and receiving GPS data.Edited to apply source code formatting - please see How to insert source code for future reference.
Currently I am struck with Ethernet communication where I am not able to communicate properly.I have working functionality with static IP. I have implemented functionality to either enable DHCP or Static. Independently both works. When I am trying to call an event to enable DHCP or static my board hangs or freezes. Sometimes I jump into Hardfault_handler error. After debugging I noticed that my memory mapping somehow I am not able to figure out the exact root cause. I am using Touchgfx as an output interface. I followed your F7 videos and tried to fix the solution but didn't work. Maybe I thought of asking for your help. I share my linker script and MPU_config and also Ethernet descriptor. My current script expects to keep assets text, font, extflash related to touchgfx in QSPI memory, SDRAM wants to add Touchgfx_scrollbars etc. I tried to use the QSPI location but failed. RAM memory location where I am currently facing an issue. I attached my linker script for refe
Hi,I’m trying to confirm the supported year range for the built-in hardware calendar in the STM32L452RE.Since the RTC year register is two digits (00–99), does this mean the calendar supports dates from the year 2000 to 2099?I’d appreciate it if anyone could clarify up to which date the RTC can correctly calculate.Thanks,
Hi ALL,I'm working on a MCSDK project which configures as follow:1. STM32F407VET6 (yes I migrated a device). 2. EG3118 driver w/ 12V power supply. 3. SVGP104R1NL5 MOSFET. 4. 3 Shunt, 15mohm resistor, and 15x amplified external OPAMP which comes from EVAL boards. The OPAMP I tried includes RS821XF and COS721TR. 5. Motor VBUS is powered with another 8V rail. 6. ADC 1/2 configuration, and sampling time is 667ns(15 adc clk).I am building a MOST SIMPLE scene: Open Loop Voltage, motor DISconnected to board, low noise linear desktop power supply. RPM and Voltage both set to 0. Which means there should no any current flow through shunt resistors.When I power up and first time start the motor, the current offset calibration value is not consistent. the "pHandle->PhaseAOffset" varies from 32900 to 33400, which means about 0.1A inaccuracy.The only way I can get stable readout, is commenting out 2 instance of below line in R3_2_CurrentReadingCalibration():R3_2_SwitchOnPWM( &pHandle->_Sup
Hello everyone! My problem is that if I flash the BLE_DataThroughput_Client and Server projects to the boards and follow the ReadME step by step to connect two boards, the boards are seemingly doing nothing. On the terminals I can see that after pushing the reset button, the programs are initialized correctly, but no matter how I'm pushing the joystick, nothing happens (no blue led, nothing on the terminal). I tried implementing the joystick in the project in a similar way that the BLE_Audio_PBP_Sink does but it did not work, and manually toggling GPIOC PIN 13 did not work either. It seems like to me that the buttons are not correctly implemented in the projects for this discovery kit. That being said, in the ST BLE Toolbox android app I can connect to the server board and measure upload speeds. Anyone else had this issue or am I doing something wrong? Thank you in advance!
Hello ST Community,I am testing the BLE_Audio_TMAP_Peripheral application from STM32Cube_FW_WBA_V1.6.1 on the STM32WBA55G-DK1 board. I noticed an issue that occurs consistently after a BLE audio call is terminated.After the call ends, the firmware falls into a loop. In debug mode, I see that the RADIO IRQ (RADIO_IRQHandler) is firing, and eventually execution reaches the function llhwc_sm_done_isr() after low-level radio interrupt handling. At this point, the code is polling the RADIO register (at 0x48020440) waiting for some acknowledge bit that never gets set.This behavior is reproducible not only when running from the IDE but also when flashing and running the provided BLE_Audio_TMAP_Peripheral_reference.bin binary. I observed this issue when testing with a Samsung Galaxy A55 smartphone.Could you please advise whether this is a known limitation, or if there is a workaround/fix available?Thank you!
Hello,I am currently trying to collect acceleration data at 16 kHz from a USB accelerometer using an STM32F401RET6 in USB Host mode.I created two tasks: vUSBInitTask and vUSBReadTask as shown below. void vUSBInitTask(void *pvParameters) { MX_USB_HOST_Init(); for (;;) { MX_USB_HOST_Process(); vTaskDelay(pdMS_TO_TICKS(10)); } } void vUSBReadTask(void *pvParameters) { AUDIO_HandleTypeDef *audio_handle; uint8_t *buf; char msg[64]; static int32_t sample_buffer[SAMPLES_TO_SAVE]; int collected_samples = 0; while (Appli_state != APPLICATION_READY) // wait until USB is ready { vPrintString("Waiting for USB ready...\r\n"); vTaskDelay(pdMS_TO_TICKS(500)); } for (;;) { audio_handle = (AUDIO_HandleTypeDef *)hUsbHostFS.pActiveClass->pData; if (audio_handle && audio_handle->microphone.supported) { buf = audio_handle->microphone.buf; if (buf) { USBH_StatusTypeDef status = USBH_IsocReceiveData(&hUsbHostFS, buf, audio_handle->microphone.frame_l
i can not create a simple project on stm32F407 that blink leds with the use of freertos
Hi everybody,I used a STM32F446 to communicate on NMEA2000 (CAN bus).The two pins (RX/TX) of my µc are connected to an isolator SI8621 (https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/data-sheets/si861x-2x-datasheet.pdf) and then, a can transceiver is connected MCP2542 (https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP2542FD-MCP2542WFD-4WFD-Data-Sheet-DS20005514C.pdf)My board doesn't supply the NMEA2000 (the +12V is provided by T-bone of CAN bus - (I have a voltage regulator 12V to 5V on my board).When I supplied the NMEA2000, it works fine. But, NMEA2000 is an option, and by default nothing will be connected on the connector, so no there is no supply on the CAN bus transceiver, so the initialization of CAN bus doesn't work (timeout error).It's no use to put a pull-up resistor on RX or a end of line resistor because there is no voltage.For me the only solution that I see, is that the user (I've a screen) says if NMEA2000 is
Hello, I have two channels on ADC1 and I want to trigger a s ample separately, every two seconds from first channel and every 10th second from second channel. I am using interrupts so after the adc trigger I get an interrupt when conversion is done. But it seems i only get a sample or read it from the first channel. I am new to stm32 microcontroller so i am not sure what can be wrong. I am configering everything and using an interrupt handler for reading the ready sample. I get the interrupt after each trigger but it seems i am getting the value from the first channel. __HAL_RCC_VREF_CLK_ENABLE(); // enable the internal voltage reference hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; hadc1.Init.Resolution = ADC_RESOLUTION_12B; hadc1.Init.GainCompensation = 0; hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.LowPowerAutoWait = DISABLE; hadc1.Init.ContinuousConvMode = DISABLE; hadc1.Init.N
With a stm32c0116-dk, I am attempting to read vrefint, and calculate vref+. From my understanding of the data sheet, and schematic. VDDA is tied to VREF+ . On the development kit, these voltages are 3.3V.VREF+ = ((VREF _Charac+) * (VREFINT_CAL)) / VREFINT_DATAFrom the Datasheet - VREF _Charac+ = 3.0VWhen I calculated VREF+, after reading VREFINT_DATA from the ADC, and VREFINT_CAL from the memory address. I am expecting a result close to 3.3 volts, but instead I am getting 3.04VI have attempted to increase the sample time to ADC_SAMPLETIME_160CYCLES_5, but it makes no difference.What am I doing incorrect?
I am working on a project to replace a legacy ST62 IC in a industrial charger 24V/45A charger with an STM32 microcontroller (STM32F0 series). The main issue is with the PWM signal generation using TIM1 and TIM3. Both timers have 16-bit prescalers (value 0 to 65535), and I need to generate a PWM at 1 kHz with about 1000 steps of resolution.My timer clock is 8 MHz. Based on calculations, prescaler and ARR values can generate correct frequencies, but the PWM output voltage is only around 2.7V instead of the expected 5V, and there is no effective voltage output for charging.I suspect this issue is linked to the STM32CubeMX pinout or timer configuration:Correct PA6 pin configuration for TIM3 PWM output.Proper timer frequency setup: prescaler around 725 with ARR 0 tested, but PWM not as expected.Possible problem in software initialization or timer start sequence affecting PWM output.Relay control pins and PWM outputs may not be correctly activated or sequenced.I have tested a new STM32 board
Hello Team,We are planning to use STM32H7S7L8H6 in our design. With this part we want to integrate quad SPI Flash memory (Part Number : W25Q128JVPIM with 3.3V Vcc).So, in STM32H7S7L8H6 VDDXSPI supply voltage 3.3V is ok, right? Thanks & Regards,Jignesh Karena
I built a custom application based on the LwIP_HTTP_Server_Netconn_RTOS example in the CubeMX SDK 1.17.4. RX and TX work after power-up and in 50% of cases also after a debugger reset. However, in 50% of cases, RX doesn't work at all. The symptoms in the error case: the yellow LED flashes once when booting, then it's constantly on The link is detected as "up" The MMCTGFCR register shows that some packets have been successfully sent (my application sends some packets after boot) No packet is received at all replugging the network cable usually makes everything work, but not always I restart the debugger multiple times until it works, but the whole situation is annoying. I wonder what the problem could be? Since I use the initialization code in the example, only the timing is different. Is there any timing dependency between phy and eth driver? Or can I rule out the phy as a potential problem here? I found this thread with a maybe similar problem, but the workaround proposed there seem
Hello!I am trying to provision a DA certificate on STM32H563 through CANFD Bootloader in system memory.I am calling special function 0x83 as described in AN2606 and AN5405. As I can understand, this is an RSSLIB_PFUNC->DataProvisioning.I am filling the structure and place it to the SRAM3. See the picture/hex.typedef struct { uint32_t *pSource; uint32_t *pDestination; uint32_t Size; uint32_t DoEncryption; uint32_t Crc; } RSSLIB_DataProvisioningConf_t;The structure is placed in 0x2005C000The 0x60 bytes of the obk payload is placed in 0x2005C000.The fuction returns Error code 0xF5F58080 (CRC Error).I've tried several algorythms, byte-reversal, but could not get it worked.I tried to find an example of using this function, but without success.So, I am asking for some code example showing this function.Maybe I need to prepare data somehow. Or add another data in crc calculations.Thanks!
Hello, do you know if we can transmit data formats of 32 bits via SPI in NUCLEO-L552ZE-Q. and if yes, how?
Hello all,I am on the STM23 H750 discovery dev. kit working either in Keil or CubeZone IDE-just started, anyway, so far so good, and according to the logic analyser the LIN works, at least the checksum is right :) So far I am sending the frame once the button is pressed, made with switch and different states... this only sends out the LIN frame once the button is pressed, is this normal, OK, or should the LIN frame be send once the button is pressed continuously every 3 or more seconds... For example, I am reading the bus from the other device, random, and it is sending out frame every few seconds, looks rather random... attaching a pic of analyser...Thank you in advance and I am looking forward!Best.
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.