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 building a Thread SED product using the STM32W5MMG. Recently, after upgrading the firmware version to v1.24.0, I encountered a problem with low-power startup.Upon investigation, I discovered that the location of the “Init_Debug();” call within the MX_APPE_Init() method in app_entry.c was different.Previously (in v1.23.0), I had written the following code within the /* USER CODE BEGIN APPE_Init_1 */ block, and this worked correctly. HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer *//* USER CODE BEGIN APPE_Init_1 */#if (CFG_FULL_LOW_POWER != 1) Init_Debug();#endif UTIL_LPM_SetStopMode(1 << CFG_LPM_APP, UTIL_LPM_DISABLE); UTIL_LPM_SetOffMode(1 << CFG_LPM_APP, UTIL_LPM_DISABLE); Led_Init(); Button_Init();/* USER CODE END APPE_Init_1 */ However, with the transition to v1.24.0, the call location of Init_Debug(); was changed as follows. HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */ Init_Debug();
Hello everyone!I will try to be short here… even though I will probably fail on this task.Hardware: ST-Nucleo-STM32F446REI have a 96kHz loop, which happens inside a callback from TIM3. I also have 4 analog signals to be sampled. Originally, I have set these signals into ADC1 (CH6 and CH7) and ADC2 (CH15 and CH9). Due to the ~10.4us period of time I have inside my callback, considering 168MHz system clock and 21MHz ADC clock (System Clock /2 /4), I need to act quick. I have decided to use DMA for this application: DMA2 Stream 0 assigned to ADC1 and DMA Stream 2 assigned to ADC2. Then, inside the loop, I am simply assigning the buffer values to variables (or, if I need to squeeze a few more cycles, I can use them directly). However, I noticed the variables assigned to ADC2 would not be sampled correctly: the first channel would be sampled just once, at the startup, and the second never, while the two channels on ADC1 would behave well. In my code, var3 and var4, respectively. The most re
We are seeing a very odd data corruption issue which is highly repeatable, and appears to be related to a configuration setting which we haven't yet identified.In our system (running on an STM32H7S7), we're using the STiROT + OEMuROT secure bootloader to load our application. After a minute or two, the application causes a hard fault.The issue comes down to a POP instruction. I can see in the debugger that a value is being copied from the stack to a register, but one of the bits is flipped. Subsequent instructions do some indirection which ultimately causes the hard fault.It's always the same instruction in the same line of code. It always occurs within the first minute or two of execution.Using the debugger, we can see that the value in the stack (stored in DTCM) is correct. The error occurs when it's copied to the register. And although the error always occurs at the same address, it doesn't appear to be a fault with that location, as when I moved the stack to elsewhere in DTCM,
I’m trying to update thestm32WB55 - nucleo Version (MB1355C) SWD stm32wb5x_FUS_fw_for_fus_0_5_3.bin -- latest from STM32CubeWB-1.24.0But it keeps failing every-time i do it. StepsStart FUS check the wireless stack try and flash the first bin fileIt just doesn’t seem to want to work?Error: FUS_STATE_IMG_NOT_AUTHENTIC: It works on the USB sticks when i flash it this way. So i don’t know what it’s doing wrong? Or are these bin files only for the USB stick?
I was searching for a optimal cristal for my MCU and in the specs of HSE for my MCU (STM32F103) i found this highlighted in yellow Then in the guide shown below I saw and exampe but this doesnt match with the stated in the datasheet because of the following Here the CL1 and CL2 series equivalent is 5pF but the CL of the cristal is 8pF so I dont know if Im missing something or is that this condition is not always true, hope some one can help me to clarify this, thanks!!
Hi,I made a post a few weeks ago but I can’t find it now because I think this forum may have been updated.I have an STM32F779I-EVAL and I’ve managed to get LwIP_HTTP_Server_Raw compiled and running from this repo (STM32CubeF7/Projects/STM32F769I_EVAL/Applications/LwIP/LwIP_HTTP_Server_Raw).The display turns on, and within the debugger, there is no issue. It shows a DHCP timeout and then states its IP is 192.168.0.10, this is fine by me.With a normal ethernet cable connected to a network switch, or even using a crossover ethernet cable, I get nothing when I ping 192.168.0.10. Ethernet is set up correctly within Windows.Does anyone have a clue what’s going on here?I’ve tried basically every tutorial on the internet at this point to ping the device. The most hopeful looks like this one, but still nothing. I’ve also got a Nucleo-H755ZI-Q which doesn’t work with any example.I’m starting to think maybe it is my set up but I’ve tried across multiple computers, all using the correct settings (
Hello again.İ wrote a Python book, but I am new in STM32 boards. I am trying to learn.I bought a "STM32 Nucleo F7 56ZG(216 MHz)" boardand a "STM32 Nucleo H7 53ZI" this week.When I connected the USB socket at the ST-link side to the USB socket of my computer via an USB cable, there was no led light of the board. Both boards behaved like this.There were no led lights on them.What should I do?Should I connect both USB ports on a board to the computer at the same time?Thank you from now on.
Hello everyone,I apologize for posting a similar message again, but for some reason I can no longer access my previous post.I am currently studying how my Nucleo N657X0-Q board works, and for this purpose I am trying to create a TCP server project using a static IP address.However, despite what seems to be a correct configuration, my board does not respond to ARP requests. I checked this using Wireshark and the arping command on Linux, but the result is always TIMEOUT.The MAC address seems to be correctly configured, the LAN8742 driver also appears to start correctly, and all IP, TCP, UDP, ARP, and ICMP services return SUCCESS.In the meantime, I also used the .ioc file from the following link, as suggested to me, in order to compare it with my own project : webserver Despite my new modifications, the symptoms remain the same. I also tested the steps performed in the nx_stm32_eth_driver code, and I was able to see that Initialize, Enable, and Attach are being called.I added a printf out
I am trying to interface the EEPROM AT24C04C with STM32G4 series controllers. I have confusion in the function parametersHAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size)Can you please clarify on the MemAddSize parameter what has to be sent to for the above EEPROM?2nd Question: 1 page is 16 bytes, is it possible for me to write data above 16 bytes as well?
Hi everyone,I tried Secure Firmware Install (SFI) with the Nucleo-H563ZI. The process failed, however my device is still accessible. By connecting to the device via Hot plug and Access port 1 I am able to see that the device is in "Provisioning" state.The option bytes are as follows:{ "deviceId" : 1156, "bitNameToValue" : { "PRODUCT_STATE" : 23, "BOR_LEV" : 0, "BORH_EN" : 0, "IO_VDD_HSLV" : 0, "IO_VDDIO2_HSLV" : 0, "IWDG_STOP" : 1, "IWDG_STDBY" : 1, "BOOT_UBE" : 195, "SWAP_BANK" : 0, "IWDG_SW" : 1, "NRST_STOP" : 1, "NRST_STDBY" : 1, "TZEN" : 180, "SRAM2_ECC" : 1, "SRAM3_ECC" : 1, "BKPRAM_ECC" : 1, "SRAM2_RST" : 1, "SRAM1_3_RST" : 1, "NSBOOTADD" : 524288, "NSBOOT_LOCK" : 195, "SECBOOT_LOCK" : 0, "SECBOOTADD" : 0, "SECWM1_STRT" : 0, "SECWM1_END" : 127, "WRPSGn1" : -1, "SECWM2_STRT" : 0, "SECWM2_END" : 127, "WRPSGn2" : -1, "LOCKBL" : 0, "EDATA1_EN" : 0, "EDATA1_STRT" : 0, "EDATA2_EN" : 0, "EDATA2_STRT" : 0, "HDP1_STRT" : 1, "HDP1_END" : 0, "HDP2_
I am designing a PCB based on the STM32N657X0H3Q, using the STM32N6570-DK EVB as a reference.I would like to use an external Flash memory in my design. Since our firmware engineers are already working with the EVB, the preferred option would be to use the same Flash device as on the EVB (MX66UW1G45GXDI00). However, I am not sure about its availability and stock status. This is a 1-Gbit Octal SPI Flash.How can I determine which Flash memories are compatible with this MCU? For example, would the ISSI IS25WX256-JHLA3 be a suitable alternative?
I am using an STM32 Nucleo-F746ZG board and trying to establish a TCP/IP connection between the board and my laptop. The laptop is configured as the TCP server using Hercules tool, while the STM32 board acts as the TCP client. I have configured static IP addresses, and I am able to successfully ping the STM32 board from my laptop, which confirms basic network connectivity. However, when I start the TCP server on the laptop using Hercules, the STM32 client is unable to establish a connection to the server.I attach code and .ioc configuration for reference.
I have verified in my code that writing and reading with I2C works as expected, and registers are configured seemingly correctly. I believe there must be a problem with how I write the configuration file to the BMI270, but I am at a loss as to what error exists in my code.Here I present the initialization function and starting function for the BMI270:--------------------------------------------uint8_t BMI270_init(void) { uint8_t address; uint8_t init_addr0 = 0x5B; uint8_t init_addr1 = 0x5C; uint16_t init_val = 0; uint8_t value, val_lsb, val_msb; uint8_t buffer[2] = {0}; uint8_t err = 0; //disable PWR_CONF.adv_power_save (addr=0x7C,val=0x00) address = 0x7C; value = 0x00; //Read address before err = I2C_read(&address, buffer, 1); if (err != HAL_OK) {return err;} //Print result UART_print_char("test pwc 1: ", 12); UART_print(buffer, 2); UART_print_char("\r\n", 2); err = I2C_write(&address, &value, 1); if (err != HAL_OK) {return err;} HAL_Delay(1); //Read address afte
Several discussions on this topic have been lost in the forums transition, or not moved yet, I could not find them here. So I’ll post again to summarize.In recent changes of the Cube ETH drivers for several STM32 packages (H7, F7, maybe others as well) handling of ETH_MACFilterConfigTypeDef.BroadcastFilter seems to be corrected.The BroadcastFilter = ENABLE means that broadcast receive is blocked. This field should be left DISABLED.The hardware defaults are good for typical (UDP, TCP) apps. Especially, receive of broadcasts is enabled. In ethernetif.c of the ST LwIP examples, HAL_ETH_SetMACFilterConfig() is not called, because the default state is OK.The problem could occur with the old versions of HAL drivers, when the network software tampers with multicasts and other advanced filtering and calls HAL_ETH_GetMACFilterConfig - this one could return the BroadcastFilter bit inverted, so calling HAL_ETH_SetMACFilterConfig again with result of HAL_ETH_GetMACFilterConfig could block broadca
Reposting due to last topic vanishing during migration.I have an project running great on a STM32WB05 nucleo platform. I have built my own custom board and everything works great until it starts to advertise and then it reboots.. I have double checked everything on the board and it matches the reference design. I am using the internal SMPS and running on a bench supply currently at 3.3V limited at 300mALooked at a bunch of things but really cant understand the issue. If i stop it advertising (change nothing else) then it starts up perfectly and runs. Other symptoms/infoBoard is drawing 7mA which seems high for idle (no low power mode enabled yet). I had 4 boards made. One worked briefly on the PSU. I then used a coin cell and it starting failing on that. Now doesnt work on PSU.Any sensible ideas welcome especially from anyone who has seen this. In many years of BLE development, i havent
I would like to use the Stop3 low-power mode on an STM32U545RE (NUCLEO-U545RE-Q board) and to wake-up the device by the RTC. I have a working example for Stop2 mode for which I largely used the inspiration from the stm32u5 workshop. But when I replace the HAL_PWREx_EnterSTOP2Mode call(s) with HAL_PWREx_EnterSTOP3Mode, the device does not wake up from the stop mode anymore. At least the current consumption drops down to 3uA so I am confident that the Stop3 mode itself is working.The code parts of my main function which I believe are relevant look as follows:HAL_Init();SystemClock_Config();SystemPower_Config();MX_GPIO_Init();MX_ICACHE_Init();MX_RTC_Init();/* The SMPS regulator supplies the Vcore Power Domains */HAL_PWREx_ConfigSupply(PWR_SMPS_SUPPLY);/* Enable ultra low power mode */HAL_PWREx_EnableUltraLowPowerMode();/* Enable the Autonomous Mode for the RTC Stop0/1/2 */__HAL_RCC_RTCAPB_CLKAM_ENABLE();/* Set RTC wakeup timer for 2s */HAL_RTCEx_SetWakeUpTimer_IT(&hrtc,
Hi,I do have two STM32H563 devices connected together via UART. I would like to use one as a ‘programmer/flasher’ and the other as a ‘target’. On the ‘target’ MCU I would like to use an already in-built bootloader available over USART1. The only problem is the programming/flashing implementation on the ‘programming’ MCU. Is there any example code available somewhere that contains such an implementation? I can see that there is this code publicly available:https://github.com/STMicroelectronics/stm32-mw-openbl...but it only contains implementation of the bootloader protocol for the target device, not the programming/flashing one.I am trying to evaluate the effort needed to make such an implementation to happen. I would like to avoid writing my own bootloader with my own custom protocol (although at the moment this seems like an easier option to be honest).Kind regards
Iam triying to capture data using timer+hpdma cofiguration , but hpdma is not working, not copying data .. but the same configuration with gpdma is working fine.. how to configure hpdma any special configuration regarding RIF.. please give some brief explanation
I have a custom board with G491 and an LED driver (Kinetic KTD2037). MCU is the I2C master. Any attempt to read a register using HAL from the KTD2037 fails, ErrorCode = 0x2 (arb lost). Register writes are OK. I can read/write other devices on the same bus OK. The KTD2037 datasheet has this for an I2C register read:This doesn’t seem consistent with HAL_I2C_Mem_Read() or HAL_I2C_Master_Receive(). On a scope HAL_I2C_Mem_Read() results in S, 7-bit addr, write, ack, reg addr, ack, Sr, 7-bit addr, read, ack, 0xFF, nackI try setting the internal register pointer (it may not have one) using HAL_I2C_Master_Transmit(), which works OK. Then I follow it with HAL_I2C_Master_Receive() resulting in S, 7-bit addr, read, ack, 0xFF, nackIt looks like the master says arbitration lost because of unexpected nack from the KtTD037.The KTD2037 datasheet does not mention I2C repeat start.Any way to read this device without writing my own I2C driver?
This account only shares restored community content posted by members between May 22 and June 9, 2026, who did not register for the new community.This topic was created on June 8 2026 10:14 PM. @MariaWilliams posted:Hi everyone,I'm designing my first custom PCB around an STM32H7 microcontroller and would appreciate some advice before sending it for fabrication.The board will run at high clock speeds and includes:STM32H7 MCU External QSPI Flash Ethernet PHY TFT display interface Several ADC inputsI've already followed the reference schematic, but I'm unsure about the PCB layout side of things.What are the most common mistakes you have seen in STM32H7 PCB designs?In particular, I'd like to know:How critical is crystal placement and routing? Do all decoupling capacitors need to be on the same side as the MCU? Any recommendations for ground plane partitioning? Are there any Ethernet or QSPI routing pitfalls that beginners often overlook?I'd appreciate any tips, design guides, or examples
Hello,I am working on a custom FOC Inverter Board. I am trying to assign the pins for current sensing, but I keep getting warnings. I am using an STM32G431CBT6 MCU, and I completed all the other pin assignments without issue. Here is the Current Sensing information:"Three Shunt AmplifiedCurrents using External Op-Amps"CURRENT_AMPL_U -> Assigned to PB14 ADC1_IN5CURRENT_AMPL_V -> Assigned to PB12 ADC1_IN11CURRENT_AMPL_W -> Assigned to PB11 ADC12_IN14It looks OK in the board designer application with no warnings, but when I try to generate the project in Motor Control Workbench, it gives me the following errors: I cannot find any documentation on the list of warnings/errors. How do I correct this? Or can it be ignored?
The issue feels really simple, and it's easy to do on N6. At the core, I am running out of MPU regions as there are only 8 available. So it would be nice to have a small chunk of SRAM, where privileged code can share data with unprivileged code. Say a status or something like this.GTZC only controls both read and write. So I cannot say that a single 512 byte block is read/write for privileged code, but read only for unprivileged.
I need to connect a USB Type-C connector to the USB OTG interface of the STM32H7B3ZI microcontroller. Is this possible? If so, could you provide the connection diagram, explain which pins need to be connected, and share a reference schematic or wiring diagram for the implementation?
This is a sister thread to this one.Essentially, I can’t get a ping out of either Nucleo-H755ZI-Q or STM32F779I-EVAL, the other thread focuses on the Eval board.I’ve tried many examples but I’m focusing on this one. There are other threads about this example but I think they may have got lost in the migration.I’ve attached the project as it sits on my computer.The STM32 device’s IP address is 192.168.2.180.If I ping it on my PC, I get Request timed out.This is my network configuration.The Nucleo board is connected to a TP-Link Ethernet switch, which my PC is also connected to.Do you have any idea why this is not working?Thank you.
I have been working with the single core LoRaWAN_End_Node example application on a B-WL5M-SUBG1 board with good success. With STM32CubeMx v6.16.0, WL Firmware 1.4.0, I see a current draw of under 2uA between transmissions.Last week I upgraded STM32CubeMx to v6.17.0 which in turn upgraded the WL Firmware to 1.5.0, changed the end node example to use the LBM library rather than the LmHandler for managing the radio, and changed the example application name to LoRaWAN_End_Node_LBM. The application functionality is good but the power consumption jumped to around 80uA between transmissions.In both cases I configured pullups in the USART2 pins (PA2, PA3).I can alternate between these two versions of the application on the same board and the results are very consistent.Has anyone else seen this and does anyone have any suggestions?
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.