Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello everyone, I'm trying to do FSK and PSK modulation using HRTIM in STM32G474RE but I have what I want when I use Oscillo to display. For example, '1' = 45 kHz and '0' = 55 kHz. I want to transmit the message "1010" where each bit is 10µs long (FSK) '1' = 5 kHz and '0' = 10 kHz. Carrier frequency = 400 kHz. I want to transmit the message "1010" where each bit is 10µs long and with an phase shift of 11.5°. How can I do this ? If someone can help me or have an another solution using nucleo ST board. Do not hesitate to suggest me please. Best regards,
Hello Everyone,I designed pcb while to use STM32H723VGT6. I used an Ethernet phy called DP83848 to communicate via Ethernet.I have previously used this Ethernet phy with F4 series processors and communicated via Ethernet without any problems. I am using CubeIDE version 1.18.0. I make the settings from CubeIDE as follows.I am setting RMII mode in ETH from connectivity. I am changing MAC address and i am enabling ethernet global interrupt from NVIC.I am enabling LWIP from Middleware and software Packs. I am disabling DHCP Module and i am setting IP and Subnetmask from general settings. Then I set my phy from platform settings. Only LAN8742 appears in the list.I build the code by selecting this Phy.Then I add the dp83848.c and .h files that I generated for the F4 series to my own project. In ethernetif.c, I replace everything related to LAN8742 with DP83848 functions. All of the functions have the same name. I build the code and no problems occured during the build.I uploaded th
Hi, I wanted to ask a question about brushless and MCSDK motors. When buying a motor, inertia is often listed, but friction isn't. Can I calculate friction using inertia, or is friction a parameter that can be omitted?
I use a STM32L496 and I'm implementing the SPI1 port for the communication with an external device.I have used CubeMX to set things up with SPI_NSS_HARD_OUTPUT and an external pull-up on the SPI1_NSS pin. I have connected SPI1_MOSI to SPI1_MISO to read the transmitted data back.When using HAL_SPI_TransmitReceive_DMA() or HAL_SPI_TransmitReceive_IT() the data is all send and received. The 32 bits are transferred within about 16us as SPI1_SCK is at 2MHz. SPI1_NSS goes low when __HAL_SPI_ENABLE() is used by HAL_SPI_TransmitReceive_DMA() or HAL_SPI_TransmitReceive_IT(). But after this it takes about 200us before SPI1_NSS goes high when __HAL_SPI_DISABLE() is used from within HAL_SPI_RxCpltCallback().Why this long delay?There is no difference between HAL_SPI_TransmitReceive_DMA() and HAL_SPI_TransmitReceive_IT().When using SPI_NSS_SOFT instead of SPI_NSS_HARD_OUTPUT and make SPI1_NSS low before the use of HAL_SPI_TransmitReceive_DMA() or HAL_SPI_TransmitReceive_IT(), and hig
I recently purchased some STMF303 boards for implementing a free pre-compiled HEX file.I received the boards with the STM32F303CCT6 chip, but the pre-compiled file was for the STM32F303CBT6 chip. The HEX loads but does not run on any 303CCT6.Are there significant compatibility differences between the CCT6 and CBT6 chips that would justify this?Could I have lost the purchased boards?Thank you.
Hi everyone,I am currently trying to use the ADC with DMA on my STM32H7S78-DK. To do so, I am following this guide: https://community.st.com/t5/stm32-mcus/stm32h7r-s-how-to-configure-an-adc-dma-transfer-in-circular-mode/ta-p/737149. I've made little changes to the code compared to the guide. I am attaching my project. The problem is that the program ends up in the Error_Handler() when the HAL_ADC_Start_DMA() (or the HAL_ADCEx_Calibration_Start()) function is executed.During the execution of the HAL_ADC_Start_DMA(), the ADC_Enable() function returns HAL_ERROR: /* Enable the ADC peripheral */ tmp_hal_status = ADC_Enable(hadc); /* Start conversion if ADC is effectively enabled */ if (tmp_hal_status == HAL_OK)Inside the ADC_Enable() function, the execution lead to this part (ADC_ENABLE_TIMEOUT limit reached): if ((HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT) { /* New check to avoid false timeout detection in case of preemption */ if (__
Hi,I’m trying to generate code for a dual-BLDC FOC setup using an STEVAL-IHM039V1 together with two X-NUCLEO-IHM08M1 boards in MC Workbench 6.4.1.For this combination you need an adapter board to go from the motor-control connector to the Morpho connector.As far as I understand, there is no dedicated adapter board for this configuration, but it looks like the X-NUCLEO-IHM09M2 could be used when using double-sided equal length male headers and stacking the IHM08M1 on top of it.However, MC Workbench doesn’t allow me to insert the adapter board between the two boards. When I click “Add adapter”, the page stays empty.Is there any straightforward way to still define this connection inside MC Workbench? Maybe by editing the adapter JSON file or another configuration file? Or will there still be compatibility issues later on when generating the code?Thanks.
Hello,i am looking about affordable LC Displays with intergrated STM32 controller to evaluate the cabapilities of TouchGFXCurrently i only knew the displays from Reverdi. But i would like to compare them with others.Basic Requirements are:- Screen Size beteen 4 - 7 " - Should have native support by TouchGFX with templates - Mut be available for private personsDo you know other manufactureers providing such type of combuned/intelligent displaysThanks in advanceGreatingsMArc
stack:Zephyr on stm32n6 (nucleo_n657x0_q)When sending a buffer over sai via i2s_write data is written into the buffer.I expected the TX buffer to be treated as read-only and remain unchanged by the driver.It's only ever the first 2 numbers.Why is that? Example code:int16_t tx_block_test[96] = {0}; In attachment a minimal version of a project that displays this issue.
I need clarification regarding the correct pinout for the specific part number I am designing with: STM32H7R7A8I6.I've noticed a discrepancy between the datasheet and the STM32CubeMX tool:Datasheet: The document shows two options for the UFBGA169 package: Figure 8 (UFBGA169 SMPS pinout) and Figure 10 (UFBGA169 GFx with SMPS pinout).STM32CubeMX: When I select the exact part number STM32H7R7A8I6 in Cube MX, it only displays the pin configuration that matches Figure 10 (UFBGA169 GFx with SMPS pinout).Can you please confirm if the ordering code STM32H7R7A8I6 guarantees the GFX pin configuration (Figure 10)? I need this confirmation to ensure my PCB design is correct before finalizing my purchase and manufacturing.
Hello ST Experts,I am using an STM32H755ZIT6 with W25Q256JV flash in Quad-SPI mode at 100 MHz.On our latest hardware revision, we observe occasional QSPI read failures and flash communication instability.During analysis we found:1. QSPI signal overshoot• QSPI_CLK and IO lines reach up to 4.7 V (measured on oscilloscope).• This exceeds STM32 specification (VDD + 0.3 V).According to AN5612 (ESD & internal clamp diode behavior):If an I/O pin exceeds VDD + diode drop, the internal clamp diode conducts, which may cause:Timing shiftSoft failuresFunctional instabilityQuestion:→ Is overshoot of 4.7 V likely to disturb QSPI timing even if the current is low?→ Is there a recommended clamp current limit for STM32H7 QSPI pins?2. QSPI routing differencesCompared to V2 hardware (working), V3 has:• All QSPI lines routed to 66.6 mm• Serpentine added on CLK, CS, RESET• Additional vias• Closer traces to noisy areas (buzzer, LEDs, ESP32)According to AN4661 – Section 8.4.3:CLK must NOT be serpentineCL
I am using STM32U083 MCU in a project that runs on a 3.6v Li-SOCL2 lithium thionyl chloride battery (OC voltage 3.65V / Nominal voltage at 1mA 3.6V).Currently I have used a LDO of 2.5v to power the MCU, but I was thinking if we can eliminate the LDO and directly power the MCU from the battery.Going through the datasheet I have found that the recommended input supply voltage is 1.55v-3.6v, and max is 4.0v, I have seen a mass produced device using the same battery directly on a STM32L053 MCU. I am expecting the same might be possible with U083 as well.Please suggest if this is okay or is there can be any potential issues that can happen.
So i'm following along with this video* https://www.youtube.com/watch?v=usQ_f6Swpok&list=PLTJzs51NlEICI7ARAHOyUqMhTgJE0UFv0&index=5 I have the same* STM32N6-DK board This is my build command for the GPIO_IO_Toggle application.* /opt/st/stm32cubeide_1.18.1/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.2.100.202412061334/tools/bin/STM32_SigningTool_CLI -bin GPIO_IOToggle_FSBL.bin -nk -of 0x80000000 -t fsbl -o GPIO_IOToggle_FSBL-Trusted.bin -hv 2.3 -dump GPIO_IOToggle_FSBL-Trusted.bin I tried this on 2 different boards and the same thing happened Bellow is the results from trying to program it. My output from generating the signed bin
Nucleo-WB55RGThe docs mention that it can be run off a button cell & also mention that the 3V3 pin can be used to power the board. Is it possible to run the board off a 3.7V LiPo battery? My application is pulling 7ms & using BLE
Hey!I will explain my setup and then paste the code. I have three different timers (TIM1, TIM2, TIM3) sending out PWMs to different parts of my board. All timers are set up the same way; the only difference is that TIM1 is an advanced timer.What I do is initialize all my timers and start everything up. Then, much later, I switch my pins from GPIO output low to pin alternate mode to enable the PWM outputs. This works great 999 times out of 1000, but sometimes TIM1 (and it’s always TIM1) randomly decides to put the PWM high for a very long time and then, after about 20 ms, goes down to 0 and never starts again. Resetting the MCU fixes this, and everything works as expected. (Using STM32G051)Here is the initialization code for TIM1: TIM1.CR1.CMS = 0x1; //Set TIM1 center aligned mode, trigger interrupt flags on compares in downcount TIM1.CR2.MMS = 0x7; //OC4REFC signal is used as trigger output (TRGO) TIM1.ARR = PERIOD_SIXTH * 3; //Auto-reload register TIM1.CCMR1.OC1M = 0x6; //PW
Hi everyone, I'm encountering an issue with the STM32H747 dual-core MCU during the transition from bootloader to application. Here's a summary of the setup and observed behavior: Setup: Bootloader (CM7 core): When the BCM4 option byte is enabled, the CM4 core starts as expected. Application (CM7 core): After the bootloader jumps to the CM7 application, the CM4 core stops responding. What We have Tried : Manual CM4 Enable in Application Disabled CM4 in option bytes. Attempted to enable CM4 manually in the CM7 application: SYSCFG->UR1 = (1 << 0); // Set BCM4 = 1 RCC->GCR |= (1 << 3); // Set BOOT_C2 = 1 Result: System hangs. Recovery requires setting BOOT pin = 1, flash erase, and reprogramming. The issue seems to be with SYSCFG->UR1 = (1 << 0) 2. Option Byte Update via Flash APIManual CM4 Enable in
Hello,I am implementing SPI master communication on an STM32G474RE, transferring 68 bytes per transaction. However, I am unable to achieve the desired SPI clock speed of 5 MHz—currently the SPI clock only reaches approximately 3 MHz.The system clock is configured at 160 MHz, and I have tested the peripheral clock (PCLK) at both 80 MHz and 160 MHz. Based on these clock settings, I tried multiple SPI prescaler values (16 and 32) to obtain a 5 MHz SCK frequency. In addition, the SPI_SCK pin is configured in High-Speed mode. Despite these settings, the SPI output clock still does not exceed approximately 3 MHz.Has anyone experienced similar limitations, or is there an additional configuration step required to achieve a stable 5 MHz SPI SCK on the STM32G474RE? Any guidance or suggestions would be greatly appreciated.Thanks in advance.
I'm going to use the STEVAL-MIC008A Dual MP23DB01HP MEMS daughter board with the STM32N6570-DK (by connecting to CN5). I looked at the STM32N6570-DK example project MDF_AudioRecorder and noticed that for using on board MIC (only one micophone) it uses instance0 (MDF1_SDIO, Pin PE8) with the following configuration:Bitstream Matrix: Falling frontInterleaved mode: No (which makes sense since it uses only one MEMS microphone)Since the STEVAL-MIC008A includes two microphones that share the same data and clock lines, can I still use instance 0 to receive interleaved data (left and right channels) from the STEVAL-MIC008A, or do I need to enable instance 1 as well?
Hi all,Is there documentation that shows the ThreadX functions with an explanation of the function's parameter? and which are mandatory and which optional?This is an example of a simple function call generated by cubeMX: /* Create tx first thread. */ tx_thread_create(&tx_app_thread, "tx first thread", tx_first_thread_entry, 0, pointer, TX_APP_STACK_SIZE, TX_APP_THREAD_PRIO, TX_APP_THREAD_PREEMPTION_THRESHOLD, TX_APP_THREAD_TIME_SLICE, TX_APP_THREAD_AUTO_START) I can tell what some of the parameters are by looking at their name but not all of them. I read "Azure RTOS ThreadX User Guide" from Microsoft. I've looked at the STM32 wiki and the threadX documentation on github but I can't find a document just for the functions calls (threads, semaphore, queues, etc) and its parameters (even a summary would be good). Is there such a document? Thanks
On a stm32u5, the SPI3 is in the SmartRun domain, which is designed to work down to STOP2 in autonomous peripheral mode with LPDMA. I'm now wondering if it is also possible to use SPI3 in autonomous mode with GPDMA but only to STOP1? Or do I need to use LPDMA to use SPI3 in autonomous mode regardless of the chosen stop mode?
Hello, I am using the Zephyr operating system with the STM32U5G9J-DK2 hardware. I intend to collect voltage data using the ADC, but so far, no progress has been made. Here are the steps I have taken: I used the zephyr\samples\drivers\adc\adc_sequence example from Zephyr 4.2.0. I created a new app.overlay file in the root Vmakelists.txt directory with the following content: / { aliases { adc0 = &adc1; }; }; &vbat1 { status = "okay"; io-channels = < &adc1 5 >; }; I compiled using this command:west build -p always -b stm32u5g9j_dk2 --sysbuild . Then I supplied 1V to the PA0 pin (silkscreen labeled PWM/D6), and the log is as follows: [16:22:28.487] RX←◆*** Booting Zephyr OS build v4.2.0 ***ADC sequence reading [0]: [16:22:29.493] RX←◆- adc@42028000, channel 5, 5 sequence samples: 2684 = 2162mV 1788 = 1440mV 1571 = 1265mV 1532 = 1234mV 1492 = 1202mV adc@42028000, channel 12, 5 sequence samples:
Hello Respected Members,I have a bootloader in CPU1 at address 0x08000000 and an image at 0x08024000. I have different BLE services in bootloader and in image. Problem is, once CPU2 has been started by bootloader, it jumps to image and hence the services of image cannot be loaded, BLE stack does not advertise. SHCI_SUB_EVT_CODE_READY event is never received in image as bootloader has already received it.I read about SHCI_C2_Reinit() in How to build wireless applications with STM32WB MCUs - Application note (AN5289). So, I called it in bootloader before jumping to image. But alas, I still did not get SHCI_SUB_EVT_CODE_READY. I need help in correct usage of this SHCI_C2_Reinit() so I can reinitialize different BLE services in image when jumping from bootloader.
Hi Team, Could you please assist me with the following situation: CANFD is working with FIFO0, but not with FIFO1, same config, using STM32G0B1KEU6. I am using same channel, FDCAN1. I will attach both files for refference. Thank you in advance, Aleksandar.
Hi, I'm on a applicaiton involving USBX MSC and FileX. The final memory for the application is a NOR flash so I also use LevelX.Acutally, I'm working on a nucleo-U575ZI-Q without NOR flash so I use NOR Simulator on LevelX.My problem is that a file created with FileX is detected by windows, have the right number of bytes but data are wrong.My program do this:1) FileX format the device2) FileX create the file STM32.TXT and put the data "This is FileX working on STM32". I can see this data on the RAM3) FileX close and open the file STM32.TXT and I can read the text4) FileX close the media.5) USBX open the media and on Windows I see the file STM32.TXT but data are not correct. It's like if this data comes from another part on my RAM.When the device is connected to a computer, I can create new file, write on it then unplug / plug USB and the new file is still here. I can also edit STM32.TXT.Has somebody an idea about why FileX can read right data but windows doesn't read
I'm using an STM32H735 microcontroller as the main application processor, connected to an STM32WB05N (Nucleo-WB05KZ) Bluetooth module via UART.Connection:STM32H735 USART1 ↔ STM32WB05N USART1Baud rate: 115200, 8N1, no flow controlPhysical connection: Direct UART TX/RX between the two MCUsSoftware Architecture:STM32WB05N Configuration:Running BLE_TransparentMode firmware (prebuilt from STM32CubeWB0)Configured as Host + Controller mode (full BLE stack on WB05N)Acts as a network coprocessor / transparent BLE bridgeHandles all BLE stack operations internallySTM32H735 Configuration:Main application processorSends ACI/HCI commands via USART1 to control the WB05NReceives HCI events from WB05N with BLE status and dataImplements application logic and decides when to use BLE servicesCommunication Protocol:The H735 controls the WB05N by sending standard Bluetooth HCI commands and proprietary ACI (Application Controller Interface) commands over UART:[H735 Application] --ACI/HCI Commands--> [WB05
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.