Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Greetings ST Community,I am a junior embedded developer, and I have recently worked on a project utilizing some old systems which run on the STM32L100R8T6TR chips. I had a need for an unique chip identifier for use in a communication protocol, and therefore I attempted to use the 96-bit UIDs in these chips. However, I now have two questions regarding these UIDs.First off, I used the firmware created for the platform I was developing on, and the UIDs fetched using the addresses specificed in this firmware access the address 0x1FF80050U as the UID_BASE address, and then +4U and +8U for the next sections of the 96-bit UID respectively. The values extracted using those value seem like the correct values, however I have now found two chips from a sample of 16 with the exact same UIDs unfortunately: 30h 35h 47h 04h 39h 39h 32h 39h 03h B7h FCh 48h I investigated this issue by consulting the documentation, which led me to my next question...Secondly, the documentation instructs me to
FUS and BLE update.I would like to know if it is possible to update FUS (1.2.0)(2.1.0) and BLE (1.23.0) via SWD. I need to update two boards simultaneously and am having problems with programming via DFU. One of the boards always shows an error. I usually program one board at a time, and before, I only updated BLE without updating FUS, and everything worked correctly via SWD. Now that I need to update FUS and BLE simultaneously, an error occurs. Is it possible to perform this update, or can I only do it via DFU (it works with one board, but with two, one of them always shows an error)? What is the best way to perform this update? I use the CLI with a script to write, I think it's faster. Edited by Moderator to comply with the community rules.Please use the English language as it is an international community, ensuring that all Community users can understand your post.
CASE 1:I am using sdmmc for SDIO bulk transfer at 400khz initially then switch to 25 mhz.Its not working with nucleo h743/53 where cpu frequency 480 mhz and sdmmc input clock is 480 mhz.Its working with nucleo h743/53 where cpu frequency 480 mhz and sdmmc input clock is 48 or 50 mhz.Its not working with nucleo h743/53 where cpu frequency 160mhz and sdmmc input clock is 160 mhz.Its is working fine with nucleo_u5 when CPU frequecy is 160mhz and SDMMC input clock is 160 mhz which gets converted to like:26.66 mhz.I have not checked upto which max sdmmc frequecy it is working fine with nucleo_h743/53.It seems to be working when sdmmc input clock is ~50 mhz with nucleoh743/53. Q1: Is there any recommendation with sdmmc input clock frequency with nucleoh743/53? CASE2: Along with CASE1, I also found that its not working at all with nucleo h743/53, if I give 3.3V External power to SD card(external power also uses voltage regulator) , but same works when giving 3.3V power from nu
I am implementing a CAN communication structure with one master and two slaves. Both slave devices perform exactly the same function, meaning their hardware and firmware are essentially identical. The master’s intention is to send commands only to a specific slave at a given time and receive data only from that targeted device. However, the issue I am facing is that any CAN frame transmitted by the master is being accepted by both slaves. Because both devices share the same ID filtering configuration, each slave interprets the incoming message as if it were intended for itself. As a result, the system behaves like a broadcast communication instead of the desired unicast structure, which leads to unintended and incorrect operation. Is there a solution
I developped my own PCB based on STM32L051K8U6 MCU and manufactured by JLCBCP. I'm using EasyEDA.At first I used a ST-LINK V2 ( probably a clone) to flash my card with CubeIDE and Cube Programmer but I got Error : Unable to get Core ID.So I bought a ST-LINK V3 MINIE and a breakout board and I get the error. 13:50:07 : UR connection mode is defined with the HWrst reset mode13:50:07 : ST-LINK SN : 001F002A414250182035345113:50:07 : ST-LINK FW : V3J16M813:50:07 : Board : STLINK-V3MINIE13:50:07 : Voltage : 3.30V13:50:07 : Error: Unable to get core IDI think, I read all knowledge database from STM website-I manage to use shorter dupont as possible to link breakout board to my board.-Each VDD and VDDA pin has 100 nf découpling capacitors ( and 1 uF capacitor in parallele )-There is a steady 3.3V on each VDD pin - a perfect continuity beetween SW pins (SWDIO and SWCLK) from MCU side and SW pins from ST-LINK V3 MINIE side.- NRST pin is pulled up at 3.3V and linked t
Hi,We have STM32N6570-DK and are testing camera input, video encode and write to SD cardWe have not been able to make the "VENC_SDCard_Appli" example work, the SD card just contains zeros.The "VENC_SDCard_ThreadX" example does work however, resulting in an 800x480 video.Are there any examples on encoding at 1080p resolution? Changing the encoder parameters and level results in memory allocation failures in EncAsicMemAlloc_V2.Many thanks
Hi,we are experiencing an issue with the STM32G0B0 when RDP level 1 is enabled, following the steps below:Flash the device using J-LinkStart the device and let the application set RDP = 1Enter the STM32 ROM bootloader (via UART)Disable RDP protection (perform mass erase)Program new firmware with bootloaderReboot the device and set RDP = 1 againAfter this sequence, the device remains locked.Even if we apply multiple resets using the NRST pin, the device does not recover.The only way to unlock the device is to completely power-cycle it (turn the power off and on again).Is it possible to re-enable RDP protection and start the new firmware without removing power from the device?Thank you for your support.
Hello,I'm integrating the custom TouchGFX application with the SPI display on the custom hardware.Used MCU is the STM32WB55 display is based on the SSD1357, connected with the SPI.The application seem to hang during rendering of the first frame after the first vsync is called.This is the traceback:touchgfx::LCD16bpp::TextureMapper_L8_RGB565_Opaque_NearestNeighbor_GA::drawTextureMapScanLineSubdivisions() at 0x803702e touchgfx::LCD16bppSerialFlash::drawGlyph() at 0x8043fb0 touchgfx::LCD::drawStringInternal() at 0x8032bec touchgfx::LCD::drawStringLTR() at 0x8033018 touchgfx::LCD::drawString() at Texts.cpp:54 0x8030008 touchgfx::TextArea::draw() at TextArea.cpp:55 0x802431a touchgfx::Screen::JSMOC() at 0x80352e8 touchgfx::Screen::JSMOC() at 0x8035292 touchgfx::Screen::JSMOC() at 0x8035292 touchgfx::Screen::JSMOC() at 0x8035292 touchgfx::Screen::startSMOC() at 0x803533e touchgfx::Screen::draw() at 0x803536c touchgfx::Application::draw() at 0x803369c touchgfx::Application::drawCachedAreas()
I'm currently working on an STM32WB project and would appreciate guidance on the correct sequence to enter STOP2 low-power mode and wake up via an EXTI interrupt, ensuring all peripherals resume normal operation post-wake-up.Specifically, I’m looking for:The recommended steps to enter STOP2 mode, including any pre-conditions or configurations.The proper configuration for EXTI-based wake-up (I’m using a GPIO line for this).Best practices to ensure that all necessary peripherals (UART, SPI, ADC, USB, etc.) are correctly restored after wake-up.Any important considerations related to Core 2 (BLE stack), clock sources, or peripheral clocks that should be handled manually before or after STOP2.I’ve reviewed the reference manual and some ST examples, but a consolidated, recommended sequence or reference to an app note/code example that handles these aspects cleanly would be very helpful.Thank you in advance for your support!Refrence code:int main(void) { /* USER CODE BEGIN 1 */ /* USER CO
Dear allI am relatively new to STM32, using STM32H563 as an SPI slave to receive data and send some feedback data as same time, The SPI master is a Tiva MCU form Ti, as data is relatively long, I need to use DMA, I tried to find an example for it, but there is none with DMA, could some one please provide some starting point for me? Thanks in advance.Ping
In the STM32L4P5xx datasheet, some pins' IO structure is labelled with _l (in combination with other letters). However, this letter is not explained in Table 14 nor anywhere else.Can this please be explained?Thanks,JW
Hi you all,as a breef summary; I set up a timer to trigger an adc that should than use the DMA to transfer the data to memory, i need 111 samples at a time. Sadly for some reason this only works for one sample so if i check __HAL_DMA_GET_COUNTER(g_hadc1->DMA_Handle) it will get stuck at 110.and subsequently my HAL_ADC_RegisterCallback(g_hadc1, HAL_ADC_CONVERSION_COMPLETE_CB_ID, ADC_LineScanComplete_Callback); is never called.Though the timer and ADC for sure triggeres as i can the see the DR register updating its value.And as far as the reference manual goes (Page 961 DMA One-shot) it should be possible to use HAL_ADC_Start_DMA(g_hadc1, (uint32_t*)dest, 111); to get like 111 sequential timer triggered samples, that are transfered to memory via DMA I tried various combinations of all possible adc settings, and all of them keep beeing stuck on 110 remaining DMA cycles. As well as trying to look up the resgisters for any errors that might have been accured, but
MCU: STM32H7S7L8H6HIssue: Choppy scroll animations after regenerating TouchGFX/target/generated in CubeMX files with TouchGFX 4.26 (previously 4.24.1 or 4.25)SymptomsScroll wheel with custom containers (toggle buttons + text) now shows low FPS when swiping. The same widget was way smoother before regeneration. I have a device with old generated files still running smoothly, confirming the regression is in the regenerated target code (check video, the smoother one is the bottom one).Unfortunately, I haven't git the TouchGFX/target/generated because I thought it was being generated by TouchGFX Designer and not CubeMX, so I have no idea what code it was running before. Sure thing is, the scroll wheel logic in the GUI folder is the same for both things.I was already using TouchGFX Designer updated to 4.26 when everything was smooth so, I think the file generated by it are ok.What ChangedRegenerated via CubeMX, replacing:nema_hal.cOSWrappers.cSTM32DM
I am currently using the X‑NUCLEO‑IHM16M1 expansion board and noticed a discrepancy between the Motor Control Workbench and the official ST documentation regarding the rated current.In Motor Control Workbench, the Rated Current is shown as 2.1 A.On the official product page and data brief, it states Output current up to 1.5 A rmshttps://www.st.com/en/evaluation-tools/p-nucleo-ihm03.html Could you please clarify the following:What is the basis for the 2.1 A figure shown in Motor Control Workbench (e.g., RMS, peak, or internal limit)?Which current rating should be considered as the actual board limit for design purposes?Does the difference relate to the STSPIN830 driver’s internal specifications or to a configuration setting in the tool?Thank you very much for your support.Best regards,HyeonSeok
I have managed to create a template application on a NUCLEO-H755 that has several CM7 FreeRTOS tasks running to flash various LED patterns combined with a CM4 application that flashes one of the other LEDs. I have mainly been testing using a run configuration (with LEDs to verify behavior), but sometimes a debug configuration, and when working, the program behaves well and runs overnight. Flashing and starting the code has always been somewhat questionable (likely due to my inexperience with STM32CodeIDE (V 1.19)), but recently I am no longer able to successfully Run or Debug at all.The current behavior is as follows:1) The first time I try to Debug (or Run), I get a "Failed to execute MI Command" with the error indicating failure to finish loading the flash for the CM7.elf.2) The second time I try the same Debug or Run command, I get a "Failed to Start the GDB server", and I am not able to communicate with the ST-Link on the NUCLEO at all.3) The only way that I have been a
Dear @YutinhLin , Post Edited by ST moderator to apply source code formatting and translate from Chinese to English to comply with the community rule: Best regards, Gyessine 晶片型號 : STM32H723VGTx RX 與 TX Buffer 都已配置到 D2 區塊 使用狀況 : 第一次執行 HAL_UART_Transmit_DMA 正常 執行 HAL_UART_AbortReceive() -> HAL_UARTEx_ReceiveToIdle_DMA() 後 再執行 HAL_UART_Transmit_DMA 無法正常工作 請問這樣的使用方式是否正確 或是需要另外的設定動作才能再正常使用 Chip model: STM32H723VGTx Both the RX and TX buffers are allocated in the D2 domain. Usage scenario: The first execution of HAL_UART_Transmit_DMA operates correctly. After executing HAL_UART_AbortReceive() followed by HAL_UARTEx_ReceiveToIdle_DMA(), subsequent execution of HAL_UART_Transmit_DMA does not function as expected.
This https://blog.st.com/stm32wl5x-stm32wl5m/ seems to suggest that the wireless module could be either 900 or 800 MHz bands."Hence, coupled with the wide frequency range supported by its STM32WL5x, the module can work in Europe, Americas, and Asia."Does this mean that my product can be built with identical hardware for two different markets and the software could select the proper region? Does it need a special antenna to operate over a wider range? Or is it just that this module has different variants for different markets?
I’m attempting to learn BLE and IoT and have purchased the following boards to get started.NUCLEO-F401RE MCU brdX-NUCLEO-IDB05A2 BLE Expansion brdDownloaded:STM32CubeIDE Version: 2.0.0 Build: 26820_20251114_1348 (UTC)STM32CubeMX Version: 6.16.1x-cube-ble1 BLE DemoThe main program calls HAL-Init() which goes directly to the HardFault_Handler()My preliminary conclusion is that Version 20.0.0 is not compatible with the demo program based on help I sought on ChatGPT. It recommends Version 1.19.0. Is this correct?May need to back up and start from scratch and would appreciate a point in the right direction to avoid going down any unnecessary rabbit holes.Thank you, BareMetaler
Hi ST team,I am using STM32U5G9 MCU. After modifying option bytes, HAL_FLASH_OB_Launch() would be called to apply the changes.But in the launch function, it states that "Option byte launch generates Option byte reset". I have other tasks need to be done after calling HAL_FLASH_OB_Launch(). I don't want device to be reset after calling HAL_FLASH_OB_Launch() immedately.Is there a way to trigger reset manually after modifying option bytes?1. Modify option bytes2. Call HAL_FLASH_OB_Launch()3. Reset device manually Thank you.
Hi, I run ADC1 with DMA on my STM32F303RE with 72MHz clock. I take the number of samples flowing into the circular buffer per timeunit. I calculate a sample freq. of 1.305 Megasamples per second Ms/s. When I look at the sampled known signal I calculate a sample frequency of 1.518Ms/s. I'm losing samples somewhere !? Where? Is it due to ADC or DMA? ADC setup: Independent mode,Synchronous clock mode divided by 4, 12Bit, scan disable, continuous enable, enable regular conversions enable, DMA setup: ADC1 DMA1 CHANNEL1, circular buffer 15*1024*uint16_t, increment address memory, half word THX Cheers Detlef
Hi!I’m working on a motor controller design that utilizes an stm32f4 and a magnetic angular position sensor which communicates via spi.My design currently performs current sensing; I use channel4 of timer1 to trigger ADC reads near the center of my center-aligned UVW PWM period.This works great so far, but now I’m trying to think through how/when to schedule SPI reads of my angular sensor. I can straightforwardly perform an spi read when the ADC conversion completes, as part of my inner torque control loop. Is this reasonable to do? Is there a better way? It seems like the best time to touch off such a read is at the same time as when I trigger my ADCs. But I can’t quite figure out how I might do this.Thanks!
Hello,I'm wondering if Cube's generated code for is thread safe. In particular, whether malloc can be safely used in a multi-threaded FreeRTOS setup.The broken malloc behavior was first described by Dave Nadler in 2019 here. He has also written about it on his webpage.In 2021, ST seems to have introduced some "fixes" to this problem, by adding a thread-safe code generation option in CubeMX and implementing the various __retarget_lock* newlib functions to make sure that newlib can behave correctly in a multi-threaded environment.However, it seems like that these implementations are buggy. One such issue is reported here, where the lock's nesting level is (incorrectly) modified before entering the critical section. I've just reproduced this exact issue today, with Cube version 6.11.1.I'm quite confused about the current state of this issue. Are the things described by Dave Nadler still relevant or applicable? Is ST going to fix the bugs in the __retarget_lock* implementations? For people
Hi,I am new on TouchGFX and UI making, i have make many screens with transition in between i want to add a qr Code,But when I just add a default qrcode no edit, but it dont show any thing, on that screen but when i change screen to different one and come back again the previous screen content print on qr code area.First screen:Qr screen: in the qr area the previous screen pixel shownQr next screen: when we go to next screen and again come back it again shows same issue. or if we set the qr screen as startup it shows black completely in the qr region. Kindly tell which issue causing this, as i does following troubleshoot from my sie;1- use the invalidate in constructor, setup screen of view, and with screen coding in view file.2- try to look every possible options like change qr versions, scale, ECC. mostly every option3- try https://www.qrcode.com/en/about/version.html qr version table combitions to correctly check4- change screens and try on different projects.screen 1:
Hi, I am using the NUCLEO-WL55JC1 board and referring to the PWR_STOP2_RTC example to measure current consumption. I have isolated the ST-LINK section and am powering the board with an external 3.6 V supply for accurate measurement. However, in sleep (STOP2) mode, the measured current consumption is about 1.64 mA, which seems higher than expected. Please let me know if this is normal for this configuration or if any additional steps are required to further reduce the current consumption.
I'm using STM32N6 with stm32-mw-camera to communicate to CAM-66GY sensor. I also have CAM-16GZ sensor, but looks like this sensor is not supported (because of VD6G_BAYER_NONE when I use vd6g driver). What are my options to integrate CAM-16GZ into the same project?Thank you
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.