Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
Hi,I have been trying to communicate with an SPI peripheral (NOR Flash). I want to use SPI in half duplex mode. The problem is that as soon as enable the SPI peripheral I see SPI constantly sending OxFF over MOSI even though I have not written anything on the SPI DR register.Pasting the screenshot of the Salea LABelow is the simple SPI TX code void SPI_SendData(uint8_t* Txdata, uint32_t len) { if((spi_dev->SR & TXE_FLAG)) { spi_dev->DR = *(uint8_t*)Txdata; Txdata++; len--; } if(!(spi_dev->CR1 & SPI_EN)) { spi_dev->CR1 |= SPI_EN; } while(len > 0) { // Wait for TXE FLAG if((spi_dev->SR & TXE_FLAG)) { spi_dev->DR = *(uint8_t*)Txdata; Txdata++; len--; } } }Edited to apply source code formatting - please see How to insert source code for future reference.
I have ordered NUCLEO-G491R to test STANDBY mode power consumption. The power consumption measurements are taken via the PPK2 from Nordic.https://www.nordicsemi.com/Products/Development-hardware/Power-Profiler-Kit-2The steps:1. Take STM32CubeMX example project PWR_SHUTDOWN that is available for the Nucleo board.2. Program the board (ensure the JP5 jumper is at the 5V_STLK position)3. Remove the JP5 jumper because we will be powering the board via the external 3V3 (PPK2) 4. Connect the PPK2 to 3V3 and GND on the board. 5. Start samplingSee the results below:When the device enters STANDBY, the current consumption is measured at about 1.5mA which is way above what is declared on the datasheet.What could be the reason that I cant achieve the declared current consumption for the STANDBY mode via the official example project? I am convinced that measurements of the PPK2 are valid as I have used this board in the past to measure very low currents and it was showing reasona
Dear ST Support Team,We are using the STM32N657X0H3Q1 microcontroller with the XSPI1 interface and have connected two external memory devices, each with an 8-bit data bus.As described in the STM32N6 reference manual (XSPI dual-octal configuration), the two 8-bit memories are connected in parallel and together form a 16-bit wide external memory interface, sharing a single NCS signal.In STM32CubeMX, what we have configured the XSPI peripheral as attached below.And XSPI clock we set as 140mhz.Could you please confirm whether this STM32CubeMX configuration is correct? If there are any additional settings or recommended , kindly let us know.Thank you for your support.Best regards,siddu marka.
Hello everyone,I am facing severe stability issues with a Nucleo-WB55RG project generated via STM32CubeMX (FW Package V1.24.0).The Core Problem: The device advertises and connects, but suffers from random "Silent" Disconnections (no event generated) - connection loops and eventually complete silent (advertisement doesnt start after disconnection). This happens in multiple scenarios, including simple idle connections and bonding attempts.Detailed Scenarios:1. Scenario A: Idle Connection (Without Bonding)I connect using the ST BLE Toolbox app and leave it idle.Behavior: After a random period (non-uniform time), the device automatically disconnects, reconnects, and enters a loop.Observation: Even without initiating bonding, the link is unstable.2. Scenario B: Pairing via Android Bluetooth SettingsI go to Android Settings > Bluetooth and tap the device to Pair.Behavior: The phone displays "Pairing..." indefinitely.Observation: The UART logs show "BLE Connected", but the handshake never
Hello!I am in the progress of setting up a Yocto based build for a custom board based on a STM32MP157C. I am using "vanilla" Yocto scarthgap with the respective ST meta layer: https://github.com/STMicroelectronics/meta-st-stm32mp meaning I created a custom machine and am patching my own device trees into the meta-st-stm32mp layer.Currently I am trying to port my device trees for TF-A , OPTEE, U-Bboot and Linux, that were originally created for an SDK based build, to the new environment. I am using the regular "optee" bootscheme in my custom maschine.conf with EMMC as boot device.The build already succeeds but when I try to program the contents of my .tsv via Cube32Programmer I get a "iwdg1" reset when the bootfs is downloaded:UPLOAD ... done Ctrl+C to exit ... #DOWNLOAD ... OK Ctrl+C to exit ... # UPLOAD ... done Ctrl+C to exit ... # UPLOAD ... done Ctrl+C to exit ... ###D/TC:0 gic_native_itr_handler:678 Special interrupt 1023 D/TC:0 gic_native_itr_handler:678 Special interru
Hello Sir,I urgently want to have an idea whether due to the change of LCD from HT043C KunJjian to RK043FN48H-CT672B Rocktech in 32F746GDISCOVERY Board, is there any changes in the firmware due to this?I would like to request for early response from your team, thanks for your support in advance.Note: From the post only I got a point that RK043FN48H-CT672B Rocktech changed from HT043C KunJjian, 32F746GDISCOVERY B02 and C01 - what's the differen... - STMicroelectronics CommunityBest RegardsSushant Verma
I'm experiencing a HardFault that occurs always on cold boot (after the board sits unpowered for ~1 hour). It also occurs sometimes when flashing and immediately running from the debugger.I'm using FreeRTOS, and I've noticed that commenting a task, flashing the new firmware, no hard faults. De-commenting the same code, flashing again, problem solved (with debugger on).I exit the debugger and try to power cycle the device, all works.After the board sits unpowered for a certain time and I try to turn it on, Hard Fault again.The issue is always the same CFSR.IMPRECISERR (imprecise data access error)I managed to have a call stack and the assembly codeCFSR.IMPRECISERR (imprecise data access error) PC = 0x70017DD2 Stack trace: HardFault_Handler <Exception frame> touchgfx::LCDGPU2D_AXI::blitCopyCompressedRGB565_16BPP() + 0x69d0x7001'7dca: LDRGT R2, [SP, #0x1c] ; Load scratchBuffer address 0x7001'7dcc: STRHGT.W R10, [R2, R5, LSL #1] ; Store halfword 0x7001'7dd0: ADDGT R5, R5, #
Hi,I have 3 radio-buttons in a custom container which is present on several screens.I would like the radio-buttons to keep their states between when switching screens.I have the radio-buttons states reported to the model every time a button is pressed and when the screen changes, the new active view fetches the radio-button state.However, I do not see a function to update a radio-button state without triggering the button action.Is there such a function?
Hello, I bought original STEVAL-FCU001V2 board and STEVAL-DRONE02. When I tried to connect via Android app for the first time to the STEVAL-FCU001V2 board, I successfully connected. Later I forgot battery connected to the board and battery became useless. Then I bought new 1S lipo battery and run the board again but app does not find bluetooth connection anymore. I used the board with some custom softwares; ran motors, collected data from IMU sensor successfully, but I have no idea about bluetooth module. I sucessfully builded original STSW-FCU001 after fixing some simple errors and installed to the board but it still does not find connection. I have not enough knowledge to fix codes about bluetooth, I bought it to learn at all. Did anyone else face with same problem and solve it?
Good day,I've been working for a little on this and can't wrap my head around what the issue is, so figured I'd post here. As a start I'm doing a graduation project from a computer science education and am working on a project that requires a high speed usb to be implemented on a nucleo h755ziq. There are other pieces in play, but those have been disconnected to try and get this one part to work. To make this work I have the nucleo board and a usb3300. This usb3300 has been put on a board and connects to pins placed on the nucleo. I have quadrouple checked the pins and they are all correct. In CUBEMX I setup the USB_OTG_HS external PHY to device mode, as ill be using it as a device which will be detected by an application later in development. I have also set the middleware up for Virtual Com Port as shown below.My pinout is also setup correctly, but for the sake of detail here is the pinout.I have set up the clock for the stm to 192MHZ due to the other components that will b
Not always, but sometimes syscalls.c file is removed upon generating code for X-CUBE-AI middleware.I'm using STM32N6570-DK board and the version of STM32CubeMX is 6.16.1 for Windows 11.
I downloaded CubeMX and I followed the instructions on the attached Readme.html.I run it by ctrl-click and then select Open to mark the author as trusted, but then nothing happens. Does anyone encountered the same problem? How did you solve it?
I am having an issue where, when I read the values of the registers continuously, it seems as if the values of the current and power registers have been swapped. After startup, I send the following configuration via i2c:Configuration register write 0x8000 -> to reset the ICConfiguration register write: 0x0037 To continuously measure all values with a period of 1024 ms.Shunt register write: 0x080b -> 0.03 OhmMask register write: 0x0200 -> To enable conversion ready interrupt. Then, when the conversion ready interrupt comes, I read the registers from 1 to 5 at once. From the values read, it appears that the value of register 3 is the current and the value of register 4 is the power. (It looks like they position swapped.)Another interesting fact is that the data read from the power register is exactly half of the actual value. Has anyone else encountered this problem?What could be the cause? Am I overlooking something? Thank you for the support!
Hello,I am designing a board with an STM32H755ZIT6 and want to verify whether my power architecture is safe.Power architecture:Battery inputTwo buck converters:3.3 V buck → MCU VDD5 V buck → LDO + voltage reference → VDDA and VREF+Operating case:For a certain battery voltage range:3.3 V buck is enabled5 V buck is disabledResult:VDD = 3.3 VVDDA and VREF+ = 0 VRelevant datasheet sections:Power supply management (3.5):When VDD > 1 V, all power supplies are independent (except VDDSMPS).Absolute maximum ratings (6.2):“All main power (VDD, VDDA, VDD33USB, VDDSMPS, VBAT) pins must always be connected to the external power supply, in the permitted range.”All conditions appear to be met, but I want to make sure I’m not missing anything, especially since I remember other STM32 families where powering VDD without VDDA is problematic.Question:Is it safe and within spec on the STM32H755 to have VDD powered while VDDA/VREF+ are unpowered, assuming no analog peripherals are used?I would like to co
Hello everyone!That works:int main(void) { ... init_SPI1(); for(;;) SPI1_Send(); }And that doesn't:void TIM2_IRQHandler(void) { SPI1_Send(); TIM2->SR &= ~TIM_SR_UIF; // reset UIF bit in the status register of the timer }Why?Thank you very much!
Hello!I'm working on a project to use some bar-displays 284x76 pixels using ST7789 driver and I'm struggling for about 2 weeks to solve this issue. Everything is perfect using SPI DMA HAL_SPI_Transmit_DMA() if the buffer is in RAM.But if I define a struct like this in file image.h:typedef const struct { const uint32_t width; const uint32_t height; const uint32_t bytes_per_pixel; const uint16_t pixel_data[]; // Array flexibil (C99) } ImageRGB565_16bit; Then in FCU.h I have:#include "images.h" extern ImageRGB565_16bit FCU01; extern ImageRGB565_16bit FCU02; extern ImageRGB565_16bit FCU03; extern ImageRGB565_16bit FCU04; extern ImageRGB565_16bit FCU05; And loading images like this FCU.c:ImageRGB565_16bit FCU01 = { 284, 76, 2, { 0x0000, 0x0000, 0x0000, .. } };When I run the code I'm getting this result on Serial port:FCU Background with alpha 0.2 FCU = 0x80313a4 FCU.pixel_data = 0x80313b0Which looks like the struct resides in FLASH memory.But the HAL_SPI_
Im an engineering student and wanted to dive into PCB designs, so I started off with a PCB design for a vibration monitor system that i first built on arduino. This is my first ever PCB design which I made using reference/data sheets and whatever resources I could find online. Before I started routing I was wondering if could get some feedback on my current design especially for the power supply and decoupling placement, crystal and NRST implementation and general PCB placement issues before routing. Any advice is much appreciated. I am usingSTM32F103C8T for my MCUMPU6050 for the sensor.Screenshots of the Schematic, PCB and pinout are below.
HelloIs there a book about Cortex M7 like Yiu J. The Definitive Guide to ARM Cortex M3 and Cortex M4 Processors ?
Hello I'm trying read sector numer 0 from SD card. I use 4-bit mode for sd card reading. My MCU is on Nucleo development board. Card is correctly initialized but when I'm trying read sector I get zeros in buffer and maybe 10 random not-zero bytes. What do I incorrect?After restart I get the same values when I use the same sd-card. But when I use other card - I get other incorrect data.
MT tools is mess of Eclipse-RCP based tools (CubeIDE) and tools with hand-made GUI, whichresembles GUI of 90x (CubeMX, CubeProgrammer).Hand-made GUI applications has a lot of code which can be thrown out after switch to Eclipse RCP.Anyway, CubeMX is Java GUI application. CubeMX and CubeProgrammer has primitive Java GUIdeveloped from scratch.Instead of use a lot of existing functionality of Eclipse RCP, developers had to write own codeand invent a lot of wheels. It increase costs of development and maintanence.It is not much effort to move CubeMX functionality to Eclipse RCP application.A lot of code can be thrown away. It will decrease costs.With Eclipse 4 one can make GUI XML model with visual tool and make several simple adaptersto inject existing Java panels in corresponding model views.With such approach MX-relative perspectives can be used as standalone application and used withany IDE. And can be integrated in CubeIDE.It is very flexible solution. Current CubeMX is old monolithic
Hello, I'm trying read core temperature. I use NUCLEO-U575ZI-Q board. I wrote code: RCC->AHB3ENR |= RCC_AHB3ENR_PWREN; PWR->SVMCR |= PWR_SVMCR_ASV; RCC->AHB2ENR1 |= RCC_AHB2ENR1_ADC12EN; ADC12_COMMON->CCR |= ADC_CCR_VSENSEEN; ADC1->CR &= ~ADC_CR_DEEPPWD; ADC1->CR |= ADC_CR_ADVREGEN; while(!(ADC1->ISR & ADC_ISR_LDORDY)); ADC1->CR |= ADC_CR_ADCAL; while (ADC1->CR & ADC_CR_ADCAL); ADC1->CR |= ADC_CR_ADEN; while (!(ADC1->ISR & ADC_ISR_ADRDY)); ADC1->DIFSEL = 0; ADC1->PCSEL = ADC_PCSEL_PCSEL_19; // preselection ADC1->SQR1 = (19 << ADC_SQR1_SQ1_Pos); ADC1->SMPR2 |= (7 << ADC_SMPR2_SMP19_Pos); // max sample time ADC1->CR |= ADC_CR_ADSTART; while (!(ADC1->ISR & ADC_ISR_EOC)); uint16_t raw = ADC1->DR; volatile float temperature_c = ( (float)(raw - TS_CAL1) * (130.0f - 30.0f) ) / (float)(TS_CAL2 - TS_CAL1) + 30.0f;Unfortunately it doesn't work correctly. ADC1->DR returns
I am using an STM32L433 with a W25Q128JVSIQ flash.I can read and write data but the W25Q does not seem to respond to the power down command.When I send the power down command 0xB9, reading data from the W25Q should not be possible until the release command 0xAB is sent. However, I am not sending this release command but can read data from the W25Q, which indicates it did not enter power down. Below is a scope capture of the power down command and it looks correct...I am using the following driver for the W25Q...https://github.com/mengguang/w25qxxBelow is the function I wrote to power down the W25Q... #define W25QXX_POWERDOWN 0xB9 void w25qxx_powerDown(W25QXX_HandleTypeDef *w25qxx) { uint8_t tx[1] = {W25QXX_POWERDOWN}; cs_on(w25qxx); w25qxx_transmit(w25qxx, tx, 1); cs_off(w25qxx); }I even tried adding a delay (1ms) before the CS pin is raised high after the 0xB9 command has been sent, but it still did not enter power down.With a previous setup I had many
IAR version: 9.70.2Board: MB1930-N6570-C02Project: STM32Cube_FW_N6_V1.2.0\Projects\STM32N6570-DK\Templates\TemplateBoard is in DEV mode, LED2 is on after reset.Hi, I'm unable to debug the template project, once debug session is launched the core just stucks in the bootrom:Also there are some error in the log:Sat Jan 31, 2026 12:25:55: IAR Embedded Workbench 9.70.2 (C:\iar\ewarm-9.70.2\arm\bin\armproc.dll) Sat Jan 31, 2026 12:25:55: Loaded macro file: C:\iar\ewarm-9.70.2\arm/config/debugger/ST/STM32N6xx_DBG.dmac Sat Jan 31, 2026 12:25:55: Loaded macro file: C:\iar\ewarm-9.70.2\arm/config/debugger/ST/STM32N6xx_Trace.dmac Sat Jan 31, 2026 12:25:55: Loaded macro file: E:\mcu\STM32Cube\STM32Cube_FW_N6_V1.2.0\Projects\STM32N6570-DK\Templates\Template\EWARM\FSBL\setup.mac Sat Jan 31, 2026 12:25:55: PC-locked license - IAR Embedded Workbench for ARM Sat Jan 31, 2026 12:25:57: Connected to ST-LINK/V3 [SWD mode 1000 kHz] [Access port: 1] Firmware V3.J17.M10 (Probe no: 002900304142
Dear Sir/Madam,We used the STM32F429ZIT6 processor in a project we carried out for the railway sector, and as stated in the link below, we currently need a SIL certificate to be able to submit it to the auditing firm.Link: https://www.st.com/resource/en/product_presentation/stm32_stm8_functional-safety-packages.pdf
Hi all, Im currently designing my own pcb with a STM32WBA65CIU6 MCU in the UFQFPN48 package.Im doing this for the first time (still gaining all the knowledg needed) and currently ran into the following problem:I'm having trouble understanding the footprint and EDA symbol given for the STM32WBA65CIU6 on the product site and shop. According to those, eg OSC32 are Pins 16 and 17:But according to the data sheet and also in CubeMX the OSC32 should be pin 19 & 20: Is this not a problem and can be solderd anyway? Also some other pin names are also missmatched :\Thanks for the help :)
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.