Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello,STM32F411CE microcontroller.What is FCLK Cortex clock for the STM32F411CE microcontroller (see Figure 1 below from the STM32CubeMX (Clock Configuration tab))? Is this clock related to processor clocking? As far as I know, the processor is clocked from the AHB bus. Figure 1:
Good Morning, I want to use a GPIO input or a ADC input as a logical reader which gives 0 or 1 if it reads 0 or 12 Volts. However, I know the maximal rating is normally 3.6 volts for those pins. However, i saw that the Adc can still read 5 volts, it willl only be stuck at its maximal value (which is not a problem for me). So here is my quesiton: Can i read 12 volts with the GPIO or the ADC without hurting my board?Best regards
Hi, I am using STM32L476RG-Nucleo64 boards for one of my ultrasound projects. Basically, the process is:1)Send 2MHz pulses with pwm2) Sample 1000points with 8-bit interleaved ADC(500 each) and DMA3) Send ADC data through SPI.4) Wait TIM3 to trigger again for both ADC and PWM and back to 1Everything is working fine, only problem is that I need the time label of each sample -Or somehow calculate the Δt between them- in ADC so that I can identify the Δt of some peaks positions in the data but it is troubling me because of maxed ADC speedI made ADC interleaved, 8-bit and 2.5 cycles to work at max speed, not like a timer-triggered ADC. Therefore I cannot measure the total 1000 sampling time for dividing by 1000 (Not sure if all samplings are done with same speed tho).I tried to measure the time using DMA callback and ADC callback using DWT but it is saying that the time is around 35ms and I know it is wrong because I can confirm with an oscilloscope that the data window I am sampling w
I have an application in which I'm required to check the status of an accelerometer 5000 times per second but it's a battery powered device so I want to minimize power consumption. I'm using an STM32L053C8 on a custom board with an external LSE crystal but I think that this would be a problem with any STM32.I've tried setting up LPTIM clocked from the LSE source to generate interrupts and then putting the MCU into stop mode. The problem is that you can only generate frequencies which are an integer fraction of the LSE frequency so 32768/6 = 5461 Hz which is too fast for my application. 32768/7 = 4681 Hz is too slow.Using the RTC clocked by the LSE is even more restrictive. The best that I can see would be an integer fraction of 16384 Hz.The regular timers TIM2, TIM6 etc don't work in stop mode.Am I missing something ?
Hello,A design I am working on utilizes a LSE crystal with the following parameters:f = 32.768kHzCL = 12.5pFCo = 0.9pFESR = 50kR MaxDL = 1uW MAXI am calculating gmcrit ~ 1.52uA/V. According to table 5 in AN2867, the drive level should be set to Medium High, will REXT required? The design is already produced without REXT so adding it is not advised if avoidable.I don't have the instrumentation to measure the actual drive level as it requires ~0.1pF probes for proper measurement. There is no indication of LSE max drive current for the H7, the datasheet only specifies 550nA IDD at medium high.Should I be concerned that Medium High may violate 1uW?Thanks
Hello everyone,I’m working on an embedded project where I need to receive a variable-length stream of bytes via UART on an MCU STM32H750. The key points are:All bytes are payload, no start or stop bytes, no protocol framing.The number of bytes is undefined and variable.The byte stream starts when the MCU is ready.I need to calculate CRC (Ethernet CRC32) over all received bytes.After receiving all data, I must output the CRC via UART.The UART baud rate is very high (greater than 900,000 baud).My current approach:I use UART interrupts to receive bytes one by one.I update the CRC continuously with every received byte inside the interrupt handler.This works fine for small data, and CRC calculation seems correct.However, when I try to receive a large file or big data stream, the CRC isnt correct, the crc will be outputed before the whole data recieved.I suspect the problem is related to handling the continuous stream without any start/stop or length information, and possibly buffer ma
Hi everyone,I want to make a freertos client with STM32WBA63.When the server connects to the device, the device hangs after service discovery.No matter what I did, I couldn't find the problem. Can anyone help me?I can share whatever is necessary.Best Regards.
I’m working with the STM32WL series and would like to know if it’s possible to configure the device to transmit a chirp-modulated signal at a specific timing (e.g., triggered by a timer or external event). Has anyone done this or have suggestions on how to implement it?
Hello everybody!Recently I've been trying to implement different low-power modes on the Nucleo-WL55JC board and measure the according power consumptions. At the start I was provided an Otii Arc Pro with the software but then we realized it was a rather costly solution. So we switched to an alternative from Nordic Semiconductor, the Power Profiler Kit II (also known as PPK2).At first glance it seemed rather complicated to set up the Nucleo board with the PPK2, since it was originally made to work with nRF boards (as I understood it that way), and pins names and locations for external power supply change from an Nucleo board to another.Eventually I managed to set it up correctly by mimicking what I did with the Otii solution. I decided to share what I've found if you ever encounter this problem.1) Switch the jumper JP4 position to E5V, this would allow the PPK2 to power our board.2) Unfit the JP7 jumper and fit the STLK_RST jumper to disable the LEDs from power
@STTwo-32 and could you tell me please when you add freertos features in cube mx, also I want to use BLE_DataThroughput example with cubemx
Hi, in custom_stm.h, should add manually #include "ble.h" to works
void STM32F4_SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; // 1. Habilitar el reloj del controlador de potencia y configurar la escala de voltaje __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2); // 2. Configurar oscilador externo HSE (8 MHz), activar PLL RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; // PLL Config: // - PLLM = 8 (divide HSE 8MHz a 1 MHz) // - PLLN = 336 (multiplica a 336 MHz) // - PLLP = 4 (divide VCO para SYSCLK: 336/4 = 84 MHz) // - PLLQ = 7 (para USB, SDIO: 336/7 = 48 MHz) RCC_OscInitStruct.PLL.PLLM = 8; RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4; RCC_OscInitStruct.PLL.PLLQ = 7; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { STM32F4_Error_Handler(1); } // 3.
Hello,I'm trying to flash the example program in B-WL5M-SUBG1 connectivity expansion board, and below issue.Tried with different EVK boards but still the persists.I got a popup for updating firmware of STLINK-V3MINIE debugger, so I upgraded the firmware from V3J8M3 to version V3J16M7 before flashing the hardware.Above is the screenshot taken after the firmware upgrade.Regards,Prakash N
Tried to erase , recently i keep getting this error , when attempting to erase through IDE even though not successful , after several tries it programs.
Hello ST Community,I am working on the STM32H747I-DISCO board and trying to configure FDCAN1 for CAN FD operation.Setup:I understand this board does not include a CAN transceiver, but I want to validate FDCAN1 TX signaling before attaching one.I configured FDCAN1 using STM32CubeIDE with:FDCAN1_TX = PD1 (Arduino D3)FDCAN1_RX = PD0 (Arduino D2)I successfully tested internal loopback mode and it works as expected.Then, I changed FDCAN1 to normal mode (FDCAN_MODE_NORMAL) to test TX output using a logic analyzer before connecting a transceiver.Problem:In normal mode, even when I queue a valid CAN frame using HAL_FDCAN_AddMessageToTxFifoQ() and start FDCAN, no signal appears on PD1 (TX) — not even dominant bits or start of frame on logic analyzer.I expected to see at least some output on TX line, even without a transceiver connected. My Goal:Before adding the external transceiver (TJA1051T/3), I want to:Confirm that FDCAN1 TX (PD1 / D3) is outputting framesEnsure my board setup and pin
Hey, I am new to lorawan. I am using AWS iot core as my LNS. I am able to recieve downlink in class A after an uplink. But when I try to recieve downlink in class C mode I am unable to even class C works as class A where the downlink is recieved after uplink.Any idea why is this happening? Thanks.
Hello ST Community, I am currently working with the Nucleo H723ZG board and facing issues establishing a ping response using the LWIP stack. Despite following various examples and configurations, I have been unable to get it to respond to pings. Here are the details of my setup: Development Environment: STM32CubeIDE V1.17 and STM32CubeMX V6.13.0 Configuration: I have not used RTOS. I configured the Ethernet settings according to package examples. :C:\....\STM32Cube\Repository\STM32Cube_FW_H7_V1.12.1\Projects\NUCLEO-H723ZG\Applications\LwIP\LwIP_UDP_Echo_Server I ensured that the Ethernet cable was connected properly and used a direct connection to my pc. I have tried multiple versions of the H7 package ( 1.12.1 - 1.12.0 - 1.11.1 - 1.11.0 - 1.10.0 ) and tested various configurations without success. The ping command consistently results in "destination host unreachable."Could anyone provide insights or suggestions on what might be missing or misconfigured? //***********
Hi,I want to design my own LoRa-Board based on an STM32WLE-Chip. It is my first time handling with RF-related topics which is why I'm creating this post. I created a design which I would want to have reviewed for major flaws, so I can order my first prototype. I know that antenna impedance matching is not an exact science but I just want to correct the worst errors. Where did I get the LC-Values from:The LC-Values are according to AN5457 from ST (for 868MHz LoRa LowPower mode). Where did I get the PCB-Antenna-Design from:The PCB-Antenna-Design is from Design Note DN023 from Texas Instruments. However, the length of L6 is 2mm longer in my design in order to opimize the PCB-Antenna by shortening it. What else did I take into consideration:RF-tracks surrounded by Ground-plane with vias included to the bottom layerSmooth tracks and track-size transition (this is why my RF-traces are rounded off)Almost no traces underneath RF-track (except for two traces under
Hai.., We are using a custom board with STM32H743IIT6 soldered to it. For our application, we need more Analog Inputs so we have used TLA2528 chip. Below is the code for it.. tx_buf[0] = TLA2528_PIN_CFG; tx_buf[1] = 0x00; HAL_I2C_Master_Transmit(&hi2c4, TLA2528_I2C_ADDR, tx_buf, 2, HAL_MAX_DELAY); tx_buf[0] = 0x10; tx_buf[1] = 0x00; HAL_I2C_Master_Transmit(&hi2c4, TLA2528_I2C_ADDR, tx_buf, 2, HAL_MAX_DELAY); tx_buf[0] = TLA2528_CHL_SEL; tx_buf[1] = 0x00; HAL_I2C_Master_Transmit(&hi2c4, TLA2528_I2C_ADDR, tx_buf, 2, HAL_MAX_DELAY); tx_buf[0] = 0x01; tx_buf[1] = 0x08; HAL_I2C_Master_Transmit(&hi2c4, TLA2528_I2C_ADDR, tx_buf, 2, HAL_MAX_DELAY); HAL_Delay(20); HAL_I2C_Master_Receive(&hi2c4, TLA2528_I2C_ADDR | 0x01 ,rx_buf, 2, HAL_MAX_DELAY); result = (rx_buf[0] << 8 | rx_buf[1] ); While Debugging we could only get the value as "0x00". Could you please help us with this issue? we have attached the TLA2528 Datasheet below for your reference
Hello! I would have an app that is divided between a secure part and a non secure part. The memory definition is as following in the secure linker script: /* Memories definition */ MEMORY { RAM (xrw) : ORIGIN = 0x30000000, LENGTH = 320K FLASH (rx) : ORIGIN = 0x0C000000, LENGTH = 64K FLASH_NSC (rx) : ORIGIN = 0x0C010000, LENGTH = 8K } The first 9 sectors (0-8) are of the secure part.When attempting to erase sector 9 (the 10th) sector from the Secure application part using:'HAL_FLASHEx_Erase' I get a HAL_FLASH_ERROR_ECCD error. I require this for software update, I am trying to do the following on the INACTIVE bank:1) Delete the secure sectors and update with a new secure app2) Delete the non-secure sectors and update with a new non-secure app From my knowledge the secure part should be able to erase the non-secure part without any problems.
Hi everyone, I'm working on a project using the STM32U5G9 microcontroller and trying to interface it with a Macronix MX35LF1G24AD NAND flash via the OctoSPI peripheral. The goal is to enable memory-mapped mode so the external flash can be accessed as part of the MCU's address space. However, I'm facing some challenges and would appreciate any insights or examples from the community. Here are my main questions: Is the MX35LF1G24AD NAND flash compatible with OctoSPI memory-mapped mode on the STM32U5G9? Most examples I’ve found are for NOR flash, and I’m unsure if NAND is fully supported in this mode. What are the key configuration steps in STM32CubeMX or HAL to properly set up OctoSPI for this device? Are there any specific limitations or considerations when using NAND flash in memory-mapped mode (e.g., ECC handling, bad block management, page/block alignment)? Additional Doubt: In most OctoSPI memory-mapped examples I’ve seen (typically with NOR flash), the flow looks somet
Hello,I want to try this open-source project. https://www.pcbway.com/project/shareproject/STM32F4xx_Maker_PCB_MakerST_1_ab9866e3.htmlIt's based on an STM32F4xx microcontroller and appears to be designed for general-purpose prototyping. I had a few questions after reviewing the schematic and layout, and I was hoping someone with experience in custom STM32 board design could shed some light:Boot Mode Configuration:How does this board handle BOOT0 selection? I couldn't clearly identify if there's a jumper, switch, or default pull configuration. Is it safe to assume it's hardwired to always boot from flash?SWD Debugging Interface:The board exposes the SWD pins, but I didn’t find much detail on signal integrity (length matching, protection resistors, etc.). Are there any known limitations or considerations when using a low-cost ST-Link or J-Link with this kind of layout?Power Supply Design:The project uses a USB Type-C connector for power, but I’m unsure if it follows proper USB PD or
Hello ST Community,I am currently working with the STM32N6570-DK board and trying to implement a UDP server using static IP (without DHCP).However, all the example codes provided by ST (both server and client) are configured with DHCP enabled. I am specifically looking for a working example that uses only a static IP configuration, and that can successfully respond to ping and UDP communication.I have noticed that many other users in the community have also waiting for it, but it seems an official example without DHCP is still not available with STM32N6.It would be very helpful if ST could provide or update an example project that:Uses static IP (no DHCP)Allows successful ICMP pingImplements a basic UDP serverLooking forward to a solution or guidance. I hope this update/fix will be considered soon by ST.Thank you.
I'm having a Model that receives data from the backend. I need that, according to the data received, independently of what view you're in, the presenter of the view executes a function that goes to a specific view. For instance, I'm receiving 1 in the Model, weathever the view I'm in, there will be a function in the Presenter that recieves the 1 and knows that it has to change view to the appropriate one. My function that maps the input to the view I've to change to is always the same, so I'm trying to avoid copying the whole logic in every presenter and just implement a single function that calls the bigger function that manages the logic. The idea is to create a singleton class in the common folder and use it. I was just wondering if this behavior could be achieved in some way with FrontendApplication.cpp
Tell me about multibuffer communication in the registers of the UART. We have a description of the RXNE flag. "The RXNE flag can also be cleared by writing a zero to it. This clearing sequence is recommended only for multibuffer communication". It turns out that when using DMA, you can reset RXNE this way. But why? After all, DMA does this automatically during operation.Edited to add 'F4' and 'DMA' Labels.
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.