Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
I am currently designing an NFC reader PCB based on the ST25R3916B. Could you kindly share the recommended PCB stack-up configuration and the routing guidelines for the NFC antenna? I have also attached images of the PCB layer stack-up that I am currently using. Could you please review them and confirm whether it is appropriate?
Hi,In STM32MP25x Reference manual(RM0457), the HSEM_(S)Cnxxx registers all have the description of global access attribute except HSEM_CnIER, as shown of HSEM_CnICR,22.5.4 HSEM non-secure interrupt clear register (HSEM_CnICR)Address offset: 0x104 + 0x010 * (n - 1), (n = 1 to 3)Reset value: 0x0000 0000Register global access: When CID filtering for processor[n] is enabled inHSEM_CnCIDCFGR, this register can be accessed only by the processor CID. An illegalCID access to this register generates a CID illegal access event. When CID filtering forprocessor[n] is disabled this register can be accessed by any bus master.the HSEM_SCnIER also have the description of global access attribute, and the bits of HSEM_CnIER register also have CID filtering access attribute, and all bits maybe could be used by one CID , So if HSEM_CnIER also have the global access attribute?
Good morning everyone! I have a fast question related with STPMIC1. I want to use it in a design with a STM32MP135 but I don't clearly see how to do it, specially the DDR rail, because I understand that i have to program it. But, in a 20-30 units production, How can I flash it? Is there a special tool to flash it by i2c? Or i should to make other solution in PCB?Thank you so much!PD: I need STPMIC1D (used in DK EVAL Board)
I have a problem with the RTC initialization on the STM32WB05TZF6TR (BGA package). When the board is powered on, the MX_RTC_Init() function calls HAL_RTC_Init(), which returns with HAL_ERROR status.I traced the problem to the stm32wb0x_hal_rtc.c file, inside RTC_EnterInitMode(). It attempts to set the INIT bit, and then waits until the INITF bit changes state to confirm that Initialization Mode has been entered.However, the INITF bit never changes state, so the while loop times out. On my custom board, I have confirmed that this error always occurs when power is applied to the board, but if I manually reset the MCU while power is already applied (by shorting RESET to GND momentarily), then the initialization will complete successfully.To eliminate anything specific to my board, I generated a very simple test project (attached), which uses the default clock configuration with internal oscillators only, for both High Speed and Low Speed clocks. The ONLY configurati
I created a sample project using the STM32N657-DK, but when I try to debug using ST-LINK, each project does not work and results in a HardFault or similar error.I also tried loading them simultaneously from the debug configuration, but it was not successful.How can I properly debug both AppliSecure and AppliNonSecure? Also, is this the correct way to create a sample using the TrustZone feature of the STM32N6570-DK?I would appreciate your guidance.I am using STM32CubeIDE version 1.19.0.For the sample project I created, I made "FSBL", "AppliNonSecure", and "AppliSecure".
We need the secure boot and secure firmware update solution for both the execution models to meet the EU-CRA standard:• Execute in place support (XiP support) - direct execute from external QSPI flash• BootROM support - copy from QSPI flash to SDRAM, and execute from SDRAM https://www.st.com/resource/en/application_note/an5188-external-memory-code-execution-on-stm32f7x0-value-line-stm32h750-value-line-stm32h7b0-value-line-and-stm32h730-value-line-mcus-stmicroelectronics.pdf
Following the tutorial here, at step 8, I get to the part where you load firmware onto the dev kit, but I always get an error "No ST-Link detected". As far as I am aware, programming should be done over the USB cable, or UART, not ST-Link?The board is running Linux OK, UART terminal is working, so is IP over USB cable. The run configuration I have is show below. What am I doing wrong?I checked with STM32CubeProgrammer and there are no programming interfaces available over USB or UART, and no ST-Link..
Since there is no caregory to post for the MCU Finder tool I'm posting here. On Windows, the stand-alone app, as well as the Android app, do not show any content when filtering by the H5 range in the series field. Could this please be fixed? It's been like this for multiple months now. Thanks.
Hello ST Support,I reproduced an ETH TX DMA issue on STM32N6570-DK where the DMA never consumes the TX descriptor.Environment- Board: STM32N6570-DK- Security: TrustZone enabled, Secure-only platform configuration- PHY: ID1=0x001C, ID2=0xC916, link-up confirmed- Interface: RGMII, 1G linkObserved behavior- HAL_ETH_Transmit*() submit succeeds (st=0)- TX descriptor OWN bit remains 1 (never cleared by DMA)- TX complete callback/counter never increments- DMA enters/keeps TBU state- Key symptom: DMACCATXBR remains 0 (buffer base is never loaded)Representative logs- [eth][post-start] dlar=0x3402C1E0 dtpr=0x3402C1E0 rlr=0x00000003 txcr=0x00200001 dmacc=0x00080218 txqomr=0x0007000A- [tx][path] st=0 own=0->1 catxdr=0x3402C1E0->0x3402C1E0 catxbr=0x00000000->0x00000000 csr=0x00000000->0x00000004- [tx][stall] own=1 ... catxdr=0x3402C1E0 catxbr=0x00000000 csr=0x00000004 ... dmad=0x00006400 tps0=0x00006000 axr=0axw=0What we already tried (same result in all cases)1. EDSE on/off (txcr=0x102
Hello — please help with the following questions about parameters:How should I correctly configure the TCXO frequency parameter $PSTMGETPAR,1245 (TCXO Frequency)?How should I correctly configure the CPU clock speed parameter $PSTMGETPAR,1130 (CPU clock speed)?To improve PPS accuracy, is it correct that the CPU clock speed should be set equal to the PPS Clock?What are the maximum supported values for the PPS Clock and for the CPU clock?
Hello, I am beginner with STM32.I have some radiosonde boards with an STM32L051R6T6. I use STM32CUBE IDE V2.0.0When I start a project, select the appropriate MCU, there is no Core directory and no ".IOC" file.So, it is impossible to access to the GPIOs.I've tried some ways to do that and allways unseccessfull. Please, have you an idea ? NoticeI use also an STM32F103C8T6 board. I've create my own GPIO lib, my own I2C lib, and I can compile, flash, debug and run my program. Thank you and sorry for my english Retired
Hello,I'm using the STM32N657 on a new project, and its not clear how users are supposed to setup GPIOs that are used in different domains (FSBL, Application, ExtMemLoader). For example I am using pin PN12 as a LED output and defined it in FSBL. Why doesn't this definition carry over to the other domains, and how can I get CubeMX to carry it over to the other domains? thanksMatthew
Following the instruction from https://github.com/STMicroelectronics/meta-st-stm32mp/blob/thud/recipes-kernel/linux/linux-stm32mp/README.HOW_TO.txt* Configure on a build directory (different of kernel source code directory) Here for example, build directory is located at the same level of kernel source code $> cd <directory to kernel source code> $> mkdir -p ../build$> make ARCH=arm O="$PWD/../build" multi_v7_defconfig fragment*.configThen got the following messagemake[1]: Entering directory '/home/tim/stm32mp1-openstlinux-4.19-thud-mp1-19-10-09/sources/arm-openstlinux_weston-linux-gnueabi/linux-stm32mp-4.19-r0/build' GEN ./Makefile## configuration written to .config# GEN ./Makefile/home/tim/stm32mp1-openstlinux-4.19-thud-mp1-19-10-09/sources/arm-openstlinux_weston-linux-gnueabi/linux-stm32mp-4.19-r0/linux-4.19.49/scripts/kconfig/Makefile:109: *** N
I'm planning to use ImGui as framework for creating a GUI application on the MP257 processor.The ImGui is bloat-free e.g it only uses the GPU hardware (OpenGL, Vulkan, etc...) to visulize the graphics such as buttons, menu, labels etc.Will an application like this work smoothly in MP257?
I have a project where if I right click on the project in the project explorer, the IDE just hangs. I've tried opening the project in a different workspace, so it's not (I think) a workspace issue. Other workspaces/projects are just fine. Anyone experienced this? Know of a way to fix it? v1.16 on Mageia Linux, using KDE, not using Wayland. Thanks.
Hello,I'm developing an application with OEMiRoT and trustzone for STM32H563.I'm getting a write protection error (WRPERR) when I try to erase a secure flash sector from secure code that is not protected neither by write protection or HDP. I'm using the method HAL_FLASHEx_Erase() and I mapped the region as readable and writable with the memory management tool of CubeMX.If I try to do the same process without the secure boot provisioning, everything works as expected. I would like to know if there are any additional operation in order to write/erase flash at runtime when secure boot is used.Any help is really appreciated!Thank you,Giulio
This is a followup on this post https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/compilation-error-macro-quot-bind-quot-requires-3-arguments-when/td-p/881690 . mƎALLEm provided very comprehensive answer for the issue. I was unable to post a reply hence this post. I've followed the solution to the letter using the guage touchgfx example. I got a blank white screen and this is the debug window: and here is main.c: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics. * All r
I am looking for information that compares the security in an STM32U5 or similar with the PUF-based solutions used in competitor's processors. The problem is that "PUF" has a simple explanation that sounds good and a head-to-head analysis of the advantage of these other processors against what ST provides seems to be lacking in the market place. Obviously, ST could have selected a PUF-based security and decided not to do so, so the clues might exist in why that decision was reached. Note: The primary focus is to find processors that prevent software pirates from extracting the firmware. Any help that addresses this will no doubt be repaid in future design wins.
I would like to refer you to the following post from @JRuss.4 that was never satisfactorily answered:STM32L4 Standby Mode GPIO State {Schmitt Trigger} Clarification from Reference Manual I also have the exact same question. Here is my version of the question boiled down to a couple of sentences:The STM32l4 series reference manual, RM0394 (Rev 5 - the latest available), on page 158, states, "In the Standby mode, the IO’s are by default in floating state. If the APC bit of PWR_CR3 register has been set, theI/Os can be configured either with a pull-up (refer to PWR_PUCRx registers (x=A,B,C,D,E,F,G,H)), or with a pull-down (refer to PWR_PDCRx registers (x=A,B,C,D,E,F,G,H)), or can be kept in analog state if none of the PWR_PUCRx or PWR_PDCRx register has been set."This is confusing. The statement "In the Standby mode, the IO’s are by default in floating state" contradicts the statement, "or can be kept in analog state if none of the PWR_PUCRx or PWR_PDCRx r
After several days of wasted time trying to understand what was causing this issue, I finally realized that if I use the add_library() command in a CMake file, the build analyzer tool, without any reasonable explanation, searches for the *.map file with the wrong name. Specifically, if my VSCodeSTM32 project is located in the my_folder directory, then the build analyzer tool looks for the file my_folder/build/Debug/my_folder.map instead of my_folder/build/Debug/project_name.map.I ran into this problem because our project is generated by STM32CubeMX, which uses the add_library() command several times in the cmake/stm32cubemx/CMakeLists.txt file.This is the piece of code that is causing this issue in my main CMakeLists.txt (look in the attached project)################################################################################################################ if(true) # <-- Use false to fix this BUG set(STM32_Drivers_Src ${CMAKE_CURRENT_SOURCE_DIR}/temp.c ) add_library(s
Hello everyone,I’m working on a project with Secure Manager on STM32H573IIK3Q using the STM32H573-DK board. I have followed the official tutorial from ST to make my application compatible with Secure Manager:https://wiki.st.com/stm32mcu/wiki/Security:How_to_make_your_application_compatible_with_Secure_ManagerSo far the system works fine — I can blink LEDs and run a basic non-secure application without issues.However, as soon as I integrate FreeRTOS and switch the HAL timebase source from SysTick to TIM7, the program immediately stops and goes into the BusFault_Handler() after TIM7 interrupt. Steps to reproduce:1) Follow the Secure Manager tutorial and set up SM provisioning2) Confirm basic GPIO/LED blinking works3) Add FreeRTOS middleware (no other changes)4) In Clock Configuration → SYS, change Timebase Source to TIM75) Build and flash — program immediately hits BusFault_Handler() Environment / versionsSTM32CubeMX: 6.17.0STM32Cube FW_H5: V1.6.0STM32CubeIDE: 2.1.0 Thank
I'm still working my way around the DMA learning curve. Having found the IOC approach to DMA configuration too confusing, I'm configuring the structs and calling the HAL_DMA_Init(...) method myself.Something I haven't been able to find clearly described is the "TransferAllocatedPort" field of the DMA_InitTypeDef struct. I understand that it's there to specify source/destination port0/port1, but I don't understand the significance of that selection.One blog post I found seems to say that having two ports allows the DMA peripheral to assemble or disassemble transfers when source and destination have differing alignments. Okay, I understand that explanation, but is that a correct explanation?If my source and destination have the same alignment, can (or should) I assign the same port to both? Is there any advantage or disadvantage? Since a "channel" is devoted to a particular path and direction, I wouldn't think the unused port would be useful for anything els
I'm working on a device that requires requires 12 audio output channels and 10 input channels. I wish to do this over 16-slot TDM. Now, I'm concerned about whether this can be done with 32 bits per sample. The reference manual states in section 54.4.6 Frame synchronization "The audio frame length can be configured to up to 256 bit clock cycles". 256/16=16. Does this mean I can only do 16-bit audio with 16-slot TDM? Or did I misread.
I've STM32G474 using the HRTIMER to control a boost converter, each channel has it's own converter. This all works nicely with the deadtime, no issues. When I come to do a pulse skip, (set CMP3 to 0) the deadtime is still being inserted in the the Tx2 output even though Tx1 output is not being pulsed! Is this normal or have I missed something? I've tried a few things to not make the deadtime happen, like disabling the set and reset sources... the only thing that fixes the problem is to also set the falling deadtime to 0 and then subsequently resetting it back to the required value. Tx2 has no set or reset sources configured.
Hi,I would like to know where I can find the SPI controller version of the STM32G491.AN5543 lists features depending on the SPI controller version and says "To identify the version and the available feature set refer to the product reference manual and datasheet". However, I was not able to find this info in the RM or datasheet of the STM32G491 or anywhere else.
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.