Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
There are two situations where I'm unclear on how CAN filters would behave. 1. Direct ConflictOne filter says reject 0x0 to 0x123One filter says send 0x0 to 0x123 to FIFO0 2. Different behaviour for a subset of messagesOne filter says send 0x0 to 0x123 to FIFO0One filter says send 0x0 to 0x012 to FIFO1 Is there a filter priority, or is this undefined behaviour? I assume this depends on the CAN controller, so in my case I'm using the STM32G474, but I'm curious if most controllers have similar behaviour here.
I am currently working on a revamped version of the LVGL MicroPython binding. My goals are to make it easier to compile and also easier to use. The "official" binding only has support for SPI displays and the STM32 line of MCU's are capable of interfacing with many other types of displays that are made.The official binding requires different drivers for specific display IC's and those drivers are written for use with specific MCU's. The drivers all have a different API which leads to quite a bit of confusion when trying to use it. This is one of the major issues when using the official binding.What I have done to make things easier is I have split a "display driver" into 2 pieces. One is the code needed to initialize a display IC and the other is the driver for the actual connection type used the display IC driver code is written in Python while the "bus" code is written in C. The bus code is written so there is an intermediate layer that allows access to it from Python code.I am not f
Hi everyone,I'm using the NUCLEO-H755ZI-Q board and I’m a bit confused about its Ethernet support.The user manual (MB1363 Rev C) shows that both H745ZI-Q and H755ZI-Q support Ethernet using the LAN8742A PHY. It also lists jumpers and solder bridge settings for enabling RMII.But when I checked my H755ZI-Q board, it looks like the PHY chip and RJ45 connector are not soldered. So now I’m not sure:Does the H755ZI-Q actually support Ethernet out of the box?Or is Ethernet only available on the H745ZI-Q version?Would appreciate any help or clarification. Thanks!
tldr; if you're using a task to service the touchscreen (do the I2C reads/writes), how do you ensure it plays well with TouchGFX? I am finding that it would have to consistently run faster than TouchGFX (and perhaps be a higher priority) to be able to get it a new (x, y) coordinate every tick, so that TouchGFX doesn't consider the touch to be over and release the click.Long version:I am using a touchscreen with a GT911 controller on a custom ST board. We initially architected it such that a touch generates an interrupt, and in that interrupt we do two I2C reads and one write. Bad practice to do anything long in an interrupt, I know, but we were following guidance that we found elsewhere. This is what our ISR did:// Function to read out touch coordinates when a rising edge is detected on CTP_INT. // This is called from the CTP_INT GPIO ISR. bool Touch_Callback(void) { uint8_t number_of_coordinates; uint8_t point_info; // Read the touchpoint information register bool success =
Hi team, Please suggest a MCU which has to support Motor control ,Lockstep, Matlab and with ASIL D compliance for the eVTOL application(65Kw motor). Thanks & RegardsJayakeerthana P
Can we use STM32N series high end crypto version in medical devices? Currently we are using H series from ST but we are facing some issue in CPU utilization and speed. Apart from external flash is there any major difference where N series is lagging with respect to H series part?? Is there any limitation to use N series in MATLAB?? Any limitation to us Link for n serieshttps://www.st.com/en/microcontrollers-microprocessors/stm32n657x0.html Br,DJ
Hi All, Using STM32CubeProgrammer with the ST-LINK in SWD mode.If the RDP flag is set to 0xBB (level 1) and programmed the programmer can no longer connect to the device.How can I reconnect to the device to set it back to 0xAA? _Carl_
Hi,We are encountering a partial screen flickering issue when using a custom HMI with TouchGFX and double buffer enabled. The screen resolution is 800x480, but only the left portion (480x480) displays correctly. The remaining 320x480 area flickers during runtime, especially when updating data on the UI.Key Observations:This issue occurs only when double buffering is enabled.In single buffer mode, minor flickering is still present, but it's significantly better than dual buffer mode.The issue is isolated to our custom board and BSP configuration.Cross-Test:We tested the same TouchGFX button example on two different displays:Custom Display Board – 800x480 (TFT-LCD, TST070WVBE-31)→ Flickering observedTest Board – 1024x600 (other manufacturer)→ No flickering observedThe main difference:Custom board: TouchGFX + BSP drivers (manually configured)Test board: Fully CubeMX-generated configurationSystem Configuration:MCU: STM32H750Display: TFT-LCD (TST070WVBE-31), 800x480, RGB888TouchGFX: 4.24.0S
Hello ST,The STM32N6 Datasheet (DS14791 Rev 2) claims that the device has 1 HR Timer and 4x 32-bit General Purpose Timers, yet the Functional Overview section does not support these claims. Nor does the Reference Manual (RM0486 Rev 1). Could you please cdis-ambiguate for us, and mark the incorrect documentation for revision?Also, is it really true that the DP-FPU capability is not present:-(Thank you!Regards,Dave
Hello,Working on STM32F767BITx and using Free RTOSEnable USART2, here is the init codestatic void MX_USART2_UART_Init(void) { huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_RS485Ex_Init(&huart2, UART_DE_POLARITY_HIGH, 0, 0) != HAL_OK) { Error_Handler(); } }So I can see even just after init or even after some times, the gstate == 0x20 always, and thats why unable to transmit any message over uart as it is not ready.Please guide me what is missing here.Thanks,Nitin
Hi,I am trying lock a portion of Flash memory using WRP(Write Protection). when I am configuring the Option bytes for WRP. I am using STM32L443VC MCU and I have multiple questions:1. Which area to select WRPAreaA or WRPAreaB for page 0 to page 11 because there is no division of area given?2. I am trying to lock from page 0 to page 11 in the flash memory but I am seeing different values even after OBL launch:example: WRPStartOffset = 0x80 (Expected: 0x00) WRPEndoffset = 0x0B (Expected: 0x0B)This is because in the reference manual I see FLASH_WRP1AR reset value is 0xFFXX FFXX and in the register value is 0xFF00 FFFF. If I use Register value got 0xFF0B FF80 instead of 0xFF0B FF00. if I assume 0xFF00 FF00 i am getting 0xFF0BFF00. Even I tried for different page offset still I am seeing Startoffset value different. Please check the attached snapshots for your reference.3. I am using segger jlink to flash the code and Please l
Hello everyone,I'm observing inconsistent FLASH ACR EMPTY flag behavior on two STM32G070RB chips (DEV_ID 0x6460) after a full chip erase by using STM32CubeProgrammer]Observed behavior:STM32G070RB (REV_ID 0x2000): After full erase, FLASH_ACR EMPTY flag correctly sets to '1' (chip boots into system memory). This is the expected behavior.STM32G070RB (REV_ID 0x2001): After full erase, FLASH_ACR EMPTY flag remains '0'. The chip attempts to boot from main Flash (0x08000000) despite being empty, leading to unexpected behavior.Questions: Is there a documented difference in the Flash empty check mechanism or FLASH_ACR EMPTY flag behavior between STM32G070RB REV_ID 0x2000 and REV_ID 0x2001?Are specific option byte settings or erase sequences required for REV_ID 0x2001 to correctly assert the EMPTY flag after a full erase? (I have tried power cycling.)Thanks,Tomislav
Hello team,We are working with the STM32F777Zi microcontroller and the ADS131M08 ADC. An isolator, the ISO7762DWR, is connected between the ADC and the microcontroller. We have configured two ADCs on a single SPI line.Our design functions correctly with the following specifications:ADC1-Channels used: 4SPI Clock: 13.65 MHzSampling Rate: 4000 SPSADC2-Channels used: 8SPI Clock: 13.65 MHzSampling Rate: 4000 SPSHowever, we have recently received a new batch of the same ISO7762DWR ICs, which has impacted our system's performance. We are unable to read ADC values correctly at the above clock speed and configuration.During troubleshooting, we found that reducing the SPI clock to below 6.5 MHz allows us to receive ADC readings. In this scenario, ADC1 (4 channels used) works fine, but ADC2 (8 channels) returns random values.Could the lower SPI clock frequency be affecting the accuracy of the ADC readings? Also, does the number of channels used at the reduced frequency impact the ADC values?We w
i use my customed STM32L431 to create a TouchGFX project and have some error after compiling as follows:Generate Assetsmake -f simulator/gcc/Makefile assets -j80 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487AllocationBase 0x0, BaseAddress 0x60EA0000, RegionSize 0x160000, State 0x10000D:\TouchGFX\4.18.1\env\MinGW\msys\1.0\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0simulator/gcc/Makefile:32: recipe for target 'assets' failedmake: *** [assets] Error 1FailedFailed
Hello All,I am very worried about this as time is short.I am attempting to get my STM32L073RZ into low power mode using STM32CubeIDE version 19, and it wakes as soon as it sleeps. I am wondering if this is a problem with my code, or possibly an issue with the STM32CubeIDE?I am attempting sleep mode like so:void Enter_Stop_Mode(void) { ConsolePrintf("Preparing to enter Stop mode\r\n"); // Clear Wake-Up flag __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF); ConsolePrintf("RTC Wake-Up flag cleared\r\n"); // Enter Stop mode (low-power mode) ConsolePrintf("Entering Stop mode\r\n"); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); ConsolePrintf("Exited Stop mode\r\n"); } And this fails. Am I the only one experiancing this, how have others got this working?Are there any examples I could go off of?For more context, here is my repo: https://github.com/CropWatchDevelopment/tempSensorx2If anyone could help, I would be very greatful.-Kevin
Hi everyone,I'm developing a bare-metal application with an STM32H725RG MCU using STM32CubeIDE (including HAL and code generation).I want to use the IWDG1 for reliability purposes, but for some reason, it seems to not work for me at all - upon startup, the MCU enters the Error_Handler loop, due to the HAL_IWDG_Init call returning HAL_TIMEOUT.In particular, I enabled the IWDG1 in the .ioc file editor, so it gets initialized and enabled by the generated HAL code. This enables the LSI as expected (RCC_CSR = 0x3), and I can confirm that the LSI itself works by outputting it to the RCC_MCO_2 pin.However, the initialization of the IWDG doesn't seem to complete. As far as I can tell from debugging, all the initial writes to IWDG_KR work as expected, and IWDG_PR and IWDG_RLR receive their correct values. This results in IWDG_SR = 0x3 as expected, which should go back to 0x0 within a few LSI cycles as the changes are applied - but this never happens. Instead, IWDG_SR remains at 0x3 permanently,
Hi,I'm currently using a custom board containing a WB55 chipset. My application running on this uses the Thread (open thread) FTD firmware (v1.23.0.0) My understanding is that given a fixed mesh local prefix calls to otThreadGetMeshLocalEid should return a consistent value through reboots. This does not seem to happen as otThreadGetMeshLocalEid returns a different address each time. Note, thread starts and is usable I'm just not getting a stable address. I'm not using COAP - straight Thread (not Matter) and I can get communication across the network so my basic setup is ok. Information on this subject is scarce and sometimes vague. Can you clarify - Should otThreadGetMeshLocalEid return a stable address across reboots. I'm not able to upload my source.CheersAndy
Hello ST Community,I’m working with an STM32WB55RG NUCLEO board and following the P2P Client tutorial. I’ve encountered an issue where my smartphone(ST BLE Sensor app) is not able to discover the board1. Hardware & Project• Board: NUCLEO‑WB55RG• Example: P2P Server (found in P-NUCLEO-WB55.Nucleo folder)2. FUS / BLE Stack Upgrade• Files used:stm32wb5x_FUS_fw.binstm32wb5x_BLE_Stack_full_fw.bin• Uploaded via STM32CubeProgrammer with “Start address automatic determination” - When I manually enter the address refer to Release Note, there was an error message "no mage found", but Firmware successfully updated when using automatic determination mode.3. Observed BehaviorAfter the upgrade and code upload, the board powers on, but my smartphone does not see any BLE device advertising.No new entries appear in the phone’s Bluetooth list.+ All the programs are up-to-date Any guidance on how to get my STM32WB55RG NUCLEO advertising would be greatly appreciated. Thank you in adva
Hello Friends,Most STM32 based Evolution / Development Board has Crystal 32.768 Khz and Boot switch connected. In my Custom design board , I do not need RTC Function and Bootloader to load.8 Mhz Crystal is used for Master Clock. Can I remove 32.768 khz Crystal and Bootloader Switch from Boot0 pin ?What should be default level maintain on these pins after removing both ?
Hi, IM USING EXTERNAL CRYSTAL NX2016SA-25M-STD-CZS-1 IN HSE 25MHZ AND LOAD CAPACITOR 10pF ,BUT I'm TRY TO USE EXTERNAL CRYSTAL IT CAN'T ENABLE . LSE 32.768kHZ ALSO NOT WORK ,HOW TO ENABLE THIS EXTERNAL CRYSTALS .MY CONTROLLER PARTNUMER IS STM32H753VIT6, and also im shared schematic please refer!reply do action!
Hello All, I am trying to do a loopback test between 2 i2c's on the same board, using bare metal coding and interrupts, and the clk is HSI, 16MHz. How the i2c i configured as slave is failing to acknowledge the address sent by master i2c.Here is a zip file containing the project.
Hi,I'm using an STM32F746G-DISCO board and I'm just trying to build a build a simple project with LWIP and FreeRTOS using CMSIS V2 however after enabling the minimum hardware using CubeMX I am unable to get any ping replies from the board. If I use CMSIS V1 for the config, then the board responds with ping.The reason why I want to get this working with V2 is that I'm planning to use TouchGFX in my project and when creating project using the TouchGFX, it defaults to CMSIS V2 and I've not seen any option to change that. I've tried generating project using TouchGFX and then changing it using CubeMX to CMSIS V1 however then the project falls apart and it seems like HAL_Delay which is used in some of the initialisation functions stops working.I'm using CubeIDE 1.16.0.Attaching the project for reference.
I am working on STM32H7B3I-DK with Touchgfx interface (using FreeRTOS ).The project was working well ,where the loading and running was successful but we started facing "Failed to Execute MI command" issue while loading. At end we created new project from scratch and it worked well. But after working fine for 2 day, with given no change or modification , the next very day while loading at first attempt ,we again started to face the same error. The error itself is not consistent Kindly note that we are using on board ADC and the same project (with same configurations) but has no Touchgfx or any FreeRTOS is loading and running fine.Kindly find the uploaded error message image and hardware configuration file (.ioc) for reference
Hi,I am using NUCLEO-H753ZI board. My ZIPPED project is attached.ADC1 Rank 1 Channel 10 Rank 2 Channel 5ADC2 Rank 1 Channel 10 Rank 2 Channel 15ADC3 Rank 1 Channel 10 Rank 2 Channel 2Channel 10's input: Positive side of 1.5VDC battery, whose negative side is connected to GND of the board.All other channels are connected to one side of 0.8VAC sine wave signal, whose other side is connected to the positive side of the above .5VDC battery.The three arrays are defined for ADC1, ADC2 and ADC3 in below:static uint16_t adc_value1[NUM_SCANS * NUM_RANKS] __attribute__((aligned(32)));static uint16_t adc_value2[NUM_SCANS * NUM_RANKS] __attribute__((aligned(32)));static uint16_t adc_value3[NUM_SCANS * NUM_RANKS] __attribute__((aligned(32)));Three flags are set up for DMA completion in void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)Problem: in DEBUG Mode,, when DMA is completed, the data in the above arrays is inconsistent with the data in the dump output window "Details:{1116,...". Look lik
Hello everyone,I'm developing an application using USBX CDC ACM class in standalone mode. I've written an execution loop for scheduling USB stack operations and there are no problem with READ transaction; i'm able to receive correctly every data from my host pc.There is a problem or perhaps my misunderstanding on WRITE transaction (i mean from STM32 device to host pc). I'm not sure how to interpret state returned by ux_device_class_cdc_acm_write_run function. The device receive a packet (few bytes from host) and it has to answer back few bytes. On first packet, my host receive every byte sent by device but when the host send another packet, the device will send back data but nothing is received; i need to send another packet to "push" data to host.It is not very clear (for me) what is the correct behavior in respect of ux_device_class_cdc_acm_write_run exit status.when device has to send N bytes so the write_run function is called with requested_length == N;the write_run func
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.