Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello, I am considering to use several STM32 microcontrollers to develop CANFD devices. I just saw CANFD Bosch specification v1.0, and more particularly scope 8 which defines the following requirements:Unfortunately, on all STM32 I have been confronted so far, you cannot specify exactly PROP seg and Phase seg 1 indivually but just the overall (Prop_seg+Phase_seg1). Which is fine to determine the sample point but I am not able to check if my bit timings are meeting the requirements above as I cannot discriminate prop seg length from phase 1 length.1. Is the dispatch between propseg and phase seg 1 constant over all devices ?2. Is the propagation segment always fixed to 1Tq for example ? Any insight regarding this would be appreciated,Best regards
Hi Sir, This is shiva chary ,am trying to implement Ethernet without LwIP,so when am configuring the ethernet MAC it is not resetting and am getting timeout error. can u please provide the solution for the respective errorThank youregards,shiva chary
Hi;In order to determine exactly the chip type I'd like to read the DBGMCU_IDCODE register. When I try to do this the bootloader hangs. RM0410 44.6.1 says "Only 32 bit access support". I guess the bootloader uses byte access.Is there a workaround?Reading UID and FLASHSIZE works just fine.
Hi Folks,I'm working with an STM32G0B1MCT6. In my application I need to be able to react to pulses with a width of about 5 ns. It seems the only way I could pull this off is with the rising edge detection in the EXTI controller, or some additional external hardware. Datasheets for other products include a tEXTIpw parameter. I don't see a spec in either the reference manual or datasheet for the G0 series though. Help me ST - please can I have an official spec for this parameter on this series. Alternatively, do you have any recommendations for detecting short pulses without the EXTI peripheral? Cheers!
I created the OTA application by following this YouTube video:https://www.youtube.com/watch?v=mRzZOa3jmuM&list=PLnMKNibPkDnG9JRe2fbOOpVpWY7E4WbJ-&index=14https://www.youtube.com/watch?v=mRzZOa3jmuM&list=PLnMKNibPkDnG9JRe2fbOOpVpWY7E4WbJ-&index=13After performing an OTA update using the OTA application I created, the OTA_ReBoot characteristic does not show the "Upload File" button—only a Write button is visible, as shown in Figure 1.The settings for OTA_REBOOT_REQUEST were configured based on Table 1 in AN5247 (see Figure 2).So my questions are:How should I modify the configuration to make the OTA_ReBoot characteristic appear as shown in Figure 3 (with an "Upload File" button)?Alternatively, if I don't modify the program, can the OTA upgrade still proceed normally in the next update?
STM32H730, an invalid tag is generated for payloads that are not a multiple of 4, as described in Re: STM32U545 AES GCM Tag mismatch - STMicroelectronics Community.AES-CCM: no issues, everything works.AES-GCM:The HAL already handles required padding on its own.Encryption and tag generation - workDecryption - worksTag generation after decryption - invalidTried with and without AD. Tried to provide AD and/or Ciphertext as a multiple of 4 and 16 bytes (as suggested by other posts; however, the H7 HAL already handles padding). The resulting tag after decoding is invalid for a ciphertext of a length that is not a multiple of 4.Everything works when the ciphertext is a multiple of 4 bytes (but not when manually padded to such with 0-oes at the end). The ciphertext of 15 bytes won't generate a correct tag, but it works when it is 12 or 16 bytes.Standard HAL functions are used: HAL_CRYP_Encrypt, HAL_CRYP_Decrypt, HAL_CRYPEx_AESGCM_GenerateAuthTAG, and HAL_CRYP_SetConfig.What am I doi
Hi,I’m working on the STM32G491 series. In my current project, the STM32 is configured as an I2C slave and communicates with another processor over I2C.When entering bootloader mode for flashing, the STM32 responds with the slave address 0x5F, which is also confirmed in the AN2606 application note.The issue is that the connected processor already has another I2C slave device using the same 0x5F address, and that device’s address cannot be changed.Is there any way to change the STM32’s I2C slave address in bootloader mode to avoid this conflict?
Hi,I’m currently implementing I2C in slave mode using the STM32G491 series. Due to pin constraints, we’re considering using SCL and SDA pins from different GPIO ports—for example, SCL from port PA and SDA from port PC. Is it acceptable to assign I2C pins from different ports for a single peripheral?Also, we noticed a pin labeled I2C_SMBA. Could you explain its purpose? Can we use it for CLK or DATA?
Hello!Our project is supposed to use C++17 features.When linking C++17 compiled objects against TouchGFX Designer's distributed binaries (eg: touchgfx_core.a), linkage fails, because the touchgfx binaries appear to be compiled against the c++14 standard, not c++17.Compiling with IAR 9.30.1, having the C++17 compiler flag ("libc++" in IAR parlance) set, the following error is thrown during linkage. Error[Li009]: runtime model conflict: Module ListLayout.o(touchgfx_core.a) specifies that '__CPP_Library' must be 'DLib', but module [hidden-name].o has the value 'libc++' We are using TouchGFX 4.23.2 which according to the date of this post by ST Employee @LouisB, we should have no issue linking its objects against C++17 objects compiled by IAR. However, when inspecting the distributed binary from ST (TouchGFX\4.23.2\touchgfx\lib\core\cortex_m7\IAR9.x\touchgfx_core.a), we can clearly see that it was compiled with C++14, and not C++17: __CPP_Exceptions.
When I saw the version of ST-Link on the Nucleo board, I saw that there is V3E of V3 and there is V3EC, but if you look at the data sheet of ST-Link, there is only an explanation of the EC version, but there is no explanation of E. Is there any support for this?
I am trying to understand SVPWM logic developed by ST, from mc workbench, i referred the documentation provided. But its much unclear in the documentation as well why and what variables are being used for. I want to know the reference of the literature discussed in the documentation (see image).Function: PWM_SetPhaseVoltages()My queries: What is the logic of X,Y,Z for calculating sector? Reference ? Instead of using simple tan-1(Vbeta/Valpha). Thanks in advance.
Hi !I am evaluating the risks associated with STM32F3, where I am speculating a case where the voltage drops in VDD for few microseconds. For an example, let us assume the voltage drops from 3.3V to 3.0V for few microseconds. This occurs every x ms (assume 1 or 10). Now, 3.0V is still a good range, but will this constant voltage drops lead to any risks over longer time? Any corruption in flash memory or weakening of protection diodes, etc..??There are EMC related risks I understand from hardware perspective. What I am interested in is, the parts of controller that might be affected in the long run.Thanks!
Hello ST experts,I have bought a STM32H750IBT microcontroller. Could you please let me know how I can find whether it is V revision or Y revision device?
Hi, I'm having a problem with the wake-up procces using interruptions. I use three pins, PA0, PA8 and PA9, set the with no pull-up, and in rising mode. then i enable them as wake up pins, in rising mode. i go to sleep in stop mode, using the functions from stm32_lpm.c, inside the UTIL_SEQ handler. When the device goes to sleep after UTIL_LPM_EnterLowPower(); the consumtion reaches 7uA. If i generate a pulse in PA9 pin, the device wakes up and executes a function that is setted as a task to the handler. the function set on a pin with a led, waits for a second and reset the pin. It works just fine. But with the two other pins, PA0 and PA8, the device wakes-up, reaching 3,5 mA in consumption, but does not follow with the perocces neither returns to low power. Any idea why the changes from one pin to another? PA8 and PA0 seem to have wake up capabilities, following datasheet.Thanks for the help!
Hello Team,I am currently working on STM32WLE5 microcontroller and getting issue in HAL_Delay(), it got stuck, ifound that systick interrupt was not generating. In main() function, I start with HAL_Init() and then HAL_Delay(500) and controller get stuck sometimes, the only way out was multiple reset. I have gone through many forums but didn't get exact the solution.Thanks & RegardsRohan
As I tried to find CAN drivers for " STM32L4R9I-EVAL" but I didn't find any, And I tried configuring CAN example of Stm32L476G-Eval board but it is not working.Anyone who worked on STM32L4R9I-EVAL board please Guide me in this
Recently i bought this STM32F103C8T6 Board along with ST Link V2 I was trying to upload a HEX(60KB) file using STlink software but i noticed something wierd, memory size in both pics is showing 256KB but this device only comes with 64KB flash memory then how is this possible?Product Descriptions says 64KB Flash MemoryHonestly i am confused
Hi all,I am Struggling with STM32L432 CAN Bus communication from one STM32L432 to another STM32L432 using MCP2551.* I have checked loopback works.*I am using HSE Clock (After soldering SB17) - * I have also tried putting Oscilloscope at TX pins between STM32 Transmitter and MCP2551 but signal just stays high.* Plus, i can see that this never triggers but putting it in debug mode and putting a breakpoint in there I also tried following this guy: 115. STM32CubeIDE MCP2551 CAN BUS with STM32 F103C8T6 but to no avail. * I also tried doing the same setup i.e. ADC on transmitter sending information to other side via CANBUS.* I have quadrupled checked Hardware circuitry, and all seems to be right.* CANBUS Distance is also less than a meter now with termination at both ends.TX Code - RX Code - Any help would be much appreciated. Thanks
I'm trying to find the best approach to accomplish the following: Read audio samples from a digital microphone using the ADF1 peripheral and use the LPDMA controller to store those samples in a SRAM4 buffer. An interrupt or event should occur when the buffer is half full and full. I'd like the LPDMA operation to be circular so I don't have to re-initialize it after every buffer write. Performing this task using as little power as possible is important, so the microcontroller should enter STOP2 mode while filling the bufferIt seems there are two ways to configure an LPDMA channel in CubeMX: Linked List and Standard Request Mode. As a side note, there is no mention of Standard Request Mode in the reference manual, but there is something called Direct Programming Mode mentioned. I assume these are different names for the same thingGetting back to my question: Which is the best mode to use for achieving the above goal? Linked-List or Standard Request mode? I initially thought Standard Requ
I am designing a board with an STM32H725ZGT3. I would like to multiplex external Flash and RAM on the same Octospi bus and use the external flash as execute in place memory. Is this a supported configuration?
Hello,We are thinking of switching from STM32F446 MCU to STM32U5A5 MCU in our device which is still in R&D.We are coding as bare metal. Since we are working with battery, low power is important for us. Also, our Quad SPI and USB HS work is critical and necessary.We have a problem. ST was giving the driver as USB_Device in STM32F446. However, ST does not give a ready driver in STM32U5A5. For this reason, there are a few things we do not understand.1) Do we have to use Azure RTOS to work with USB HS?2) Can we work with USB HS as bare-metal?3) Doesn't ST really have a driver for USB HS?4) How should the configurations for USB HS CDC be made in the .ioc file?5) Do we need to write the driver ourselves?Can you give us detailed information on the subject?Thank you for your help?
My project is a two-player Pong game using two joysticks, with each joystick controlling one paddle. The user interface was created using Touch GFX. The board is an STM32F429, and I have configured ADC1 to use channels 0 and 8. I’m using interrupts, but both paddles are currently being controlled by joystick 1, and joystick 2 has no effect. The adc_value1 and adc_value2 values read from the two joysticks via UART are identical.Please help me correctly read the value from each joystick so that each paddle is controlled properly.Thank you.
I have been trying to configure Nucleo STM32F401RE board as an I2C Slave and Xavier Nx as Master but it is throwing me BUSERR.I am adding some the main.c file below to explain my configurationmain.c/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2025 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "i2c.h" #include "gpio.h" /* Private includes -------------------
Hi,I was going through the documentation in this link. It mentions that there is a transparent mode. How can I enable this in the example for PBP Source?/* Codec Mode */ typedef uint8_t CODEC_Mode_t; #define CODEC_MODE_DEFAULT (CODEC_MODE_FLOW_CTRL) #define CODEC_MODE_FLOW_CTRL (0x01) #define CODEC_MODE_WAIT_SYNC (0x02)These are the modes available. I do not see an option for transparent mode here. Let's assume that I already have LC3 encoded data that is sent over UART/SPI/USB etc, I do not wish to decode and encode again. In this case, the transparent mode is useful. How can I enable it? Is it even possible? Best regards,Navin
Hi everyone,I'm working on an STM32H7RS project (NUCLEO-H7S3L8) with the following setup:Bootloader in internal flash (0x08000000)Application in external OSPI flash (XIP) at 0x70000000Using Azure RTOS (ThreadX)Using TIM6 as the HAL time base (not SysTick)Configured using latest STM32CubeMX and STM32CubeIDE (v1.18.1)What I already checked:The vector table is correctly set in main() of the application: int main(void) { /* USER CODE BEGIN 1 */ #define APPLICATION_VECTOR_TABLE ((uint32_t)0x70000000) SCB->VTOR = APPLICATION_VECTOR_TABLE; __DSB(); __ISB(); /* USER CODE END 1 */ /* Enable the CPU Cache */ /* Enable I-Cache---------------------------------------------------------*/ SCB_EnableICache(); /* Enable D-Cache---------------------------------------------------------*/ /* MCU Configuration--------------------------------------------------------*/ /* Update SystemCoreClock variable according to RCC registers values. */ SystemCoreClockUpdate(); /* Reset o
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.