Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi there, i hope youre doing great! Im exploring FUOTA over LoRa/LoRaWAN using STM32CubeWL and the Nucleo-WL55JC1For this purpose im exploring the application (included in STM32CubeWL) "LoRaWAN_FUOTA_DualCore"I read the 'readme' file to accomplish build and flashing of the board with this application but the build.bat file throws an errorSo i decided to compile every project of the full application inside STM32CubeIDE, but in the project 'LoRaWAN_End_Node_DualCore_CM0PLUS' i found a linker error:... LoRaWAN_End_Node_DualCore_CM0PLUS.elf section `.data' will not fit in region `APPLI_ROM'...region `APPLI_ROM' overflowed by 272 bytesIm using STM32CubeIDE v2.0.0 and STM32CubeWL v1.4.0, running on windows 11Am i doing something wrong? Any suggestions?
Hello,Description: I am attempting to generate two simultaneous pulses of different lengths using a single timer (TIM4) and multiple channels.Current Implementation: I am currently using One-Pulse Mode (OPM). In my existing setup, the pulse starts at CCR and ends at ARR. However, since ARR is a global register for the timer, all channels are constrained to the same end time, making it impossible to achieve independent pulse widths if they all trigger at the same ARR event.Objective: To achieve independent pulse widths, I want the pulse to start at CNT = 0 and end at CNT = CCRx for each channel. This would allow CCR1 and CCR2 to define the lengths independently while sharing the same timer base.The Problem: I am struggling to maintain the correct output state outside of the pulse window (specifically for t<0 and t>ARR). I have attempted to use LL_TIM_OCMODE_FORCED_INACTIVE to keep the pin low before the trigger and then switch to LL_TIM_OCMODE_PWM1 just before enabling the counter
NUCLEO-F411REI have ADC1 to DMA in a circular buffer 4 samples long (ADC_VAL). I then use a TIM1 interrupt to send the contents via UART to a PC. int16_t ADC_VAL[4]; ... HAL_ADC_STart_DMA(&hadc1, (uint32_t *)ADC_VAL, 4); /* TIM1 callback */ void HAL_TIM_periodElapsedCallback(TIM_HandleTypeDef *htim) { HAL_UART_Transmit(&huart2, (uint8_t *)ADC_VAL, 16, 10); } Should I have declared ADC_VAL as a uint32_t ?
Does the STM32N6570-DK board support XSPI/OSPI interfaces for communication with external peripherals, or are these interfaces limited only to internal or external memory devices?For example, if there is a Device that supports OSPI/XSPI for communication, is it possible to connect the STM32N6570-DK board to such a device to enable data exchange?Could you please provide a clear explanation of the capabilities and practical use cases of the OSPI/XSPI interface on the STM32N6570-DK board?
I have enrolled the gateway and the end node of my PNUCLEO lrwan 3 on Loriot server, but when I view the boot log on my Terra Term terminal, I observe that the end node does not join the server, returning JOINED FAILED.I made sure the end node and the gateway are configured to the same frequency - EU433I also made sure I used the correct details like the dev EUI, APP EUI amd AppKey from the end node to connect to the server, what could be the cause of this JOIN FAILED.
I am trying to get the CAN Loopback up and running on my STM32L431KCU (CAN1), I have tried to follow the: Guide to CAN (bxCAN/CAN2.0) configuration in Loop back mode on STM32 MCUs. But I am getting stuck in the "HAL_CAN_Start()" function where its waiting for the acknowledgement: /* Wait the acknowledge */ while ((hcan->Instance->MSR & CAN_MSR_INAK) != 0U) { /* Check for the Timeout */ if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE) { /* Update error code */ hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT; /* Change CAN state */ hcan->State = HAL_CAN_STATE_ERROR; return HAL_ERROR; } } I then created a new project following the CAN loopback project listed here to get a working project and around my issue: Solved: CAN bus doesn't work in loopback mode - STMicroelectronics Community Using the same MX CAN config, APB1 of 80MHz, example program, and I still run into being stuck in the "HAL_CAN_Start()". I am using STM32CubeIDE 2.0
Hello,here the exit of my (extended)initialization prodecure for ADC of STM32U535 running at 3.3v and 160 Mhz. Before setting ADC_CR_ADSTART, without the small delay or with the delay in line 14 and the limit for i smaller "6" like here "5" in the code, ADC_CR_ADSTART stays high and the programm keeps in the while (ADC1->CR & ADC_CR_ADSTART) loop line16/17. __DMB() is not replacement for the delay.Is the needed delay some artefact of my setup or some requirement that I do not find/oversee in RM0456? ADC1->CR |= ADC_CR_ADCAL; /*8*/ while (ADC1->CR & ADC_CR_ADCAL) { __NOP(); } __DMB(); ADC1->CR &= ~ADC_CR_ADCALLIN; __DMB(); const uint8_t channel = 19U; AdcSetRegularSequence(ADC1, 1U, &channel); ADC1->CR |= ADC_CR_ADEN; while (!(ADC1->ISR & ADC_ISR_ADRDY)) { __NOP(); } for (volatile int i = 0; i < 5; i++) {} ADC1->CR |= ADC_CR_ADSTART; while (ADC1->CR & ADC_CR_ADSTART) { __NOP();
Hi all, our product, used in industrial traction, uses an STM32F407 MCU. In certain conditions, very hard to replicate, the MCU stucks and the watchdog does not reset the MCU. It seems completely blocked. We're suspecting there are some EMC issue on certain brushed motors used the truck but it is not under our control. After we remove the power supply of the board and give back the supply, the board starts to work again. Someone suggest me some latchup phenomena and I think it could be a possible explanation. Now: how can I find what is the pin (or what are the pins) susceptible to the EMI? There could be some traces the phenomena leaves on the MCU? Thanks!
Hello all,We are testing LPUART wake-up from Stop 2 mode using the STM32CubeU0 LL example:STM32Cube_FW_U0_V1.2.0/Projects/NUCLEOU083RC/Examples_LL/LPUART/LPUART_WakeUpFromStop2_InitWe made a minimal modification to the example:Replaced LPUART1 with LPUART2 Used the corresponding GPIO pins for LPUART2 (PB10,PB11)Configuration otherwise unchanged (same clock source, wake-up on RX, interrupt-based RX)Observed behavior on NUCLEO-U083RCAfter programming the board using STM32CubeProgrammer in hardware reset mode, the example works correctly:MCU enters Stop 2RX activity on LPUART2 wakes the system as expectedHowever, after disconnecting and reconnecting the power supply LPUART2 no longer wakes the MCU from Stop 2RX data arrives on the pin, but no wake-up occursIf we again connect and disconnect the programmer (in hardware reset mode) the system starts working normally again, wake-up from Stop 2 via LPUART2 is restoredAdditional observationsUsing LPUART1 instead of LPUART2,
Hello ST team,I am studying the flash security mechanisms (RDP, WRP, PCROP) on STM32L476RG and I understand how to configure Option Bytes using STM32CubeProgrammer or firmware.What I am trying to understand is the hardware-level enforcement flow of Option Bytes:• During reset / power-up, which hardware blocks read the Option Bytes?• How are these values propagated to the Flash controller and debug access logic?• At what point relative to CPU reset release are these protections enforced?I understand that enforcement happens before user firmware execution, but the reference manual does not describe the internal sequence in detail.Could you please clarify (at a high level) how Option Bytes are latched and enforced by hardware during the boot/reset sequence on STM32L4 devices?Thank you.
HelloI am currently developing a quadruped robot using a NUCLEO-H753ZI. My setup involves a mix of Dynamixel AX-12+ (UART3, 1Mbps, Protocol 1.0) and MX-series motors (UART6, 2Mbps, Protocol 2.0) using an SN74LS241N transceiver.The Problem:UART3 (AX-12): Works perfectly at 1Mbps. This confirms my basic transceiver logic and wiring are functional.UART6 (MX-Series): No response at all. I’ve tried downgrading the MX motors to 1Mbps and using Protocol 1.0 to match the AX-12, but still nothing.Technical Context & MPU Setup: To provide more context, I have implemented an MPU configuration primarily to handle IMU sensor data via DMA. I wanted to ensure cache coherency for the IMU data buffers.However, I am now concerned that this MPU/Cache setup might be interfering with my UART6 communication. Since the MX motors on UART6 require much higher timing precision (especially at 2Mbps), I suspect the D-Cache or MPU regions might be causing issues with the UART TX buffers, even though I'm curren
Hi I have been testing secure function calls from non-secure world in STM32U575 - TrustZone Enabled environment.I have a LED_Port which is in secure world (secure peripheral). I have implemented a toggle function in secure project - secure_nsc.c/hCMSE_NS_ENTRY void SECURE_BlinkBlueLED(void) {...}I can be able to compile without any issues:Here are some linker details:.....................................I verified the map files as below.......................Now I am calling this function from non-secure project: It went to Hard Fault as it calls original function which is in the secure world.How to call veneer instead of direct function?Any help?
Hello Everyone,I am currently using LPUART2 for communication between an MCU (STM32U031) and an MPU (Application Processor).Configuration parameters:Baud rate: 9600Stop bits: 1Parity: NoneData bits: 8Description:Data exchange between MCU and MPU works perfectly when both devices are operating in normal power mode (i.e., not in sleep or stop modes). However, I am facing an issue when both MCU and MPU wake up from sleep/stop mode. After wake-up ,The MCU is unable to receive data from the MPU, even though the MPU continues transmitting data. No IRQ handler is triggered on the MCU side.Additional Details:I deinitialize the LPUART before entering sleep/stop mode.I reinitialize it immediately after wake-up.Scenarios Tested:Only MPU enters sleep (MCU remains active): After MPU wake-up, communication works perfectly.Both MPU and MCU enter sleep: After wake-up, communication fails (MCU doesn’t receive data).Observation:It seems that the issue is related to LPUART behavior du
For the microcontroller STM32H562IIT6, does it support code execution from External flash(Xip)? Also does it support Quadspi interfacing in given Octospi lines?
Is the flash dual-BANK feature of H563 enabled by default? How to switch banks
I have been trying to add freeRTOS to simple LED - TrustZone enabled project (default LED project). I just followed the instructions as given here: How to use STM32U5 with FreeRTOS™ in tickless mode - STMicroelectronics Community This instruction shows enabling X_CUBE-FREERTOS for NS but this gave me the following errors: So, I enabled for both, secure and non-secure versions in Cube MX This solved my previous errors but code hang in HAL_GTZC_MPCBB_ConfigMem() [Note: before enabling RTOS I did not see any issues in calling this function] Any suggestions?
Hello,I was trying to implement extended calibration for ADC1 on my STM32U575 according to RM0456 Rev 5. I have a revision ID 0x3001 chip which should support extended calibration. The chip would hang very badly (can no longer connect with debug probe!) after step 6 ("Set the LATCH_COEF bit"). I took a look at the HAL code in stm32u5xx_hal_adc_ex.c and it is doing a few things differently:Using DMB instructions between setting CALINDEX and CALFACT and between setting CALFACT and setting LATCH_COEF.Preserving the low-order 8 bits of CALFACT when writing 0x03021100 to the register.When I changed my code to do those two things the ADC now completes calibration properly and doesn't hang my debug connection.It would be helpful if the RM could be updated accordingly!Thanks,TG
hiim trying to design ADC module with STM32L452.in datasheet table 77, t_s must be 0.03125us - 8.00625us when f_ADC is 80MHzbut in table 78 the range of sampling time is 32.25ns - 8006.75ns.isnt it must be 8006.25ns?
Can the STM32G031Y8Y6TR be subjected to ultrasonic cleaning after being mounted on the board? Are there any internal structures that do not allow ultrasonic cleaning?1. **Cleaning agents**: ST-240KKA or pure water2. **Temperature**: 55°C or below3.**Duration**:Within 6 minutes4.**When using ultrasonic cleaning**:*Frequency: less than 45 kHz
Dear ST Support Team,I am working with the STEVAL-ESC001V1 evaluation board and a drone motor listed at the following link:https://www.dys.hk/product/D2826.html RPS for power supply given directly to ESC power pins of 12V and 2A current.My objective is to run this motor using ST MC Workbench software version 6.4.1. I would like to confirm whether any additional hardware, such as an STM32 development board, is required in order to operate the motor with this setup.During system configuration in MC Workbench, I created a new project and selected STEVAL-ESC001V1 for the inverter section and Bull Running BR2804-1700KV for the motor section. However, when I later attempted to edit the project, the motor selection options displayed only two types of PMSM motors. Could you please clarify whether MC Workbench supports only PMSM motors? The motor I am using is a BLDC motor, as specified above.Additionally, I would like to inquire whether an example project for STEVAL-ESC001V1 is available
Zephyr RTOS 4.3.I am trying to get this sample working on my STM32 Nucleo F767ZI board:zephyr/samples/drivers/uart/async_api/I created an overlay file.nucleo_f767zi.overlay dut: &usart3 { dmas = <&dma1 2 STM32_DMA_PERIPH_TX>, <&dma1 3 STM32_DMA_PERIPH_RX>; dma-names = "tx", "rx"; }; &dma1 { status = "okay"; }; Building and running the sample I get the following output: *** Booting Zephyr OS build v4.3.0-929-g1d6e0d533a81 *** [00:00:05.000,000] <inf> sample: Loop 0: Sending 3 packets [00:00:05.000,000] <err> uart_stm32: Tx buffer should be placed in a nocache memory region [00:00:05.000,000] <err> sample: Unknown error (-14) [00:00:05.000,000] <err> uart_stm32: Tx buffer should be placed in a nocache memory region [00:00:05.000,000] <err> sample: Unknown error (-14) [00:00:05.000,000] <err> uart_stm32: Tx buffer should be placed in a nocache memory region [00:00:05.000,000] <err> sample: Unknown error
Hello! I have a struggle to boot the isolation LRUN project from STM32Cube_FW_N6_V1.3.0/Projects/STM32N6570-DK/Templates/Template_Isolation_LRUN. 1. First i've performed the mass erase to remove the demo on the discovery board. 2. I've build and add the header to the binary with the Signing Tool for all three projects. Example below for FSBL. STM32_SigningTool_CLI -bin Template_Isolation_LRUN_FSBL.bin -nk -of 0x80000000 -t fsbl -o Template_Isolation_LRUN_FSBL-trusted.bin -hv 2.3 -dump Template_Isolation_LRUN_FSBL-trusted.bin3. I've Flashed the external memory in DEV mode with all three images:FSBL flashed to 0x7000 0000 SecApp flashed to 0x7010 0000NonSecApp flashed to 0x7018 00004. I've switched the board to Boot from ext. memory mode and pressed restart. The board doesn't boot. 5. I've loaded the FSBL project in DEV mode with debugger to internal RAM( 0x3418 0400 ) and it runs nicely. ---------------------------------------------
I am using a STM32G4 MCU and STM32CubeIDE. I want to synchronise two timers (TIM3 and TIM15) that are generating PWM signals so that they both start at the same time. TIM3 is set to 250 kHz and the PWM is modulated via DMA on channel 1. The modulated signal is a 10 kHz sine wave.TIM15 is set to 10 kHz and the PWM is a simple 50% duty cycle.I need the timers to start together to ensure that the PW Modulated 10 kHz sine wave (TIM3) is synchronised to the 10 kHz PWM (TIM15).I thought it would be straight forward enough. I have configured TIM15 as master. In CubeMX I have set Master/Slave Mode (MSM bit) to "Enable (Trigger delayed for master/slaves simultaneous start)" and Trigger Event Selection to "Enable (CNT_EN)".I have configured TIM3 as a slave. In CubeMX I have set Slave Mode to "Trigger Mode" and Trigger Source to "ITR6" (per the reference manual).To the CubeIDE generated code I have added: /* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start_DMA(&htim3,
Hello,starting from the example application of the OEMiRot boot project, I noticed that the NS application size is limited to 640kB in the flash_layout.h (#define FLASH_NS_PARTITION_SIZE (0xA0000) /* 640 KB for NS partition */)Since there is 1MB avalaible in the slot, I would like to increase this size from 640kB to 896kB. A first naive change is just to change the define from 0xA0000 to 0xE0000 which leads to the state that the bootloader doesn't find a bootable image anymore.How do I set a larger non-secure application size to have a benefit of the 1MB flash slot? Best regards,Stefan
Hi all,In my project I use several IOs, I2C, SPI, UART, ADC, DAC and most of them work as expected.However, I have 2 inputs from push buttons (pushing the button would set them to 0 volt), set with pull-ups (not set as EXTI) that sometimes stop working after a while: When I check the voltage I see the level is changing, but when reading these IOs using HAL_GPIO_ReadPin() their state doesn't change anymore until I reset the PCB.The rest of the software still works fine when it happens.Never seen this before on ST, and this project was actually migrated from STM32L031 which never showed the issue. I'm having a hard time reproducing the bug, it seems very random so far.If I called the GPIO Init on a regular basis, would it prevent this issue?Kind regardsP.S: I use GNU tools for STM32 v13.3.rel1
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.