Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Dear ST Community Members,I bought X-NUCLEO-BNRG2A1 (497-X-NUCLEO-BNRG2A1-ND) and X-NUCLEO-67W61M1 (497-X-NUCLEO-67W61M1-ND) along with NUCLEO-STM32F411RE from Digikay. I have raised concerns with both Digikey and ST Support about both the X-NUCLEO-BNRG2A1 and X-NUCLEO-67W61M1 boards have been sent to me without possibly having stack and firmware pre-installed on them.I am assuming this because the firmware executing on STM32F411 is reporting error when executing hci_init() when communicating with BLUENRG-M2SP on X-NUCLEO-BNRG2A1. I have tried both with CPHA = 2 Edge with CPOL = High (returns error 66) and CPHA = 2Edge with CPOL = Low (returns error 255). The J10 (1-2), J15 (1-2), and J14 (2-3) pins are shorted using female jumpers (one per J port).As I am in between jobs and cannot invest money, I am unable to buy the NUCLEO board with STM32L476RG for which some examples (like Virtual COM port) are given. Using STM32CubeMX I did create a VIRTUAL-COM port project fo
Hi, I'm currently working on a project with an H755 board.The project uses UART communication. I'm developing it on a Windows 11 computer, and it generally works fine on that computer. So far, there are no issues.However, after completing the project, I'd like to be able to use it on my older laptop (currently running Windows 10 with ESU). Here's the problem: my Windows 10 computer doesn't recognize the STLink virtual COM port. It only sees the device as a standard COM port with a Microsoft driver (not ST Microelectronics), and its UART communication then doesn't work.I don't have CubeIDE installed on my laptop. I don't need it on this computer. Should I install the driver manually? If so, where can I find it? Any ideas on how to solve this problem?
1.AN5959 for STM32H523 has a note PB8/PB9 Not available for LQFP48, UFQFN48, WLCSP39.LQFP64 is not mentioned there but it has only PB8 pin and no PB9 pin. That makes it unusable by boot loader. So why it is not included in the note?My question is if the PB8 pin is still taken over by boot loader (maybe all packages use the same one)?Is there a reliable rule for partial missing IO and boot loader? What am I missing here?2. Another potential problem is that some pins for smaller packages are remapped which is noted in AN5959, but AN2606 does not always mention the alternative pin so it is dangerous to rely on that document alone. And not obvious you have to check others like AN5959 AN5711 to be sure.
Hi,Few days ago i've encountered a strange behavior of the comparator at STM32G4. I investigated the problem under controlled conditions (used Nuclo kit instead application PCB) and the result is startling.Comparator 4 configured to get positive input from pin PB0, negative from DAC1 Channel 1 (set to 500mV).Hysteresis set to maximum (70mV)DAC output is not connected to external pin (only internal connection)Input signal is 50Hz sinewave with 400mV amplitude and 600mV offset (to reliably cross 500mV thresholds +- hysteresis)Enabled Comparator 4 rising edge interrupt.Interrupt routine simply generates fixed length pulse.On blue scope trace you can see clean input signal (scope input AC coupled), it certainly does not contain noise that would be close to hysteresis value (more detail at last screen).On Red trace is application output. You can see that many times interrupt fires also on falling edge, or fires multiple times on tha same rising edge. It looks like that comparator works with
Hi all,I am working on firmware that involves SPI communication using a Nucleo board (Nucleo-L4R5ZI-P) with an STM32L4ZIT6 microcontroller.I am trying to establish communication with an SPI slave device. The chip select (NSS) signal is expected to be controlled by hardware, so I enabled the hardware chip-select configuration as shown below.(screenshots attached)When I switch to software control, I am able to read from and write to the slave registers by manually toggling the chip-select pin in software. However, when I change the mode to SPI_NSS_HARD_OUTPUT, the SPI read/write communication stops working.What could be the issue?
Hi,I am unable to flash or erase two of my STM32G030F6P6 boards. The issue started after I tried to configure the PA14 pin as GPIO_EXTI14 in CubeMX. (on two boards)After flashing the binary I was not able flash the MCU anymore. I get the error "Error in initializing ST-LINK device.".In STM32CubeProgrammer I get the error "No STM32 target found! If your product embeds Debug Authetication, please perform a discovery using Debug Authentication" when pressing "Connect" (I have no debug Authentication enabled).Then I tried enabling RST while pressing "Connect" in CubeProgrammer. I am then able to connect. But if I try to erase the flash (Full Chip Erase) I get the error "Error: Mass erase operation failed. Please verify flash protection". I have no flash protection enabled.I am on Linux using VSCode for development.Any suggestions?
Hi does anybody know how to locate the nRST, pin on a GT2p, control board? When I connect st link it says UR connection needs SWrst which says I need to find the nRST, pin. to connect another wire that goes from St link, v2, cloneto the nRST, pin or button on the GT2p, control board. I can take a picture of what the PCB, looks like in about an hour? Thanks
Hello,In a seperate post I received help allowing my B-G431-ESC1 to accept PWM input from an ESP32 to vary the speed of a 24V hoverboard motor with hall sensors using FOC.My goal now is to be able to vary the direction of the motor's rotation by varying the PWM.Given that the acceptable range of values is 1060us to 1860us, I had hoped to be able to do this by having values 1060us to 1460us correspond to rotation in one direction, and the values from 1460us to 1860us correspond to rotation in the opposite direction.I was unsure of any official documentation on bidirectional control, but i noticed that when using the motor pilot to manually set speeds, I was able to set the speed reference to be both positive and negative. I found a github with a guide on how to implement bidirectional control and after following the steps it mentioned, I found that when the motor driver was viewed on the motor pilot, the speed reference did indeed switch between positive and negative values with th
Hello;I want to create Ac induction motor project. So I cannot find ACIM GUI or ACIM profile in MC Workbench any versions. Could you please give an answer for my questions1. Can i download ACIM GUI ?2. Can i find a acim profile for mc workbench 3. How do i put Acim Selni Ahv 242 to my project Regards Motor Workbench 6.2.1Stm32cubemx 6.10.0Control board: NUCLEO-G431RBPower Board: STEVAL-IPM30B
Hi, I am trying to reset HRTIM on an external event using TIM1 TRGO as a reset event. I am trying to make a single pulse every 200ms (5Hz) because I want to make a single puls test. However, I also need a high resolution so I can vary the on time and blanking time precisely, which is way I want to use the HRTIM. I have trouble getting the HRTIM to reset however, and I dont understand why. I am running the clock at 100Mhz and have set the TIM1 PSC to 9999 and ARR to 19999 to get the 5hz. I have also enabled the MSM(master/slave mode) and set the TRGO to RESET. In the HRTIM I have enabled EEV1 as source 3(TIM1_TRGO). Timer A is configured as a retriggerable single-shot mode where the reset trigger source is set so the timer counter reset is upon EEV1. The HRTIM clock is divided by 4 and the period is 50000. And I have compare unit 1 set as 49000 and compare unit 2 as 49500. The output polarity is set to active low and set and source selection is CMP1 and CMP2 respectively. Late
In RM0316 rev.10, in Table 109. COMP register map and reset values, bit 1 of COMP2_CSR is marked COMP2_INP_DAC, whereas the STM32F303 are not supposed to have this bit (only STM32F301/302x6/8 do) - probably a copy/paste artefact/relict.Can ST please check/remove.JW
Edited by a ST moderator to be comliant with the ST community rules. In next time please use </> button to paste your code. Please review How to insert source code. Hi, I have a video application using F767 with LWIP and without RTOS. The custmized board has an SDRAM of 512MB. When receiving data, the pbuf.len is always 1460 bytes while the other side sends 40KB each time. Comparing to the data transfer rate can reach over 20Mbit/s, it's extremely slow in a video application, there must be fundamental issues in buffer configuration in my application. The options in lwipopts.h that I think they would be relevant to the data transfer rate are: #define MEM_ALIGNMENT 4 #define MEM_SIZE (30*1024) #define MEMP_NUM_PBUF 25 #define MEMP_NUM_UDP_PCB 4 #define MEMP_NUM_TCP_PCB 4 #define MEMP_NUM_TCP_PCB_LISTEN 2 #define MEMP_NUM_TCP_SEG 150 #define MEMP_NUM_SYS_TIMEOUT 6 #define PBUF_POOL_SIZE 20 #define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_ENCAPSULATION_HLEN
Hello,I've been trying to get the 67W61M1 board working with a NUCLEO-H7A3ZI-Q and the SPI has been giving me issues. I got the module flashed to 2.0.89 with mission_t01 and I'm trying to use the WiFi Commissioning application in CubeMX. The SPI seems to be out of sync, despite any configuration I provide in CubeMX. Below is what I'm seeing in a logic analyzer. It's using a 17.5 MBits/s baud rate right now since that's the closest to synced it has gotten. Is there any special configuration beyond what is in the documentation needed for the DMA or SPI with this MCU?
Hello Team, Query related to VBAT. Please refer below capture and provide your feedback for VBAT. Diode D1 and other components are, ok? Thanks & Regards,Jignesh Karena
Hello,I’m using an STM32WBA65 and trying to communicate with a peripheral (PTX30W) over I2C1.The peripheral requires the following I²C sequence: START → WRITE → REPEATED START → READ → STOP However, using HAL_I2C_Master_Transmit() followed by HAL_I2C_Master_Receive() does not work, because both HAL functions generate a STOP condition, and the PTX30W does not accept a STOP between the write and read phases.On STM32WBA, I don’t see a HAL equivalent of HAL_I2C_Master_TransmitReceive() that would allow a repeated START without a STOP in between.My questions are:Is there a way to achieve a WRITE + REPEATED START + READ sequence using the HAL on STM32WBA?Or is the correct approach to switch to the LL (Low Layer) I2C driver to get finer control over START/STOP conditions?Any guidance or best practices for this use case would be appreciated.Thanks in advance.here is the i2c protocol :
I am currently using STM32G0B1. I found that when using an active crystal oscillator, the STM32 fails to recognize my crystal oscillator, resulting in the HSERDY bit not being set.This is the configuration of my cubemx.Use an oscilloscope to check if the crystal oscillator has started oscillating.
I'm trying to receive some data over CAN (using Kvaser CanKing 500 kbit/s) and display it on a Riverdi 12.1" display. In fdcan.c, I have: void MX_FDCAN1_Init(void) { /* USER CODE BEGIN FDCAN1_Init 0 */ FDCAN_FilterTypeDef sFilterConfig; // the required filter ID can be found in the struct /* USER CODE END FDCAN1_Init 0 */ /* USER CODE BEGIN FDCAN1_Init 1 */ /* USER CODE END FDCAN1_Init 1 */ hfdcan1.Instance = FDCAN1; hfdcan1.Init.FrameFormat = FDCAN_FRAME_CLASSIC; hfdcan1.Init.Mode = FDCAN_MODE_NORMAL; // FDCAN_MODE_INTERNAL_LOOPBACK; // FDCAN_MODE_NORMAL; hfdcan1.Init.AutoRetransmission = DISABLE; hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.ProtocolException = DISABLE; hfdcan1.Init.NominalPrescaler = 1; hfdcan1.Init.NominalSyncJumpWidth = 32; hfdcan1.Init.NominalTimeSeg1 = 127; hfdcan1.Init.NominalTimeSeg2 = 32; hfdcan1.Init.DataPrescaler = 1; hfdcan1.Init.DataSyncJumpWidth = 10; hfdcan1.Init.DataTimeSeg1 = 29; hfdcan1.Init.DataTimeSeg2 = 10;
Helloi'm looking for the link to download X-CUBE-LED1642 driver but can't find itCan someone give me this link ?thanksbest regards
I am experiencing a "Code Generation" failure in ST Motor Control Workbench, even after performing a clean installation. I have read similar posts and did suggests.To eliminate any "Turkish character", "Path length", or "User permission" issues, I created a brand new Administrator account named "stmdev" on my Windows 11 Home Single Language PC and set the system display language to English (US).My Setup & Steps:Created a root directory: C:\STInstalled STM32CubeMX, STM32CubeIDE, and ST MC Workbench directly into this directory (e.g., C:\ST\MX, C:\ST\IDE, C:\ST\MCSDK).Verified that standalone STM32CubeMX and STM32CubeIDE launch successfully first.Created a basic motor control project in MC Workbench.Upon clicking the "Generation" button, the process fails (CubeMX invocation issue).It seems MC Workbench cannot locate or properly trigger the CubeMX/IDE toolchain, even though they are all installed in the same root directory (C:\ST) and the environment is set to English.Could you p
STM32H755ZITxにX-NUCLEO-IHM07M1を2個接続し、FOC制御がしたいです。MC Workbenchを使用し、STM32H7シリーズからカスタムボードを作成し設定しました。しかしソースコードを生成しようとするとエラーが発生します。この問題を解消する方法はありますか。カスタムボード、MC Workbenchのプロジェクト、生成時のエラーのスクリーンショットをアップロードします。
Hello,I am working with the STM32U585AI using OCTOSPI2 to interface with the IS66WVO32M8 32 Mbyte ISSI OctalRAM. Currently I am facing an issue of read operations failing for both register and memory access, both in and out of OPI DTR mode. Register reads return a value of 0x8080 or 0x8888. Memory reads (using both HAL_OSPI_Receive() and HAL_OSPI_Receive_DMA() return some sequence of 0x80s and 0x88s in the amount of data requested (32 byte read returns 32 bytes of 0x80, 0x88, or some combination).EDIT: Dummy cycles in code snippets corrected to both be 16 (based on config being applied to IS66WVO32M8 configuration register).Here is my OCTOSPI2 initialization:void MX_OCTOSPI2_Init(void) { /* USER CODE BEGIN OCTOSPI2_Init 0 */ /* USER CODE END OCTOSPI2_Init 0 */ OSPIM_CfgTypeDef sOspiManagerCfg = {0}; HAL_OSPI_DLYB_CfgTypeDef HAL_OSPI_DLYB_Cfg_Struct = {0}; /* USER CODE BEGIN OCTOSPI2_Init 1 */ /* USER CODE END OCTOSPI2_Init 1 */ hospi2.Instance = OCTOSPI2; hospi2.Init.FifoT
Hardware Platform: STM32H750XBH6Software: MDK + CubeMX FW_H7_V1.12.1github: https://github.com/Q-DEBUG/DMAMUX.gitBackground: The timers TIM12/LPTIM1/2/3 used by DMAMUX1/2 to generate synchronization/trigger signals for H7 peripherals are all 16-bit, resulting in low precision. To improve precision and facilitate jitter compensation (testing shows a deviation of approximately 0.3ms–0.5ms per second), I intend to use the internal 32-bit timer peripheral TIM2.The entire chain is divided into two parts:Part 1: DMAMUX1-CH0, using direct mode (without any synchronization signal), maps the TIM2_UP event to HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT.Part 2: DMAMUX1-CH1, using synchronization trigger mode , uses HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT as the synchronization signal to trigger UART4_TX.My current test involves modifying the original LPTIM2-triggered UART periodic output routine by changing HAL_DMAMUX1_SYNC_LPTIM2_OUT to HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT. At present, I can only observe that Ti
Hello, I am experiencing the following issue with the STM32L433RCT microcontroller I am using: when I pull the NRST pin LOW and then release it to HIGH, the microcontroller does not recover from reset. In this case, power cycling the device does not solve the problem either. However, if I disconnect the battery from the circuit and then reapply power, the device starts up normally. This issue occurs mostly during the first boot. After the initial startup is successful, even if I reconnect the battery and pull NRST LOW again, the system does not lock up. I am concerned about what would happen in the field if the device were to freeze and could not recover using a reset.
Hello all,I'm facing an issue with STM32 CubeMX / CubeIDE firmware using this display with X-CUBE-DISPLAY over FMC.Each time I'm trying to initialize the LCD this function if((ILI9341_LCD_Driver.ReadID(LcdCompObj, &id) == ILI9341_OK) && (id == ILI9341_ID)) is always returns id = 0x0.I've tried to play with timings, using formula from FMC/FSMC, but no luck.This is my FMC initiliaztiation:/* FMC initialization function */ static void MX_FMC_Init(void) { /* USER CODE BEGIN FMC_Init 0 */ /* USER CODE END FMC_Init 0 */ FMC_NORSRAM_TimingTypeDef Timing = {0}; /* USER CODE BEGIN FMC_Init 1 */ // hsram1.Instance = FMC_Bank1_1; /* USER CODE END FMC_Init 1 */ /** Perform the SRAM1 memory initialization sequence */ hsram1.Instance = FMC_NORSRAM_DEVICE; hsram1.Extended = FMC_NORSRAM_EXTENDED_DEVICE; /* hsram1.Init */ hsram1.Init.NSBank = FMC_NORSRAM_BANK1; hsram1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE; hsram1.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
Hey. I'm trying to use my H7's usb interface and i've currently set it up as a cdc device.What i'm trying to implement though is the following. The stm is supposed to create a virtual connection with either a python app or a tera term terminal.Is there a function or a variable that detects if this kind of a connection is established ? For example, the pico equivalent is tud_cdc_connected() What i want to build is thiswhile(!exampleCOnnectionVariable) { HAL_DELAY(500) }Meaning that my stm would wait during initialization, until a connection is established and then proceed with the super loop.
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.