Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi, I'm seeking some advice on using a STM32U5A5 in USB device only via a USBC connection.Any previous USB "device only" designs I've worked on only required connections to D+, D- and ground to communicate. These designs have been USB2x.The U5A5 has lots of cool features regarding the USB module etc but we have assigned other features to the pins that are associated with the more the more advanced features like CCx and VBUS SENSE etc. As we plan to use the part in device only mode am I correct in assuming that reallocating the unused pins OK to do and that D+, D- and GND are the only connections required?We are using the USBC port for a communications link to a PC using CDC, and developing with the associated NUCLEO-U5A5ZJ-Q board. However our product schematic will look like the one in the attached schematic snippet.Thanks in advanceCaleb
Hi Fellow Developers,There is actually some issue while trying to configure the peripherals on the disco board.Be it USART or SPI even after selecting the core for a particular communication protocol on board i am unable to get an response over it. Earlier i was trying to configure SPI and read a external SD CARD over SPI but am unable to get an response over SPI. I even checked pins over oscilloscope and had not clock or data over MISO or MOSI.As mentioned at below pins.Then i tried sending data over USART3 pins and had no response there either.Green is Tx connected to Pin D0 which is Rx on STM boardBlue is Rx connected to Pin D1 which is Tx on STM boardAnd Orange is GND.I know HW connections are right, provided for reference.Also here is a basic code of USART transmit.int main(void) { /* USER CODE BEGIN 1 */ uint8_t txData[] ="Hello M7-DISCO!\r\n"; /* USER CODE END 1 */ /* USER CODE BEGIN Boot_Mode_Sequence_0 */ #if defined(DUAL_CORE_BOOT_SYNC_SEQUENCE) int32_t timeout; #e
Hello,We are working with an STM32F429ZIT6TR to design an 800x480 LCD Display Controller Board,I configured the FMC with the 8080 interface to receive data from Main Board (another provider), and also enabled SDRAM through the FMC. The LTDC is used to drive the LCD.The plan is to transfer data to our Display Controller board via the 8080 interface and then use the LTDC for display refresh. The data lines are shared between the 8080 interface and the SDRAM, but they have different chip select signals.we built a first prototype, but when we tried to write data into the SDRAM, we observed sporadic/incorrect values.My questions are:Could sharing the data lines between the 8080 interface and SDRAM cause signal integrity or bus contention issues, even though the chip selects are different?Do you have any recommendations for PCB layout in this case?
Hi, I'm running a (custom) board that makes use of an STM32H723VET and a LAN8742. A project is set up in CubeMX that makes use of lwIP together with this LAN-chip (there is an issue in CubeMX which deselects the LAN8742 on loading the CubeMX file, but this is something I have already catched). lwIP is configured to make use of a static IP. Now when I run my code in CubeIDE, I can see the interface is set up properly and it detects a 100 MBit duplex connection. Unfortunately that's all what works. In call of netif_set_link_up(), an ARP-request is tried to be transmitted. Some layers deeper, within the HAL-functions, this ARP-request can not be sent. Function HAL_ETH_Transmit() ends up in an timeout while waiting for these ARP-data being transmitted. That lets me assume, something wents wrong with the hardware initialisation. However, functions HAL_ETH_Init() and LAN8742_Init() go through without any error and function LAN8742_GetLinkState() returns a proper link state&nbs
1. ContextI'm working with an STM32WLE5JCI6 board and STM32CubeIDE to connect a LoRaWAN device to The Things Network (TTN) in Japan. The gateway I'm using is a SenseCAP M2, and its frequency plan on TTN is configured for Japan 920-923 MHz with LBT (channels 31-38) and (channels 24-31).2. The ProblemThe firmware compiles successfully, and the debug console shows the following logs:Join Request started.Join Request finished.However, I'm not seeing any Join Request data appear in the gateway's Live Data tab on the TTN console.3. Steps TakenI have carefully configured the project based on the documentation and have attempted the following to troubleshoot the issue:Frequency Plan: In lorawan_conf.h, I changed the default channel plan from CHANNEL_PLAN_GROUP_AS923_1 to CHANNEL_PLAN_GROUP_AS923_1_JP.Key Configuration: I've confirmed that the DevEUI, JoinEUI, and AppKey in se-identity.h exactly match the values configured in the TTN application.Compilation Fix: The channel plan change resulted
Dear ST Support Team,I am developing a USB-based device using the STM32H755 microcontroller.In order to ensure proper identification of the device on host systems, I would like to requestthe allocation of a unique USB Product ID (PID) under STMicroelectronics’ Vendor ID (0x0483).Could you please advise me on the procedure to obtain an official PID for my project?Here are the key details about my project:- MCU used: STM32H755 Nucleo board (later migrated to custom PCB).- USB device class: Vendor Specific (WinUSB/libusb communication).- Purpose: Development and prototyping, with potential for small-scale production.- Planned distribution: internal use only .I am aware of ST’s sublicensing policy and I would be grateful if you could guide me through thenext steps in the allocation process.Thank you in advance for your support.Best regards,Mariusz
Hi,I am using STM32H7B0Since it has only 128KB flash, I will need to use an external flash to run code. There will be a "host" mcu to control this (with BOOT0 / NRST pin control).I am wondering is it possible to use the built-in ROM bootloader (in system memory), to directly flash the incomign code to connected external flash? I found app note AN4852, suggesting its possible. But seems we need to use specific peripherals (QSPI?) to connect the external flash?I haven't dug into the details yet, since I am still in the planning stage of the project. Just want to know if its possible (or NOT), and what are the precautions (peripherals/pins designated) for this?
Split from https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/how-to-work-with-buttons-without-touch-panel/td-p/165514Hi,I’m working with TouchGFX on an H743, following the example from the Nucleo board, and I have the state of a physical key (e.g., a GPIO button) available when MB1642ButtonController::sample is called. What is the simplest way to interact with TouchGFX based on this key state?Specifically, I want to know:Do I have to handle everything through code by manually triggering events for widgets (like buttons)?Is there any way to map a key press (e.g., key "1") to a TouchGFX button press, similar to how the touch interface works, directly from the GUI?Thanks in advance for any help or suggestions!
Greetings.I started to study motor control with X-NUCLEO-IHM07M1 as following- MCU : STM32F302R8- PowerBD : X-NUCLEO-IHM07M1- Motor : Bull Running BR2804-1700Kv I just try to make STM32Cube IDE project using MC Workbench 6.4.1 (as described following screenshot image)but, Using ST Motor Pilot, When start command is on, just motor starts rotate 1 cycle, and stopped. Then, Status Occurs "FAULT_OVER" as following screen image And, main function is no codes for opreating because of just test with ST Motor pilot Can I ask help for what is problem?As Using MC Workbench Version 5.4.8, motor works.Is any difference between MC Workbench 5.4.8 and 6.4.1?
Hi, I'm trying to communicate two microcontrollers (STM32H503CBT6 and a NUCLEO-H503RB) via FDCAN but the STM32H503CBT6 is not sending any messages.Both have the same configuration, but the NUCLEO-H503RB can send (I have checked it with an oscilloscope).Searching for an answer I found this question on the forum, saying that the STM32U5F7 has the FDCAN disabled by hardware and I wonder if this is the case with the STM32H503CBT6 Question: https://community.st.com/t5/stm32-mcus-products/fdcan-not-working-with-stm32u5f7/td-p/720224Thanks!
I have tried to route the LSI clock to PA2 pin in my Nucleo Board G474RE without success. SB13 & SB17 are open (it means ST Link is not connected to PA2 pin). Configuration was carried out with STMCube32 Mx but I don´t obtain the CLK in PA2. I have checked also the LSCOSEL and LSCOEN bits and are correct configured.My dudes are: 1) Muss RTC be activated to obtain the desired behaviour? My suposition is NO, because when I route the LSI to MCO pin (PA8) it works fine.2) did I forget to modify something else in Nucleo Board G474RE?Thanks in advance!
Hi,I'm using a ScrollWheel as counter for a slicer.The scrollwheel has 5 item with 3 drawable in customcontainers with textarea.It has 2 member values, the actual value and the set value. I overrided the UpdateItem callback to dinamically update the scrollwheel drawable for visualization as well as wheelAnimationEnd to update the current value during animation.I have declared a function that set the new value to display in the counter and fires the animation to.When called, it starts the animation transition rolling on all the number between the one it has at the beginning to the one used in the call.The scroolwheel in always centered at position 2.The code dinamically updates the wheel to have always the correct value displayed.It works fine upcounting, not in downcounting.When downcounting it stop always one before the desidered.The internal value correctly reaches the set value in both directions but not the displayed when downcounting.Something went wrong during the
Split from this thread. thanks to @Ozone @Karl Yamashita, this afternoon I have tried to extend can2.0 to canfd with my project of stm32g474vet6. I found some strange things, I think there may be a bug of stm32g474vet6 fdcan module. I modifed the FDCAN_TxHeader to FD_Frame and datelength to 64byte. for FDCAN_RxHeader, almost nothing to modify. then i used an app on PC to send a 64bytes CAN message, then my code received the 64bytes message and copied to rxbuffer, the rxbuffer had 64bytes data, but FDCAN_RxHeader.datalength is 15. it is not 64. i think this is a bug of stm32g474vet6, it received 64bytes data but FDCAN_RxHeader.datalength is 15. I have no can tool now (with used by other people), when i have the can tool, i will take screenshot to show the strange thing. hello @mƎALLEm @Saket_Om did you meet FDCAN received 64bytes but FDCAN_RxHeader.datalength is 15? is there some configuration I miss? Thanks a
HelloI am using NUCLEO-G474RE board to sample voltages from the the Battery management board. In the PCB board, I have opamp voltage divider to step down voltages around 24Volts to 2.5V level to be read from the STM. Please refer to the voltage divider network below. I have the divider node feeding into ADC. At node A, I am not seeing fluctuations, but at node B(Nucleo board side) I see the 400mV fluctuations. Please see the attached graphs. My setting are 96MHz clock prescaler divided by 10, sampling time is 42.5cycles, and buffer size is 4000. Grounds are connected by jumper wires with IDC connector and adc pins are connected by IDC+Jumper wires. I am not sure how this can be fixed. I tried slowing down the clock by increasing the pre-scaler number, but this didn't help. Could this be the ground bouncing case? I have been debugging this for weeks, and I have no clue what this is caused by.Thank. you very much in advance
Hello,The target MCU is STM32L151ZETx (LQFP144), and the main clock frequency is 32 MHz.Normally, the system operates in Run mode, but I plan to use Sleep mode or Low Power Sleep mode when the supply current decreases.My question is: when entering Sleep mode or Low Power Sleep mode and then returning to Run mode, is it possible to resume execution from the exact code line (or position) where it was before entering Sleep mode, without requiring clock setup or any additional operation?Thank you.
Hi GuysI am doing a project and I notice that if I unplug the UART cable(FTDI) and then connect it again, there is a chance that there would be mysterious bytes received from RDR. What is more interesting is that the mysterious bytes are actually the messages that was sent out to UART Tx. During the testing, I am not using any UART serial monitoring tool like Putty or what's so ever, so there should not be any inputs to the UART Rx. But it just happened, not often, but if I repeat disconnect and reconnect dozens of times, then something from UART Tx got into the UART Rx buffer. I have confirmed that those mysterious bytes are read out from RDR. Has any one know what's happening ? Thanks.
Target MCU: STM32L151ZETx (LQFP144)Main Clock Frequency: 32 MHz When the MCU is first powered on, it takes about 41 ms to reach the while(1) loop in the main() function, based on the code shown below. For my product requirements, I would like this startup time (from power-on to reaching while(1)) to be reduced to around 16 ms. Is there any way to achieve this reduction? Any suggestions or optimization techniques would be greatly appreciated. /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "adc.h" #include "dma.h" #include "rtc.h" #include "tim.h" #include "usart.h" #include "gpio.h" /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); int main(void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_In
I tested the LSE CSS function on the Nucleo-L053, but I found that short-circuiting the crystal oscillator pins failed to trigger the CSS interrupt. The code configuration is as follows plz give a clue or the flow of LSECSSvoid SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; /** Configure the main internal regulator output voltage */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); /** Configure LSE Drive Capability */ HAL_PWR_EnableBkUpAccess(); __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC
The Reference Manual for L4 series (RM0394) says on page 1007:"When the LPTIM is running with an asynchronous clock, reading the LPTIM_CNT register mayreturn unreliable values. So in this case it is necessary to perform two consecutive read accesses and verify that the two returned values are identical.It should be noted that for a reliable LPTIM_CNT register read access, two consecutive read accesses must be performed and compared. A read access can be considered reliable when the values of the two consecutive read accesses are equal."1. What does "asynchronous clock" mean?2. The block diagram, Figure 337 on page 988 shows a "Synchronization" block but is vague as to what this pertains to.3. Also, what is meant by "kernel clock"? If I am using the LSI oscillator for the clock source (CLKMUX = 0), where does this "lptim_ker_ck" come from? How is this mapped to LSI clock? This is confusing.4. If the LPTIM1 is being fed by LSI clock, does the caveat page 1007 still
I'm experiencing FDCAN Memory Access Failures on the STM32H503KBUX during CAN Rx. I am also experiencing intermittent CAN Rx message drops (every 1 in a 200), and I believe the two are related since no others errors are firing. I know the drops are happening on the STM32 because I can see the messages on the bus with my CAN debugger and there are no error frames. I'm struggling to understand why this Memory access error is happening and how to proceed with solving it. The only info I can find is in rm0492. However, it doesnt really say what might cause these events to happen. Other relevant info:- Using internal clock- Freertos- Using to `HAL_FDCAN_RxFifo0Callback` to read from FIFO- Config hfdcan1.Instance = FDCAN1; hfdcan1.Init.ClockDivider = FDCAN_CLOCK_DIV1; hfdcan1.Init.FrameFormat = FDCAN_FRAME_CLASSIC; hfdcan1.Init.Mode = FDCAN_MODE_NORMAL; hfdcan1.Init.AutoRetransmission = ENABLE; hfdcan1.Init.TransmitPause = ENABLE; hfdcan1.Init.ProtocolException = EN
Hello,Is it possible that STM32f207ZGT6 purchased in 2025 from an official distributor have an old silicon revisionrev_id = 0x200f?
I am having a problem reading SPI data on an STM32F407 where it always returns 0x00. I actually have this working using HAL on the same hardware, however for legacy reasons I need to get this working with SPL. This application is just sending clock signals to the slave and reading the received data. There is no activity on MOSI.I can scope the signals and see the expected traffic on the SCK and MISO so I at least know my clock transmit is working. I just can grab the correct read data. Here is my code. I feel like I'm missing something basic for SPL. Any insight would be helpful.#include "main.h" #include "stm32f4xx_spi.h" #include "stm32f4xx_usart.h" #include "config.h" #include "board_init.h" #include "gpio.h" #define TIMEOUT_TIME 1000; uint16_t SPI_TransmitReceiveByte(uint16_t data); uint16_t spiData; void main() { uint32_t loopCounter = 0; SystemInit(); init_IO(); SPI3_Init(); powerOnLED(); while (1) { loopCounter++; if (loopCounter == 10000) { spiData = SP
Hello, I am starting a timer interrupt to send data over can data at 50 ms below is the configuration for the same and callback function when pulse is complete volatile uint8_t send_ch0_flag = 0; volatile uint8_t send_chx_flag = 0; volatile uint8_t send_relay_flag = 0; void MX_TIM2_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; htim2.Instance = TIM2; htim2.Init.Prescaler = 3999; // 80 MHz / (3999+1) = 20 kHz htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 999; // (999+1) / 20kHz = 0.05 s = 50 ms htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; __HAL_RCC_TIM2_CLK_ENABLE(); if (HAL_TIM_Base_Init(&htim2) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } sMa
I'm trying to go about creating a USB Audio interface on a NUCLEO-H7S3L8, receiving USB audio and forwarding it to the SAI, in order to send to an external DAC.Among other tests, I went back to checking when the functions in usbd_audio_if.c get called, to set up transfers of the packets received.And while in a previous version of the same project, on audio playback on the host, AUDIO_AudioCmd_HS() was called, allowing me to continue handling data accordingly, after a Cube MX update (6.14->6.15) and some changes on DMA (to get circular -> non-circular) and SAI (Output Drive enabled) settings, it no longer gets called on playback (a breakpoint within it never gets reached).Following the IRQ handler function for USB on either playback or idle, it only ends up within the code block for handling an incomplete "ISO OUT Interrupt", reaching the "__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)" macro.Since the changes I've made ever since it was functional seem mostly
According to some reference it is good to have ground polygon under IC 1. Is it okay to have ground polygon under IC? 2. Does it effects heating issue?3. I saw two hole behind the IC of nucleo 144 board. What that mean?
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.