Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi ST Community,I’m working with STM32WBA (STM32WPAN / BlueNRG-style stack APIs). I’m using Extended Advertising on the peripheral (connectable + scannable, secondary PHY = Coded) and a STM32WBA central that scans and then calls aci_gap_create_connection().ProblemConnection is intermittent: sometimes it connects, but often the peripheral prints multiple times:HCI_DISCONNECTION_COMPLETE_EVT_CODE - Connection Handle: 0x01 - Reason: 0x3E (repeats 4–5 times)The central does retries very often, so the peripheral sees repeated disconnect events before it finally connects.Setup detailsPeripheral (Extended Advertising)Advertising set configured as connectable + scannable:u16Property = HCI_ADV_EVENT_PROP_CONNECTABLE | HCI_ADV_EVENT_PROP_SCANNABLE;Primary PHY = 1M, Secondary PHY = Coded (0x03):aci_gap_adv_set_configuration(..., primaryPHY=0x00, secondaryPHY=0x03, ...)Address type used in advertising set:u8AddressType = GAP_STATIC_RANDOM_ADDR;Advertising channels 37/38/39 enabledTX power se
Hello ST team,I am using Nucleo H753zi board, and I wanted to use X-CUBE-MEMSMIC1 expansion for sound source localization.I have already designed simple PCB to use MEMs microphone and connect it to H7 board's ADC. I want to understand how I can program my board to use 4 mics- GCC-PHAT algorithm to get location of sound source. I have gone through UM2212 and UM1901. Due to lack of experience in this field, can you guide me through how I can use this X-CUBE-MEMSMIC1 expansion for sound source localization? I found this diagram helpful and would like to understand how should I code to feed data from cache to Acoustic SL for processing.
According to Datasheet, I2C of STM32F413VGT can be increased to 1 MHz, is it possible?
Hi ST team,I am trying to develop a secure bootloader and firmware update solution for STM32H735 MCU. I was looking at ST's implementations, SBSFU legacy and SBSFU by MCUboot. Could you give me some guidance, which would be the better choice to start from and port to my chip? I saw that SBSFU by MCUboot is targeted only to STM32H7S, and not STM32H7, so I assume if I want to go with MCUBoot, most of the code built on top of MCUBoot by ST is not going to be usable for me, is that correct?I need these features for the bootloader:immutable bootloader implementationapplication authentication (using signature verification)secure application updateanti-rollback protectionA/B update scheme to provide a fallback optionPreferably support for TCP communication for image download (or allowing easy integration for it)Thank you for your help.
안녕하세요. 저는 개인 개발자 입니다. 이번에 steval ctm051 보드를 구입해서 srm 을 공부하려는 데 소스코드를 제공할 수 있다고 해서 어떻게하면 소스코드를 제공 받을 수 있는지 알려 주시면 감사하겠습니다. Please note that the forum is English-speaking, which is why I have machine-translated your question into English: Hello. I am an individual developer. I recently purchased the steval-ctm051 board and would like to study SRM. I was told that the source code can be provided, so I would appreciate it if you could let me know how I can obtain the source code.
Hello, I'm looking for some advice on how to progress, beginning from a fairly novice position, with a secure bootloader. I'm beginning a project where at least a secure update process (where the existing application does the update) is desired. Ideally I'd have an encrypted and signed application updates being delivered to my target application and put that away in flash, then reset the MCU and have a bootloader validate / process the update. I've found Zephyr and had a small play with the MCUBoot -- its seem pretty cool, though I also found that some combinations of options created interesting build failures that were confusing. I've just stumbled across the SBSFU project - which appears to utilise some of MCUBoot, but I'm having a slow time making sense of it, with its half a dozens projects and plethora of source files. If there is not a STM project that can be configured and directly used on the U575 -- I'm hoping there is at least an overview / walk
Hello everyone, I am new to STM32 and recently purchased the STM32 NUCLEO‑F446RE development board to start learning microcontrollers. While studying the clock configuration, I saw the option to use HSE (High Speed External oscillator). Since I am a beginner, I searched about it and found suggestions saying that I may need to add an external crystal and capacitors and solder them onto the Nucleo board. However, I am not sure whether this is actually required for this board. I also read that the Nucleo board might provide an 8 MHz clock from the onboard ST-LINK via MCO, which can be used as the HSE source. So I would like to clarify: Do I need to add an external crystal oscillator to use HSE on this board? If yes, what crystal frequency and capacitor values are recommended? Can anyone suggest reliable components or purchase links for the required oscillator? I would appreciate any guidance. Thank you!
When I calling NVIC_SystemReset() in the os task, the system will enter into hard fault handler error, so I have to call NVIC_SystemReset() again in the HardFault_Handler() to reset the system, so what is the proper way to call NVIC_SystemReset() in the os task?
The STRD/LDRD instructions store and load a 64-bit value. Internally, they are broken up into 2x 32-bit accesses.Since the element size is a word and not a double-word, they are not atomic in the same way that a uint32_t is atomic. Questions are:Is this instruction interruptible between the first and second 32-bit accesses?If the instruction does get interrupted, does it restart or resume? If it restarts, it will re-write the first word, for a total of 3x 32-bit accesses. If it resumes, it will only write the last word.The ARM reference manual has this to say on the subject:https://developer.arm.com/documentation/ddi0403/latestTo me, it seems they are restarted based on this text, but the two "might" words here leave ambiguity. But let's not rely on manuals or what people say on the internet. What actually happens in the hardware?
We are using the NUCLEO-H753ZI family of boards with the specific MCU being STM32H753ZIT6. We were following this tutorial: https://community.st.com/t5/stm32-mcus/how-to-create-a-project-for-stm32h7-with-ethernet-and-lwip-stack/ta-p/49308/page/2/show-comments/true The difference between the hardware used in the tutorial and the hardware we use is that instead MII, which is what is used in the tutorial, we are using RMII Even though we were following the tutorial to the dot, our implementation is still not working. We have reverted back from the lasted implementation of STM32CubeIDE to STM32CubeIDE 1.9.0 as mentioned in the tutorial as well. CURRENT DIAGNOSIS: We have confirmed with a digital oscilloscope that when we are pinging the STM32H753ZIT6, the CRS_DV Pin, which is pin 11, is not going high at all. We have observed, using the oscilloscope, that in our PHY (LAN8742A) on pin 8 that we are able to receive packets and that it is unable to transmit packets using TX pins. T
I am wishing to write two floating point values to flash memory at time. I understand it is best to write 64 bits at a time, hence my writing two floats at once. This question is about using a union to structure the data. This code won't compile for the STM32L412KB. Could someone please show me where I am going wrong? error on line 17. Thanks.struct dual { float v1; float v2; }; struct dual two_readings = {1.23, 4.56}; union gemini { struct dual left; uint64_t right; }; union gemini value; value.right=0;
Hello everyone,I’m working with the STM32N6570-DK and trying to bring up a TouchGFX project by following the official STM tutorial:https://www.youtube.com/watch?v=NFljjd_vQGAI generated the project with TouchGFX Designer and programmed the board using STM32CubeProgrammer exactly as shown in this one:FSBL flashed at address: 0x7000 0000Application flashed at address: 0x7010 0000The flashing process completes without any errors.However, when the board boots, the GUI is completely corrupted. The display only shows colored noise/static like in the video I attached.It seems like framebuffer data, LTDC configuration, cache handling, or memory mapping might be wrong… but everything was generated by TouchGFX. Any guidance would be greatly appreciated.Thank you!
Hi everyone,i am using the stm32g0b1cet6 controller. in which I am working with flash memory. I am using the FLASH_WaitForLastOperation function. In that function, one flash SR register's CFGBSY bit is not reset, and due to that all other flash write and erase processes it not working. this issue is coming randomly. before calling FLASH_WaitForLastOperation function I am clearing error flags as shown below __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PROGERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGAERR); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_SIZERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_MISERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_FASTERR);__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_RDERR); can someone please provide some input ASAP.
I am able to receive UDP unicast packets on the Nucleo-h563ZI using the netconn API, however I cannot receive broadcast UDP packets (global or subnet). I have attached my lwiopts.h for reference along with the relevant discovery service code below. Note that netif->flags has NETIF_FLAG_BROADCAST set in addition to NETIF_FLAG_ETHARP. I was unable to find any broadcast related settings in the IOC file for the ETH peripheral nor related HAL_ETH_xyz calls. I did try enabling broadcast in the MACFilter, but this had no effect.#define NET_TASK_DISCO_PORT (5555) #define NET_TASK_DISCO_REQUEST "SCPI_DISCOVERY" #define NET_TASK_DISCO_RESPONSE "SCPI_DEVICE" #define NET_TASK_DISCO_RESP_LENGTH (64) // // @brief Discovery application // @return none // static void disco(void *pArgument) { char response[NET_TASK_DISCO_RESP_LENGTH]; uint16_t length; void *pBuffer; void *pSend; struct netbuf *prBuffer; struct netbuf *prSend; trNet *prNet = (trNet*)pArgument; // V
I have successfully tested the board that is based on STM32H750B-DK Architecture using Touchgfx based code demo for STM32H750B-DK but now I have created a fresh stm32cubemx project with same files and settings and same ld as of the demo board but the Code is getting stucked at the static int32_t MT48LC4M32B2_Delay(uint32_t Delay){ uint32_t tickstart;tickstart = HAL_GetTick();while((HAL_GetTick() - tickstart) < Delay){}return MT48LC4M32B2_OK;}What could be the problem?
This is the pinout for the STM32F469I-DISCO and OV2640, I have been able to find pins for most of them but am having trouble:DCMI Pinout: (Pin function : Actual pin name)DCMI_D0 : PC6DCMI_D1: PC7DCMI_D2: PG10DCMI_D3: PG11DCMI_D4: MissingDCMI_D5: PD3DCMI_D6: Conflict with PB8DCMI_D7: Conflict with PB9DCMI_VSYNC: PG9DCMI_HSYNC: PA4DCMI_PIXCLK: PA6RCC_MCO_1: PA8 (Note: we can use this pin to generate the XCLK signal needed by the OV2640SIOC: PB8SIOD: PB9I would appreciate it if anyone has a solution for this, thanks
I can use a motor profiler with a custom board, but can I use a motor pilot with the same software? Is it possible to use a motor pilot with a custom board?
I hope to achieve the scrolling effect like the file browser of Windows. I attached a demo video.
Hi all,I am implementing a protocol over I2C that requires the STM32 part to act as peripheral and respond to host data reads. I get two types of read transactions: random access, where the controller sends the peripheral address with the WRITE bit set, then a memory address to begin reading, then another start and the peripheral address with the READ bit set. And sequential reads, where the controller doesn't specify an address, it just starts reading. To handle this I need to maintain a "next read address" internally. Here's a diagram of the sequential read:I am using HAL APIs successfully and driving this from FreeRTOS. I'm testing it with an Aardvark debugger standing in for the controller and an Analog Discovery 2 watching the bus and decoding it. My task turns on listen mode. I get the expected calls to HAL_I2C_AddrCallback(). I can successfully distinguish the two types of transactions, get the memory address with HAL_I2C_Slave_Seq_Receive_IT() with FIRST_FRAME, and se
Hello,I have ordered a X-NUCLEO-PLC01A1 for my Nucleo Board F767Zi.I should receive it soon but I would like to understand it as much as possible.This is why I try to find some example projects but I cannot find any.In addition, I have tried to download X-CUBE-PLC1 extension from this link https://www.st.com/en/embedded-software/x-cube-plc1.html but it seems that the extension is not available anymore. Please could you help me to get started with this X-NUCLEO-PLC01A1.Thank you
STM32F072RBT6 ADC Channels IN0–IN13 Always Read 4095, IN14–IN15 Work NormallyI have 5 boards based on STM32F072 Peripherals connected SPI1(ATM90e36 Running at 3.3V and 3.3V spi pullups using 10k), i2c1(ADS1115 running at 5v and 5V pullups using 10k), Uart1,Uart2,Uart3 (all in async mode) , 9 internal ADC channels and other pins as GPIO attaching the snapshot of my config.ISSUE : PC0,PC1,PC2,PC3,PA0,PA1,PA4 pins always reads 4095 and PC4 and PC5 reads 170-180 counts PC0-PA4 channels is connected to pressure sensor in this way Signal ── 4.7kΩ ── PC0 (ADC input) ── 10kΩ ── GND signal expected is 0-4.5VPC4, PC5 are Pulled down using 4.7k (Series resistor for NTC).directly reading VREFINT channel gives 4095 but it should be around 2000 Hardware sanity checks:GPIO toggle toggles the respective pinGPIO Read give the actual digital readingusing EXTI it triggers the isr.physically measure all pin voltages they are at 0 Observation : Out of 5 boards 4
Hello everyone,I've been working on getting Ethernet working on the STM32H750B-DK discovery board with TouchGFX and LwIP. After extensive debugging, I suspect a hardware issue and would appreciate your advice on confirming this.What Works ✓TouchGFX display runs perfectlyUSART3 debug output works (Tera Term shows messages)PHY communication works (we get "Link established!")The Problem ✗The Ethernet MAC peripheral itself appears completely dead. We've tried:1. Direct MDIO Access WorksSuccessfully read PHY registersPHY responds and reports link upThis proves MDIO/MDC pins are working2. ETH Peripheral Shows No Life ETH DMACSR after reset: 0x00000000 ETH DMACSR after system reset: 0x00000000Reading ETH->DMACSR always returns 0This register should never be 0 on a live peripheral3. What We've TriedSoftware attempts:Enabled all ETH clocks (__HAL_RCC_ETH1MAC_CLK_ENABLE() etc.)Forced and released peripheral resetTried system-level reset via RCC (RCC_AHB1RSTR_ETH1MACRST)De-init and re-ini
Hi,I'm working on a piece of code using UART, where I need to send a byte of information right after the negative edge of that line is detected. Basically, my dev kit is connected to a 1-wire device through a simple 2 N-FET transistor for the TX side and directly to RX. Additionally, I have another GPIO connected to the 1-wire interface to detect, via interrupt, when the 1-wire device pulls the line down (start bit). The 1-wire device releases the bus right after the start bit.The problem that I'm facing is that the timing at which the byte is sent by the MCU is very inconsistent, with a delay that is not tolerable by the application. I've tried several things with no improvements: - Send UART command using non-blocking mechanisms (interrupt and DMA) - Making the GPIO interrupt the one with the highest priority - Disable interrupts before sending UART command and enabling afterwards i.e.: __disable_irq() a
Hello,I am working on a UVC (USB Video Class) project using a Nucleo-H755ZI-Q board and Azure RTOS USBX.I have successfully tested the ux_device_video (FS) example on the board. Now, I am trying to migrate this example to High Speed (HS) using an external USB3300 ULPI PHY.[Current Status]Hardware: Nucleo-H755ZI-Q + USB3300 (ULPI interface).Software Stack: X-CUBE-AZRTOS-H7 (USBX).Enumeration: The device is correctly recognized as a "Camera" in the Windows Device Manager without any yellow exclamation marks.Issue: When I open the Windows "Camera" app, it fails with the following error code:0xA00F4243 <CameraReservedByAnotherApp>(0xC00D3704)[Modifications Made]Modified the USB configuration to use High Speed with external PHY (ULPI).Updated the USBX descriptors (Device Descriptor, Configuration Descriptor) to support HS, including the Device Qualifier Descriptor.Ensured the ULPI pins are correctly configured in the HAL initialization.[Observations]The FS version works perfectly. The
Hello everyone, this is my first time using an ST microcontroller. Specifically, I am using the MB1389E (NUCLEO-WL55JC1) development board. It has been a bit confusing because most of the tutorials have an old version of STM32CubeIDE where everything was there, but now it seems that many tools must be downloaded separately, such as STM32CubeMX. After solving that, I've managed to get it to perform the most basic functions, such as turning LEDs on and off. However, due to project requirements, I now have to take a big leap and make a connection through the Sigfox network. To do this, I've tried using the Sigfox_AT_Slave example from the STM32CubeWL package, which indicates that by entering “AT” in the terminal will print the ID and PAC of the card to register it in Sigfox, but I have not been successful in that part since even when the code loads without errors, it does not show me anything in the terminal, which in this case I use PuTTY, and I have configured the frequencies of 9600 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.