Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi,When the start command is issued on the STEVAL SPIN3202, while in FOC mode, the board immediately falls into overcurrent protection mode. The voltage on the current sense resistor is captured in the attached oscilloscope image. The board is configured as follows: Header JP8: Pin 2-3 closed, FOC mode. Header J11 closed, Header J12 open.When overcurrent protection is turned off in the MotorControl Workbench, there is no PWM output.The motor is driven in sensorless mode, 30V DC, 10A max. When start is pressed, a short audible "click" can be heard from the motor, until overcurrent protection kicks in.I can provide more details when requested.Thanks, MaPi
Hello,An ST employee wrote this article: https://community.st.com/t5/stm32-mcus/how-to-use-the-stm32n6-in-overdrive-mode/ta-p/810926where you can increase the voltage to the STM32 core to get higher performance. I have 3 questions regarding this article.1- it says you need to use PF4 to kick the processor in overdrive. Does PF4 need to be used (ie special function) or can any GPIO be used? (ie is PF4 just used on the STM32N657-DK board)?2- Since ST published this article, are there any benchmarks or data (ie bus speeds) that were recorded when the core voltage was increased from 0.8V to 0.89V. It would be nice to know if we should implement this mod, or its really not worth it. What about reliability over time?3- I purchased the STM32N657-DK development board. Is the source code available for the demo on the board, and if so, where can I download it. It says by default the DK is not in overdrive mode, so I would like to modify the code to enable
Hi all, apologies if I have missed the answer to this question in previous posts. I understand that according to the datasheet, the maximum input voltage of FT_xx (and even TT) pins is 3.9V even when VDD, VDDA, VDDRF, and VDDSMPS = 0V. From my understanding, this is possible because of the logic level shifters that have been implemented in the design of the chip. These logic level shifters are powered by the VCORE domain according to the datasheet. Based on the datasheet, if the microcontroller chip is put into SHUTDOWN mode, the VCORE domain is powered off. Does this mean that the maximum input voltage on the FT_xx pins become 0V? Thank you for clarifying this!
In this Getting Started Tutorial video we are going to dive into generating an audio I2S stream. We will be creating dual SINE waves (Left/Right) at 96 kHz sample rate. #STM32 #Tutorial #GettingStarted #STM32CubeIDE #STM32CubeMX #I2S #DMA #STM32Worldhttps://youtu.be/vOAf3xxGq_o
Hi all, apologies if I am missing where this has been explained. It seems a relatively common question, but I have not found a definitive answer.A legalistic reading of the datasheet says that there is no difference whether the pin is configured as digital I/O or analog input; FT_a still allows 5V (assuming the usual case of min(supplies) = 3.3V).On the other hand, various commenters here and elsewhere (but not ST employees) have insisted that when a pin is configured as analog input, the 5V tolerance no longer applies; i.e. no difference between TT_a and FT_a as far as input voltage tolerance is concerned. See e.g. this thread:https://community.st.com/t5/stm32-mcus-products/maximum-allowed-voltage-on-stm32h755xih3-adc-pin/td-p/669693The problem is that this assertion seems to have no support in the actual datasheet. Or if it does, I haven't been able to find it. (I would appreciate someone quoting me "chapter and verse" in that case!)Would someone please clear
Greetings,I am very new to ST MCU development, but not new to embedded development. I've developed professionally on Microchip, Qorvo,,and Renesys for the last 20 years. I am working on bringing up the kit in title. I was successful in generating compiled code for the ElectronicSpeedControl_ESC-G4 project in ST Motor Workbench 6.4. I am working with the latest tools from your website. I did use the stand alone Motor Profiler tool (v5.4) to run a profile on a drone motor successfully, but I quickly realized that it generated XML files for profiles. I figured out that the new version of MP was embedded in WB and produced JSON files. So I proceeded down that path. I could connect the kit to the newest version of MP, but it said I need a "Profiler" version of FW on my kit. I had downloaded the compiled non-Profiler version. This is where it went off the rails. When created a brand new project with the kit and a 24V motor selected from the default group of motors and I check
Hi all,I'm using an STM32U5G7VJT6Q on a custom design PCB. From the application, I jump to the USART (UART1) system bootloader. I then try to connect to the bootloader via STM32CubeProgrammerCLI. The jump to the bootloader appears to be correct and the bootloader is starting ( connect and properly read chipID) . Unfortunately, communication with the bootloader shows some errors. Especially with some Flash locations like 0xBFA07A0. RDP is set to AA ( Level 0 - no protection )TZEN is not set -------------------------------------------------------------------STM32CubeProgrammer v2.20.0 -------------------------------------------------------------------Serial Port COM3 is successfully opened.Port configuration: parity = even, baudrate = 115200, data-bit = 8, stop-bit = 1.0, flow-control = offNo Init bits value is : 0Sending init command: #byte 0x7F sent successfully to targetWait ends after 1 loop, dataready = 1, delay = 2#ack Received response from target: 0x1fActivating de
Hi guys, im making system wchis is sampling data from 2 microphone channels.I need to make it pass at least 8 kHz/8 bit/2ch data which i already did. The problem is that i'd like to increase the audio quality of transmitted data, and it's easy on the DFSDM and microphone site BUT:The maximum internet speed that i archieved is: 182,4 kb/s and i know from datasheet that it can be up to 72,2 Mb/s ("IEEE 802.11n D7.0 -OFDM-72.2 Mbps -single stream w/20 MHz, Short GI").So lets get to my code:I'm using configuration files included in STM example:es_wifi_io.c (there is config of SPI3 (it is working with 10MHz speed and supports up to 20MHz - which must be set if we want to use the max speed of the internet);es_wifi.cwifi.cThese files limit the pocket size of IP frame to 1200 bytes and dont support the fragmentation if we send for example 2400 bytes array.To simulate and test the bandwidth i assumed it will be best:1. to reduce timeout of wifi:#define WIFI_WRITE_TIMEOUT 100 #define WIFI_R
Hello,I have the MKSBOX1V1 and I programmed it with the OTA firmware. I launch the android app ST BLE Sensor but when I xant to dowload an application it is sending forever as shown on the picture. What am I doing wrong?Thanks
Dear,For a given HDPL, how many 256-bit AHKs (Application Hardware Keys) can be stored in the option byte keys?And how many of those are:only usable by SAES?usable by software?The reference manual states the following:5.2 FLASH main features:"Up to 1 Kbyte of protected non-volatile option byte keys, readable either by software orusable as a secret AES key through SAES peripheral (as AHK keys)"It is unclear whether this is for just one HDPL, or whether this is a grand total comprising all three HDPLs that support option byte key storage (HDPL0, HDPL1, HDPL2).Suppose it is for just one HDPL, then this would be able to store 32 (= 1 K byte * (8 bit / byte) / 256 bit) 256-bit AHKs. This seems to be a reasonable assumption since if it were for all three HDPLs, this number would have to be divisible by 3, which it is not (32/3 = ~10.667).5.9.18 FLASH option byte key control register (FLASH_OBKCR):"OBKSIZE[1:0]: Option byte key sizeApplication must use this bitfield to specify
Hello ST Community, I’m working with the NUCLEO-H533RE. The MCU is feature-rich (three PLLs, robust comms, and onboard USB wired to a USB-C connector) and I’m running the system clock at 250 MHz. I’ve migrated the project to ThreadX (since the old USB stack isn’t provided for this part with FreeRTOS), and the USB stack is the USBX integration. ThreadX alone comes up clean, but as soon as I enable USBX the application stalls—my threads stop cycling and the system appears to hang. I’m likely missing a configuration detail in the USBX/ThreadX bring-up. If someone with deep experience on STM32H5 + ThreadX/USBX could point me to the typical culprits (initialization order, memory pools/stack sizes, NVIC priorities/interrupt routing, cache/MPU settings, or any H5-specific gotchas), I’d really appreciate it. Happy to share configuration snippets, clock tree, and MX-generated code if that helps. Thanks in advance,Val
Hello, I'm trying to transfer a 4000 uint16_t buffer from SRAM4 to DTCM. This is working with a basic configuration of the MDMA module : - Buf size = 32 - Block len = 4000 - No burst mode - in/out size = half word. The MDMA needs 135µs to transfer the whole buffer, and it looks quite slow. I'm questioning about the different way to improve the tranfer, using burst mode and/or packed mode. When implementing the burst mode, I have a strange behavior of the MDMA initialization. hmdma_mdma_channel0_sw_0.Instance = MDMA_Channel0; hmdma_mdma_channel0_sw_0.Init.Request = MDMA_REQUEST_SW; hmdma_mdma_channel0_sw_0.Init.TransferTriggerMode = MDMA_BLOCK_TRANSFER; hmdma_mdma_channel0_sw_0.Init.Priority = MDMA_PRIORITY_VERY_HIGH; hmdma_mdma_channel0_sw_0.Init.Endianness = MDMA_LITTLE_ENDIANNESS_PRESERVE; hmdma_mdma_channel0_sw_0.Init.SourceInc = MDMA_SRC_INC_HALFWORD; hmdma_mdma_channel0_sw_0.Init.DestinationInc = MDMA_DEST_INC_HALFWORD; hmdma_mdma_channel0_sw_0.Init.Sour
I have a custom board with an STM32U535RET6. This chip receives data from another processor using UART4 on pins PA0 and PA1. Once the data is received, it should be sent to another chip using USART3 on pins PC4 and PC5.If I transmit a fixed string directly, it works correctly. However, if I try to transmit the data received from UART4 (which is a message of about 70 bytes ending with "X"), it does not work.Additionally, HAL_UART_RxCpltCallback seems to freeze. I added a log inside the callback and I can see it print, but after a few executions, it stops running and no more bytes are received.I hope someone can help me, I can send more files if needed
Does the STM32N657 run AzRtos / threadx / filex / etc? The libraries don't seem to be available in the latest IDE. Is this coming soon?
Hi,I have a project derived from the demo6 from ST on the STM32U5G9J-DK1 devkit, where I want to display SVG images. The only difference is that the rounded display of the original kit has been substituted with another rounded display of the same resolution (480x480 pixels) but smaller. The PCB of the display is then different as well as the display driver chip which is driven through MIPI-DSI commands (and not using video mode of MIPI-DSI like the original demo is). I'm using latest version of TGFX 4.25.0.All the subdemos of this demo6 project are working the same as on the original display, but not the SVG subdemo. All the .SVG images of this specific sub demo, which should animate and start bouncing on the screen, are simply not rendered at all. I only see the background image which is a .PNG file. And I can come back on the main screen as the touch display is working.I tried to strip down this demo6 project and display a simple background .PNG image and on top of this last, some .S
I'm trying to set up the Utility Sequencer to run an acquisition task followed by an signal processing task, see code snippets below.When I look at the serial monitor, I see the start acquisition task message but then it hangs waiting for EVENT0So even though I've set EVENT0 in Custom_APP_Init() it looks to me that the event is not in fact set.What am I missing here?Edit, I commented out the SetTask line as I realized I hadn't finished setting up before the sequencer sets off but now no tasks get set, so I dont get the start acquisition task message any more.#define EVENT0 1<<0 #define EVENT1 1<<1 void Custom_APP_Init(void) { /* USER CODE BEGIN CUSTOM_APP_Init */ UTIL_SEQ_RegTask(1<<CFG_TASK_SENSOR_UPDATE_ID, UTIL_SEQ_RFU, sensor_update); UTIL_SEQ_RegTask(2<<CFG_TASK_FFT_ID, UTIL_SEQ_RFU, do_fft); UTIL_SEQ_SetEvt(EVENT0); // UTIL_SEQ_SetTask(1<<CFG_TASK_SENSOR_UPDATE_ID, 0); /* USER CODE END CUSTOM_APP_Ini
Lots of people dunk on my beloved C-preprocessor, but I find it to be my go-to hammer in my codebase. https://github.com/PhucXDoan/phucxdoan.github.io/wiki/Macros-for-Reading-and-Writing-to-Memory%E2%80%90Mapped-Registers Let me know of any mistakes that there may be in the article.
I'm trying to build a simple HTTP server using Mongoose with the LWIP IP stack on FreeRTOS CMSIS_V1. It is important that I let LWIP handle the network interface since I'm also using it to advertise a service using mDNS. This is what my task looks like:void StartMongooseTask(void const * argument) { /* init code for LWIP */ MX_LWIP_Init(); /* init code for USB_DEVICE */ MX_USB_DEVICE_Init(); while (netif_default == NULL || !netif_is_up(netif_default) || !ip4_addr_isany_val(*netif_ip4_addr(netif_default)) ) { osDelay(100); } extern struct dhcp_state_enum_t; struct dhcp *dhcp_client = netif_dhcp_data(netif_default); while (dhcp_client == NULL || dhcp_client->state != 10) { osDelay(100); } ip = *netif_ip4_addr(netif_default); printf("IP acquired: %u.%u.%u.%u", ip4_addr1(&ip), ip4_addr2(&ip), ip4_addr3(&ip), ip4_addr4(&ip)); mdns_resp_init(); mdns_resp_add_netif(netif_default, "22223335", 3600); mdns_resp_add_service(netif_defa
Hardware Design Observations for STM32N6570-DK and STM32H747I-DISCO BoardsWhile working with the STM32N6570-DK and STM32H747I-DISCO boards, I noted a few aspects of their hardware design that could be improved for usability.1. Shared I²C Bus Between Codec and TouchscreenThe shared I²C bus used by the audio codec and the touchscreen looks elegant from an architectural standpoint, but in practice it creates some challenges.1a. Access to the codec can take a relatively long time, while the touchscreen is accessed internally by the TouchGFX library.Although mutex protection can be implemented in the BSP to manage concurrent access, this does not fully resolve the issue — touchscreen responsiveness can still be affected.1b. On the dual-core STM32H7 board, if one core manages the codec and the other handles the display, additional synchronization is required to ensure safe concurrent access. This can be achieved, but only with extra development effort.Proposal:Connect the codec and display t
Good day. I am working on a 32-pin STM32U083KCU6. This requires the use of LSE 32.768kHz crystal. I referred to AN2867 as the oscillator design guideline.The LSE has the following specs:Shunt capacitance - 1.15pF,ESR - 70k,Load capacitance - 7pF.Calculated crystal gm is less than the STM32 Gmcrit so I think this crystal is ok to use.My concern is the determination of Rext value as the measurement of the current through the crystal is not an easy measurement. To set baseline in the Rext value, I used the evaluation board NUCLEO-U083RC as reference since it uses a similar STM32U083RCT6. Looking at the evaluation board schematics, I see that the Rext R34 and R35 are both set to 0R. The LSE used in the evaluation board is NX2012SA-32.768KHZ-EXS00A-MU00527 which has a max level drive of 0.5uW. May I ask to what drive level is the MCU set to drive the crystal in the evaluation board? What is the power level the MCU drives the crystal considering the max level of drive of the LSE is 0.5uW? Ap
I'm currently encountering an issue with the P-NUCLEO-IHM001 motor. I'm using STM32Cube version 6.10 and X-CUBE-MCSDK version 5.4.8. During file generation, the problem shown in the image has arisen. How should I resolve this? *This post has been translated from Chinese to comply with the ST Community guidelines.
The project is running on FreeRTOS in the CMSIS_V2 mode.I need to have a BLE custom template to configure my own services and characterisctics.In the case with the FreeRTOS running, I can just enable the BLE SIG Heartrate. The other BLE Applications are not present. But, if I disable the RTOS, then all the BLE applications are available.Is there any way to enable both RTOS and the BLE Custom template?Thanks in advance.MCU used: STM32WB55Dev board: P-Nucleo WB55
1. How does the STM32H562RI MCU burn firmware into the internal flash of the MCU? What Settings need to be made for hardware or software? Can it also be burned to an external flash? How is it operated?2. Can the STM32H562RI MCU be boot from an external flash? How was it achieved?
Hi all,I am using an STM32H563 (device ID 0x484).When attempting to update the MCU firmware using stm32flash 0.7, I am encountering the following error.=============stm32flash 0.7http://stm32flash.sourceforge.net/Interface serial_posix: Baud Rate : 115200, Data Bit : 8, Parity : E, Stop Bit : 1GET returns unknown commands (0x50)Unknown/unsupported device (Device ID: 0x484) I would like to know what the 0x50 command is and what content should be added to devices[] for the STM32H.The following is what I found through a search, but I don't know if it's accurate.=============const stm32_dev_t devices[] = {/* ID "name" SRAM-address-range FLASH-address-range PPS PSize Option-byte-addr-range System-mem-addr-range Flags *//* H5 *//* {0x474, "STM32H503xx" , 0x20004000, 0x20008000, x , x , x, x, , x , x , 0x0BF87000, 0x0BF90000, x}, *//* {0x484, "STM32H563xx/573xx , 0x20000000, 0x200A0000, x , x , x, x, , x , x , 0x0BF97000, 0x0BFA0000, x}, *//* {0x478, "STM32H523xx/33xxx , 0x20004000, 0x20
Hello everyone,I'm facing a weird issue about Flash programming on a STM32g0b1 microcontroller on IAR Workbench for ARM. ContextI'm working on a bootloader project. I am able to lock, unlock, erase and program flash at the beginning of my program. Following a state machine, this is working well. IssueWhen it comes to save a new bunch of data for the second time (I always program by block of 256 bytes so 32 double-words which is required by the library), it triggers a HardFault exception Remark 1If I go step by step in debug mode, I can program double-word by double-word without any exception. But if I run the program without going step by step (going over the function or without triggering any breakpoint), I automatically trigger the exception. And when the exception is triggered, no double-word has been written to flash so it is cancelled from the beginning Remark 2What is weird is that I'm able to fully erase flash (without touching the program of course) an
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.