Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello ST Community,I am working on the NUCLEO-N657X0-Q board with a TrustZone project configured in STM32CubeMX with three contexts: FSBL, AppSecure (AppS), and AppNonSecure (AppNS). The FSBL is working correctly and jumping to AppS successfully. I followed the wiki article "How to start with RIF on STM32N6 MCUs" as reference. https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_RIF_on_STM32N6_MCUs The secure LED (configured as output push-pull, pulled low initially) turns ON but never toggles. I have tried both HAL_Delay() and a pure software loop for (volatile uint32_t i = 0; i < 800000; i++); inside the while(1) — neither causes the LED to blink. The GPIO write to set it HIGH works, but the toggle never happens. This suggests the secure while(1) loop itself may not be executing, or the app is hanging somewhere before it. The NS LED does not turn ON or toggle at any point. The NS app appears to not execute at all. I have configured RISAF for
I am working with the STM32L4S5VIT6 and currently facing an issue while trying to communicate with the system bootloader over USART. I am using the B-L4S5I-IOT01A Discovery board, on which I am attempting this setup. I have configured BOOT0 correctly and verified that the MCU enters boot mode (the application stops running as expected). I connected USART2 on PA2 (TX) and PA3 (RX), tried swapping TX/RX lines, and also interfaced through a MAX3223 level shifter to a MOXA device, but the STM32CubeProgrammer still reports a “KO – device not responding” error. I have confirmed that the MCU runs user code correctly (LED blink test), so basic functionality is intact. At this point, I suspect either a configuration misunderstanding from AN2606, incorrect peripheral mapping for this specific MCU, or a hardware-level issue with the UART path. Has anyone faced a similar issue with STM32L4 series bootloader communication, or can help clarify the exact USART instances/pins supported in boot mode fo
Hi everyone,I am working with the NUCLEO-U385RG-Q (MB1841) and I've noticed an inconsistency in the UM3062 user manual, specifically in Table 18 (ST Morpho connector pin assignment).The documentation states that PB7 is available on the Morpho connector at pin 5 of CN10. However, in the standard factory configuration, this does not seem to be the case. It appears that the connection depends on the solder bridge (SB) configuration, but the manual is not explicitly clear about the default state for this specific board variant.This makes the pinout tables quite confusing at a glance.Could you please tell me where I made a mistake and are there any other reliable sources of information about the pinout connections for this Nucleo board?Thank you in advance for information.
Hello,I've been struggling with this issue for a couple days, I have a Nucleo-L476RG board that I am trying to run and debug in VS Code. I'm using the STM32CubeMX + STM32 VS Code Extension tool chain to create cmake files, build, and then debug, but I cannot run and debug code due to an error:Error in initializing ST-LINK device.Reason: ST-LINK firmware upgrade required. Please upgrade the ST-LINK firmware using the upgrade tool.I have tried using the "Upgrade ST-Link Firmware" button in the VS Code Extension "STM32Cube Devices and Boards Menu" and I get the following error:Fatal error while trying to update STLink Firmware. Source: STM32Cube Debug CoreSo I installed STM32CubeProgrammer and tried to upgrade firmware from there. I get the following information about my device:Serial Number: 066AFF485671664867215448Firmware Version: V2J43M28When I select the "Firmware Upgrade" button, it says Device 066AFF485671664867215448 not found. No device connected.So I downloaded th
Hi everyone,I am currently facing a very frustrating issue while trying to interface an AP Memory APS51208N (Octal PSRAM) with an STM32H723 via the OctoSPI peripheral.To avoid reinventing the wheel, I recently refactored my initialization code to use the official ST aps512xx library (https://github.com/STMicroelectronics/stm32-aps512). I'm using read and write latency set to 7.Unfortunately, the peripheral is still not working properly, and I am experiencing three distinct, highly erratic behaviors:1. Weird Register Read Pattern When I try to read the memory control registers using the BSP functions, the returned values are incorrect and seem to form a repeating sequence rather than actual register data. Here is what I get for MR0 to MR8:Array[0] (MR0) = 0x08Array[1] (MR1) = 0x89Array[2] (MR2) = 0xDAArray[3] (MR3) = 0xA0Array[4] (MR4) = 0x08Array[5] (MR8) = 0x892. OctoSPI Deadlock (Free-running) If I execute the initialization and read sequence continuously (free-running), the Oct
I created an independent task to run the TCP client and send.[424] local 192.168.10.188 port 5001 connected with 192.168.3.100 port 57804 [ ID] Interval Transfer Bandwidth [424] 0.0- 1.0 sec 5660 KBytes 46368 Kbits/sec [424] 1.0- 2.0 sec 5500 KBytes 45055 Kbits/sec [424] 2.0- 3.0 sec 5389 KBytes 44149 Kbits/sec [424] 3.0- 4.0 sec 5191 KBytes 42526 Kbits/sec [424] 4.0- 5.0 sec 5088 KBytes 41681 Kbits/sec [424] 5.0- 6.0 sec 4936 KBytes 40436 Kbits/sec [424] 6.0- 7.0 sec 4832 KBytes 39583 Kbits/sec [424] 7.0- 8.0 sec 3816 KBytes 31258 Kbits/secThe above is the data volume and status received by my iperf server. After that, my client task no longer sends any messages. I use my computer to ping the IP address of my STM32, and then the client will resume sending.I observed that the gState of my heth variable is HAL_ETH_STATE_STARTED, and the ErrorCode is HAL_ETH_ERROR_BUSY. The DMAErrorCode and MACErrorCode do not have any flags.I think it is the osSemaphoreAcquire(TxPktSemaphore, ETHIF_TX_T
The output of TIMX_CH1 and TIMx_CH1N is decided by previous value before bits 6:4 changed to Frozen mode?
HiInitial situationMCU = STM32U599VJTxQSTM32CubeIDE = v1.19.0TouchGFX = v4.26.0EEPROM Emulator = x-cube-eeprom-v8-0-0 (downloaded direct from STM website)I use the eeprom emulator to save an array of 251 bytes permant on the flash. To save the data into the flash I use the EE_WriteVariable32bits functionThis are my function to init the EEPROM emulator, write data to EEPROM and read data from EEPROMvoid Datastore::EEPROM_Init() { HAL_FLASH_Unlock(); // 1. Flash freigeben // 2. Sicherstellen, dass Flash idle ist uint32_t timeout = 1000000; while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) { if(timeout-- == 0) { HAL_FLASH_Lock(); this->m_errorHdl_p->Add(ERR_ID_EEPROM_INIT_FAILURE); return; } } // 3. Critical Section / Interrupts kurz maskieren __disable_irq(); // 4. EEPROM Init mit Retry EE_Status status = EE_WRITE_ERROR; const uint8_t max_retries = 3; uint8_t attempt = 0; while(((status != EE_OK) && (status != EE_PAGE_FULL)) && (attempt &l
Split from STM32WB05KNV6TR missing in STM32CubeIDE 2.0.0 Target Selector - this is a new questionHi Ghofrane,Thank you for the explanation. Since the WB05xN acts as a network coprocessor, it doesn't fit my current design goals as I want to avoid using an external Host MCU to keep the BOM cost and PCB footprint at a minimum.I am looking for a standalone (single-chip) STM32 wireless solution. My requirements are:Standalone Operation: The application and BLE stack must run on the same chip.Eddystone Support: It must be capable of broadcasting in Eddystone format.FOTA (Firmware Over-the-Air): The chip must support wireless firmware updates.Cost-Effective: This is a price-sensitive project, so I am looking for the most budget-friendly standalone option in the STM32WB family.Could you please suggest the most suitable part number for this use case? Would the STM32WB15 or the new STM32WB09 be the right direction for a low-cost, standalone beacon application?
Hello,My STM32H573I-DK board is bricked after a failed provisioning attempt.What happened:Accidentally changed PRODUCT_STATE from Open (0xED) to 0x17 (Provisioning) via programmerThen an AI coding assistant (Copilot) attempted some configuration via DFU mode and enabled TrustZoneI no longer have access to the PC where this was doneCurrent symptoms:SWD: "Unable to get core ID", "Cannot connect to access port 1"DA discovery (debugauth=2): "The target is unable to boot on RSS_DA or is in OPEN mode"DA regression (debugauth=1) with default STM32CubeFW_H5 keys: "Unable to detect DBGMCU Mailbox" or "unable to boot on RSS_DA"DFU (USB0): "Target device not found" (with boot jumper set to SYS/MEM)UART bootloader: timeoutWhat I tried:SWD with HOTPLUG, UR, HWrst, ap=0, freq=100DA regression with default key_3_leaf.pem and cert_leaf_chain.b64regression.bat from ROT_Provisioning\DADFU via User USB (CN17) with JP4 on USB-PD positionUART via ST-Link VCPSetup:Board: STM32H573I-DKSTM32CubeProgrammer: v2
Following the ST sample : STM32CubeH5\Projects\NUCLEO-H563ZII regenerated OEMiRoT_Config.obk with the STM32TrustedPackageCreator.then, rebuild the OEMiRot application and the applications OEMiROT_Appli_TrustZone_Secure & OEMiROT_Appli_TrustZone_NonSecureI ran the script : \ROT_Provisioning\OEMiROT\provisioning.batusing the 'PROVISIONED' choice.The script returns No error. But When I check the PRODUCT_STATE with STM32CubeProgrammer, the state came back to OPEN instead of PROVISIONED.But, I had to use the DA to connect to the device with the STM32CubeProgrammer. So, OBK files seems to be applied.I has already checked that the PROVISIONING state has been correct before the OBK provisioning sequence.So it's the action "set state PROVISIONED" that fails (or maybe an issue with the OBK files ???, but no way to check if they are OK).Someone has already meet this issue ? How to fix it ?
Post edited by a ST moderator to be inline with the community rules especially on the code sharing. In next time please use </> button to paste your code. Hi I am struggling getting context save restore working correctly, when operating the HASH hardware block using polling mode.Basicly the flow is like this: /* --- STEP 1: Start hashing first chunk --- */ HAL_HASHEx_SHA256_Start(&hhash, input1,strlen((char*)input1), digest,HAL_MAX_DELAY); /* --- STEP 2: Save context --- */ HAL_HASH_ContextSaving(&hhash, context); /* --- STEP 3: Restore context --- */ HAL_HASH_ContextRestoring(&hhash, context); /* --- STEP 4: Continue hashing --- */ HAL_HASHEx_SHA256_Accumulate(&hhash, input2, strlen((char*)input2)); /* --- STEP 5: Finalize hash --- */ status = HAL_HASHEx_SHA256_Finish(&hhash, digest, HAL_MAX_DELAY); However when calling HAL_HASH_ContextSaving the DINIS is not equal to 1 and CSRx registers return zeros as stated in the reference manualHow do it
I got an error when downloading the .sfi file to STM32H753II using the STM32Programmer_CLI, my HSM version is V2AE.The error message is as follows:What its mean?V2AE cannot support STM32H753,and must use HSM_V1?or H753 cannot support SFI ?I’m a new use about SFI.Looking forward to your reply.
Hi,I am using SBSFU v2.8 with an STM32H750. I have successfully booted my firmware without any protections. I have also enabled protections and succeeded all tests in the test suite provided in the example code in sfu_test.c.However, when I attempt to boot my firmware with any protections enabled at all, I get the following, followed by a reset.This is happening at the first control flow check at line 1092 in sfu_boot.c.In my research, I found this post. I replicated it and included app_sfu.h in sfu_boot.h. It works now.I would like some clarification on this whole situation. Is this a bug? or is my build system just not including app_sfu.h appropriately ?Thanks!
Hello, I am working with an STM32 B-U585I development kit. The board has been previously used, and some protection-related configurations have been modified. I am now trying to perform new tests on the device, but I believe I am unable to bypass the current protection settings. I would appreciate your assistance on this matter. A TFM application was previously installed on the board. When connecting via STM32CubeProgrammer, I observe the following: 1. Connection settings: I connect with the following configuration: Boot0 = 1 Port: SWD Mode: HotPlug Reset Mode: Hardware 2. STLinkUpgrade tool: When opened, the ST-LINK is identified as: Type: STM32Debug+VCP 3. STM32CubeProgrammer observations: RDP = 0xDC (Level 1, read protection of memories) TrustZone = 1 OEM1LOCK = 1 OEM2LOCK = 0 I do have the required password to unlock RDP, and I am able to successfully unlock the RDP protection. My development environment: STM32CubeIDE v1.19.0 To verify firmware download capability, I created
I have STEVAL-PTOOL4A connected to drive - 12V sensored BLDC motor - 2 pair poles - 16k rpm I faced 2 problems - First motor doesn't operate with potentiometer when used alone without the workbench- leds doesn't light(( THE SYSTEM POWERED BY 12VDC 10A))
Hello,We are using the STM32N6 series MCU in our project and encountering issues during debugging. I’ve attached a screenshot of the error message we are seeing.We followed the steps outlined in this guide:https://community.st.com/t5/stm32-mcus/how-to-debug-stm32n6-using-stm32cubeide/ta-p/800547However, the code cannot be debugged from external flash (in dev boot mode).But, when we boot from flash (flash boot) and the debugger is not connected, the code runs as expected.Also, debugging from RAM with FSB works, but debugging the App code from RAM fails and gives the same error.Based on the information in this page:https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Category:Security_with_STM32N6,could this issue be related to the STM32N6's debug security features?Best regards,Egemen Aksoy
Hello STM32 Community,I am currently developing a USB Type-C Active Cable application using an STM32 with the official USB-PD Middleware.My Goal: The MCU needs to behave as an EMarker/Active Cable. Therefore, it should:Ignore all SOP messages on the CC line (no response and no GoodCRC ).Only respond to SOP' and SOP'' messages.Able to monitor (Snoop) SOP messages exchanged between the Source and Sink to maintain state awareness.The Problem: In the current X-CUBE-USB-PD middleware and STM32CubeMX configuration, there is no explicit option to disable SOP handling while keeping SOP'/SOP'' active. Since GoodCRC is typically handled by the UCPD hardware autonomous logic to meet the strict tTransmitSOP timeout, the hardware automatically sends a GoodCRC when it detects a valid SOP message CRC, even if the firmware isn't intended to process it.Technical Details & Questions: I am looking for a way to bypass or disable the hardware-level auto-response for SOP only.Register Control: Is there
I have a STM32WB05TZF6TR. All VCCs are running off 1.8V. I'm trying to use PA8 and PB5 with 3.3V 10k pullups. But the signals are being clamped at 2.5V. I had expected this not to happen, as they are supposed to be 5V tolerant. Does anyone know what's happening here? There's nothing connected to the pins besides the pullups. I have a bare STM32CubeMX project, with just this GPIO init:void MX_GPIO_Init(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin : PB5 */ GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pin : PA8 */ GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } Much appreciated,David
In ds H5E5 is given: 3x 12b ADCbut on selector is shown:...so secret 3 x 16b ADC there - or error in table ?
I want to design according to the Figma design, but I have no clue.How can I make the menu follow the selection in the simulator? If I want the last menu to scroll down.
Hello,I am planning to use the TLV320AIC23B audio codec with the STM32H7B3LIH6Q controller.Kindly confirm:Is TLV320AIC23B compatible with STM32H7 (using SAI/I2S for audio and I2C for control)?Any specific requirements for clock (MCLK) or configuration to ensure proper operation?Thanks.
I am using the NUCLEO-WL33CC1 (for 868 MHz freq) and I tried the LPAWUR feature based on the Github examples that you provided:https://github.com/STMicroelectronics/STM32CubeWL3/tree/main/Projects/NUCLEO-WL33CC/Demonstrations/LPAWUR/LPAWUR_WakeupRadio_Rxhttps://github.com/STMicroelectronics/STM32CubeWL3/tree/main/Projects/NUCLEO-WL33CC/Demonstrations/MRSUBG/MRSUBG_WakeupRadio_Tx The issue is that the range that I get is a max of 3 meters, no more that this. I already soldered the C3 capacitor, that is by default missing, with a value of 100pF. The L3 is 5.6nH and L4 is 6.8nH based on the schematics (MB2029) of the NUCLEO witch matches the values that are in the User Manual of the Nucleo (UM3418). Questions:Is there anything that I am missing here in order to get a better range for the LPAWUR feature ?Should I be using a higher power Tx mode to get a better range, on the Github example the Tx power is set to 14 dbm ? If I change these value to 20 dbm and to PA_DRV_TX_TX_H
Hello everyone, i want to build a CAN FD network with three NUCLEO-C092RC boards. So far i can transmit frames, as i can see on an oscilloscope. But the moment i connect TWO boards, the interrupt is not triggered. My code should activate user LED2 if it receives a frame with one specific id: Board 1 (0x101) triggers LED when receiving message 0x344 or 0x234 Board 2 (0x234) triggers LED when receiving message 0x344 or 0x101 Board 3 (0x344) triggers LED when receiving message 0x101 or 0x234 i use a nom. baudrate of around 500 kbit/s and data baudrate of 1 Mbit/s with a clock of 40 MHz (HSE). The Boards are connected with two short (10cm) twisted jumper cables and the jumpers for the 120 Ohm resistor are also plugged in on both baords. when i test it in external loopback mode, it works (with ident. change) Could this just be a problem with my wires (reflexion , parasi. C ,etc.)? thanks a lot for the help
Hello,I am using X-CUBE-EEPROM as a mean to store variable in internal FLASH memory on STM32U5G9-DK2 board. Here is my function where a variable in flash:static FLASH_STATUS flash_slot_write_shared_key(const FLASH_INDEX *index, uint8_t slot, uint8_t *shared_key) { if (slot > FLASH_SLOTS_NUMBER) return FLASH_WRONG_PARAM; if (shared_key == NULL) return FLASH_NULL_PARAM; EE_Status ee_status = EE_WRITE_ERROR; HAL_FLASH_Unlock(); taskENTER_CRITICAL(); ee_status = EE_WriteVariable96bits((uint16_t)index->entries[slot].addr, (uint64_t *)(shared_key)); if (ee_status != EE_OK) return FLASH_ERROR; ee_status = EE_WriteVariable96bits((uint16_t)index->entries[slot].addr + 1, (uint64_t *)(shared_key + 12)); if (ee_status != EE_OK) return FLASH_ERROR; ee_status = EE_WriteVariable32bits((uint16_t)index->entries[slot].addr + 2, *(uint32_t *)(shared_key + 24)); if (ee_status != EE_OK) return FLASH__ERROR; ee_status = EE_WriteVariable32bits((uint16_t)index->entries[
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.