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 trying to make continuous TX CW signal on 868.1 MHz or 432.4 MHz with the nucleo stm32 WL55jc2 without success. I spend a lot of times but sometimes goes wrong.I'm looking for somebody who as experienced with SUBGHZ and ping-pong as my app is derivated from to help me to make it works.I can share the project if somebody could help.Thanks by advance Franck from France
Hello ST team,We are using the STM32WL5MOC6HTR module, which does not include the STSAFE-A110 secure element.However, in the STM32WL5MOC6HS variant, the PB8 pin is used to power the STSAFE chip (VDD_STSAFE).In our setup (with the HTR module), when we set PB8 high during testing, the flashing process (using ST-Link / STM32CubeProgrammer) fails or hangs.When PB8 is left floating or configured as input, flashing works normally.I want to understand:Why does driving PB8 high prevent flashing on the STM32WL5MOC6HTR module?Is PB8 internally connected or reserved for STSAFE even on the non-S variant?Should PB8 be kept floating or pulled low when STSAFE is not populated?Any hardware or reference design explanation would be very helpful.Thank you!Module: STM32WL5MOC6HTRObserved Behavior: Flashing fails when PB8 is driven high.
Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code. Hello there, I have a simple one, I have run the exmaple project on camera dcmipp continous mode and snapshot mode for the stm32n6570 development kit, how, the image feed on the screen is blurred on the first run with out any edits, I have tried to play with the downsizing that is configured in the project in vain, hoping to get a clearer image.these are the default settings that I that come with the example DonwsizeConf.HRatio = 25656; DonwsizeConf.VRatio = 33161; DonwsizeConf.HSize = 800; DonwsizeConf.VSize = 480; DonwsizeConf.HDivFactor = 316; DonwsizeConf.VDivFactor = 253; if(HAL_DCMIPP_PIPE_SetDownsizeConfig(&hdcmipp, DCMIPP_PIPE1, &DonwsizeConf) != HAL_OK) { Error_Handler(); } if(HAL_DCMIPP_PIPE_EnableDownsize(&hdcmipp, DCMIPP_PIPE1) != HA
I’m working with an STM32G0 running ThreadX (Azure RTOS).The system UART is configured in circular DMA mode with an IDLE event interrupt for data reception.SymptomsIntermittently, after hundreds of successful receptions, the system enters HardFault_Handler.The fault always occurs at the same point in the code (on a C division instruction, inside a function unrelated to DMA).The register values at the HardFault are shown in Image 1.When it runs without triggering a hard fault, the registers are:xPSR = 0x01000000 and CONTROL = 2.When the hard fault occurs, these registers are:xPSR = 0x00000000 and CONTROL = 0.The failure does not depend on the received data.The thread stack (PSP) has sufficient space.I believe the intermittent HardFault is not related to the operation itself:If I modify the code—adding new instructions or removing code—sometimes it reproduces, and other times it still reproduces but in different parts of the code.QuestionWhat can I do to determine the root cause of this
Hey everyone,I’ve been using the STM32F429IGT6 for an audio project, and I'm running into an issue with the ADC readings. When the system is idle, everything seems fine, but once the load increases, the readings start to fluctuate unexpectedly—particularly when using I2C.I’ve already tried adding decoupling capacitors and adjusting the wiring, but the issue still persists. Wondering if anyone has dealt with similar issues, especially related to power noise or grounding, and how they managed to stabilize the ADC?Any advice would be great!Thanks!
Hi,I would like to recreate the DCMIPP_ContinuousMode example but using the cubeMX to configure the MCU, I haven't found anything online to follow as example.Thanks.
Hey together, I have a question regarding changing the clock while running in XiP mode. Upfront everything works so far very well. On our STM32H750 we have a very simple bootloader. This bootloader configures the QSPI and the STM32H7 to run the appliction code in XIP. Therefore we configure the QSPI clock to use the HCLK3 in the bootloader. We use an external crystal 8MHz and the PLL as SYSCLK to generate the 240MHz for the HCLK3. Then we jump to the application code. The applicaiton code resets the System Clock Mux in the startup code calling "SystemInit ()" inside the system_stm32h7xx.c to use the HSI (64MHz) for SYSCLK. This results at first in a drop of external crystal signal as well as a clock drop of the QSPI Clock from 240MHz to 64MHz. Then we reconfigure in the application code, while running in XiP, the System Clock Mux to use the external crystal and the PLL. Going back to the 240MHz for the QSPI. So far this seems to work perfectly fine, as there is
As the title says.I am using STM32H523RCT6 with no RTOS (no ThreadX) and USBX in Standalone mode.The code is basically:MX_USB_PCD_Init();MX_USBX_Device_Init();HAL_PCD_Start(&hpcd_USB_DRD_FS); Which executes, but as soon as the USB_DRD_FS_IRQHandler is called, I run into a hard fault. The trace is:USB_DRD_FS_IRQHandler()HAL_PCD_IRQHandlerHAL_PCD_ResetCallback_ux_dcd_stm32_initialize_completeat/* Create the default control endpoint attached to the device.Once this endpoint is enabled, the host can then send a setup packetThe device controller will receive it and will call the setup functionmodule. */dcd -> ux_slave_dcd_function(dcd, UX_DCD_CREATE_ENDPOINT,(VOID *) &device -> ux_slave_device_control_endpoint);the USB_FNR register shows LSOF 0x3 as well as the LCK and RXDP bit set and the USB_ISTR has the bits ESOF, SOF, RST_DCON and SUSP set.Please help, I've already lost way too much time on this.
Hi everyone, I’m working with a custom made STM32F446ZET6 board that otherwise functions perfectly (all peripherals, flash programming, etc. work fine). The only thing that doesn’t is the ROM bootloader. I can’t get USB DFU or UART boot to respond no matter what I do. What I’ve verified BOOT0 = 1 (3.3 V) at reset NRST pulled high, no reset loops VDDUSB = 3.3 V, decoupled with 100 nF HSE = Abracon ABLS-8 MHz-12 pF, started with 18 pF load caps and lowered to 10 pF as I saw in a post here this might be the cause PA9 connected directly to VBUS (5 V) PA11/PA12 wired to USB-FS D−/D+ (verified routing and continuity) Board runs normal firmware from Flash with no issues What I’ve tried BOOT0=1, reset → USB never enumerates Tried UART boot (PA10 RX, PA9 TX, 115200 8E1) → no ACK, completely silent. Verified with ST-Link under reset: RDP = 0xAA (no protection) MEMRMP = 0x0, VTOR = 0x0 → seems like it’s still mapping main Flash, not System Memory. Jum
Hi,I'm exploring using UART idle interrupt on RX to signal to my application that data has arrived.I currently push data into a tx queue then start transmission. I rely on uart tx ISRs to check if there is any more data to send, then load up a DMA transfer.UART TE is enabled once when the UART is enabled. I then rely on DMA to do everything. This currently works very well.Can anyone suggest how I could squeeze and idle frame in? Ideally an idle frame will be inserted after each call to uart_dma_send, eg once per item in the transmit queue. My aim would be to keep my current transmit setup, where I can keep shoveling data into the transmit queue. Im using STM32F745. Probably I've missed something in the datasheet..TX currently looks like:void interface_uart_send_stuff(if_uart_t* p, uint8_t* stuff, uint16_t length) { tx_q_push(p, length, stuff); if (tx_state_is_busy()) { // TX already happening, just queue up more to send return; } // Start tx tx_q_dta_t tx = tx_q_popI(&p->
I am trying to use one STM32M4 as TX, and another STM32M4 as RX,but RX can't receive the correct i2s data that TX transmits.TX transmits 16bits data by HAL_I2S_Transmit_IT(&hi2s2, i2s_dummy_buffer, 16);RX receives 16bits data by HAL_I2S_Receive_DMA(&hi2s2, i2s_received_buffer, 16); The results:1) If TX transmit 0,1,2,...,15:RX receives:[0] = 0xC000 [1] = 0x0000 [2] = 0x4000 [3] = 0x8000[4] = 0xC001 [5] = 0x0001 [6] = 0x4001 [7] = 0x8001[8] = 0xC002 [9] = 0x0002 [10]= 0x4002 [11]= 0x8002[12]= 0xC003 [13]= 0x0003 [14]= 0x4003 [15]= 0x80032) If TX transmits 16bits of 0xAAAARX receives 16bits of 0xAAAA3) If TX transmits a sin waveRX receives 16bits of unknown number The following is TX and RX's config:TX:RX: Let me know if you need more information,thanks!!!
Hello,In AN5967, it says:When VBAT is connected (VBAT = 3.0V)? will the oscillator (RTC) stop running if VDDA18AON is not present?There are several conflicts between the various documents... Can someone at STM update the docs?AN5967, RM6486, UM3300, and the STM32N657x0-dk development board schematics seem to contradict each other.... which one is correct regarding the SMPS configuration?
I am unable to control GPIO output pins with the H5 GPDMA. I am able to control GPIO with the F103 using this project...https://github.com/mnemocron/STM32_PatternDriver...where the DMA is much simpler. Section 3.7 of AN5593 (How to use the GPDMA for STM32 MCUs) doesn't provide much information on GPIO control, but does mention using memory-to-memory transfers. I have tried both memory-to-memory and memory-to-peripheral circular DMA transfers without success. Like the F103 example, I am using the TIM2 output compare CH1 as the request event for a DMA transfer. My scope indicates that TIM2 CH1 is toggling properly every millisecond, but no signal comes from the GPIO pins. I've tried myriad permutations of modes and requests/triggers with no success.Can someone please provide help or a link to a GPDMA project that controls GPIO? HAL_TIM_Base_Start(&htim2); for (int i=0; i < sizeof(pixelclock); i++) pixelclock[i] = 0; // the pixelclock
So new problem while trying to bypass non functioning SWD...Using a working NUCLEO_H723 I can use the STM32CubeProgrammer to access it via STLINK (internal and external) as well as via USB DFU after reset with BOOT0 high.From my reading of AN2606, once the bootloader has initialized, it cycles through the various options in sequence till it gets a connection (CAN first, then USARTx, I2Cx, SPIx, USB). The diagram indicates USB cable detection so I'm assuming as long as it isn't connected that the other peripherals will be checked.I'm unclear on it checks all the possibilities for each USARTx (and I2C, SPI) or just one of them ? The only readily accessible USART is UART3 on CN10 of the Nucleo so I've started with that. Tried using RTS/DTR for BOOT0 and reset control but can't get the timing/polarity correct so just holding BOOT0 high and tried both manual reset and a pulse from DTR. I can see a single 0x7F being sent but no reply, then one more 0x7F after 2 seconds before it times out an
Is there any working project maybe on github 1024 x 600 RGB TFT ? Those screens are very popular all over the place. There is STM32F746G-DISCO with 480x272 TFT RGB. I have no problem to get it working. For bigger sizes since there is no working example from STM. I have a few custom boards and I cannot get them working. I followed the example for STM32F746G-DISCO with 480x272 to connect 1024x600 on a few chips which support LTDC (24 bit).I wonder what I might be missing.
Here is the code: void DMA_Init_SPI2(void *rxBuffer, void *txBuffer, uint16_t rxSIZE, uint16_t txSIZE) { RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN | RCC_AHB1ENR_DMAMUX1EN; // DMA1 Channel 1 для SPI2_RX (Peripheral-to-Memory) DMA1_Channel1->CCR = DMA_CCR_MINC | // RAM++ DMA_CCR_TCIE | // IRQ_EN DMA_CCR_PSIZE_0 | // 16-bit DMA_CCR_MSIZE_0 | // 16-bit DMA_CCR_CIRC ; DMA1_Channel1->CNDTR = rxSIZE; DMA1_Channel1->CPAR = (uint32_t)&(SPI2->DR); DMA1_Channel1->CMAR = (uint32_t)rxBuffer; DMAMUX1_Channel0->CCR = 12 ; // SPI2_RX (Table 91 rm440) // DMA1 Channel 2 для SPI2_RX (Memory to Peripheral) DMA1_Channel2->CCR = DMA_CCR_MINC | // RAM++ DMA_CCR_DIR | // RAM -> SPI DMA_CCR_PSIZE_0 | // 16-bit DMA_CCR_MSIZE_0 // 16-bit ; DMA1_Channel2->CNDTR = txSIZE; DMA1_Channel2->CPAR = (uint32_t)&(SPI2->DR); DMA1_Channel2->CMAR = (uint32_t)txBuffer; DMAMUX1_Channel1->CCR = 13; // SPI2_TX (Table 91) NVIC_EnableIRQ(
Subject: STM32H563RIT6 I2S1 Not Receiving Data from PCM1804 in Slave Mode (Polled) Description: I'm using an STM32H563RIT6 MCU with an 8 MHz external crystal. The I2S1 peripheral is configured in slave mode (receive only) and connected to a PCM1804 ADC chip, which is set as the I2S master (transmit only). The PCM1804 outputs audio in the following format: 32 kHz sampling rate, stereo, 24-bit data packed in a 32-bit frame. Using a logic analyzer, I confirmed that the I2S signals from the PCM1804 (I2S_WS, I2S_BCK, I2S_SDO) are correct and properly aligned. The connections are as follows: I2S_WS → PA4 I2S_BCK → PA5 I2S_SDO → PA6 I'm testing I2S data reception with the simplest polling-based code, but the STM32H563RIT6 fails to receive data correctly. During debugging in the Start_I2S1_Polling function, the temp_buffer array (used in HAL_I2S_Receive) contains all zeros, which does not match the data captured by the logic analyzer. Below is my code. Could you help identify what I'm
I am looking for a .ioc file to jumpstart a project using GFX02Z with a nucleo-f767zi board.Can anyone help?Thanks in advance!sesh
I'm using a Blue Pill and want to replace its MCU with a genuine.one I purchased from a trusted vendor, yet I'm not 100% sure if it's actually genuine.1- What are some of the issues with clone/copy/high copy STM32 MCUs?2- Is there any tool/way I can check the MCU I bought with to see if it is really genuine? Thanks in advance.
I have an STM32G431 doing FOC on a little gimbal motor, but am getting strange noise on the current sense ADC when it's being triggered by TIM3. It shows up as random spikes, which values always end up being dividable by 8. Weird thing is, if I have the ADC set to oversample, it will average out these spikes. While I'm 100% sure it's a digital artifact, not measured noise. That would never ever all end up with the last 3 bits being "000". Here's a direct comparison by the ADC being triggered by TIM3's TRGO directly:And changing nothing but starting the ADC through software in the TIM3 update event interrupt:Does this ring a bell anywhere? I've been wrestling with this for days, but can't find a way to get rid of the artifacts while still triggering the ADC automatically.
Dear Team,Could you please send me the Hyperlynx file for this board shown in the application note.RegardsHARI
I’m using the X-NUCLEO-F446RE and IKS02A1 boards, but I don’t know how to use them without relying on MEMS Studio. I’d like to ask for help on how to read the data from the accelerometer and gyroscope (IMU) and transmit that information through the UART interface, so that I don’t have to use MEMS Studio every time.
Hi all, I have an STM32L071VBT6 and want to test the UART functionality. I configured UART4 RX and TX and physically connected them to do a loopback test. I define 2 arrays to start with /* USER CODE BEGIN PV */ uint8_t Send_buffer[] = "Gateway test"; uint8_t Rec_buffer[13]; /* USER CODE END PV */ I start by clearing the Rec_buffer array. /* USER CODE BEGIN 2 */ memset(Rec_buffer, 0, sizeof(Rec_buffer)); /* USER CODE END 2 */ Then in my while loop I try to send and receive, but I always just receive the first character ('G' in this case in Rec_buffer[0]) while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ // UART TRANSMIT/RECEIVE TEST CODE HAL_UART_Transmit(&huart4, Send_buffer, strlen((char*)Send_buffer), 100); HAL_UART_Receive(&huart4, Rec_buffer, strlen((char*)Send_buffer), 100); HAL_Delay(1000);
Hello,I'm a university student with a deep passion for embedded systems.I've really enjoyed tinkering with ST microcontrollers and have experience with several boards in your STM32 family, including the F446RE, F411, and H743. I've been following the development of your more powerful boards and I'm incredibly impressed by the new NUCLEO-H757XI-Q. I'm very keen to get one to use for my university projects and to continue learning.The issue I'm facing is that as a student, the board's price (around $64 with shipping) is unfortunately a bit expensive for my budget.I was wondering if STMicroelectronics has any form of educational or student discount program available? Any assistance would be greatly appreciated. I'm just trying to see if anyone has been in a similar situation and if ST is able to support students in this way.Thank you for your time and guidance.
Hi, I am trying to create the I2C communication using the format used from the company seller of the device.I have to follow these steps:I2CReadFunciton ( uint8_t slAddr, uint8_t* wrData, int wrLen, uint8_t* rdData, int rdLen Initiate the bus by issuing a START condition.If there are bytes to write (wrLen > 0):Address the target device with its slave address in write mode.Transmit the wrLen bytes contained in wrData.Without releasing the bus (i.e., do not send a STOP), issue a REPEATED START to transition into the read phase.Begin the read phase:Address the same device with its slave address in read mode.Receive rdLen bytes, storing them sequentially into rdData.Terminate the transaction with a STOP condition.Key constraints:If a write phase occurs, it must be immediately followed by a repeated start—no STOP is allowed between the write and the subsequent read.The read always occurs after either the initial START (if no write) or the repeated START (if a write was performed).&n
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.