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 everyone,I'm working on a project involving the STEVAL-MKBox Pro and would love some guidance from the community, especially since I'm still relatively new to this ecosystem.Here's what I'm trying to achieve:• Configure sensors on the STEVAL-MKBox Pro via Bluetooth using PnPL commands• Control data logging (start/stop) remotely over BLE• Save the collected data locally on the SD card• Once logging is complete, transfer the data to a Raspberry Pi 4 via BLEThe reason I chose to log first and transfer later rather than streaming directly over BLE is the bandwidth limitation of BLE. My application requires high-frequency data acquisition, so buffering to SD card first and transferring afterward seems like the more reliable approach.My main question is: where should I start?Should I build on top of an existing firmware like FP-SNS-DATALOG2, or would it make more sense to start from scratch given my specific requirements?I have a basic understanding of the tools involved, but I'd re
HiHere is my scenario:I want to use USB Type C Connector for Power Delivery(upto 65W) and also, for communicating with STM32F767ZIT6 on my Hardware.Power Delivery is used to charge a 14.4V Li Ion Battery using Battery charger on my hardware. So, And USB Communication takes place with STM32F767ZIT6 Full Speed. Charging and Communication don't need to happen at the same time.So, USB-C Connector will either be used to charge the battery using a AC-DC wall adapter or communicate with STM32 on my hardware using a USB-C Cable from PC. Only one of these things will happen at a time. I was thinking of using STUSB4500 for Power Delivery such that it negotiates 20V, 3.25A with Wall Adapter but it looks like VBUS Sensing PA9 would be a problem when PC is connected(VBUS= 5V) or wall adapter is connected(VBUS= 20V).So, wondering if there are better/easier options to do this? Changing the STM32F767ZIT6 to something like STM32 UCPD MCUs is unfortunately not an option.
I think this is a very similar (perhaps the same) problem as described here. I replied to that thread but was asked to start a new thread - here it is. I'm reposting because I didn't feel the prior thread has a satisfactory answer (de-initialize and re-initialize the UART). HAL_UARTEx_ReceiveToIdle_DMA() seems to be intrinsically a very fragile function. If I call `HAL_UARTEx_ReceiveToIdle_DMA()` when the UART receive line is actively receiving data (when the other end is transmitting). A good percentage of the time it returns HAL_ERROR.I'm using STM32L4 HAL 1.13.6 (Cube 1.18.2).The problem is that the UART generates an overrun error immediately when `UART_Start_Receive_DMA()` enables the overrun error. The overrun error overwrites `huart->ReceptionType = HAL_UART_RECEPTION_STANDARD` which causes `HAL_UARTEx_ReceiveToIdle_DMA()` to return HAL_ERROR as shown in the code snippet from `HAL_UARTEx_ReceiveToIdle_DMA()` below: /* Set Reception type to
Hi everyone,I am currently looking into the STM32F303CCT6 and I'm a bit confused by the ADC specifications. ST's website mentions it can achieve up to 18 MSPS in interleaved mode. However, looking through the Datasheet and the Reference Manual (RM0316), I don't see a clear way to hit 18 MSPS at 12-bit resolution.I realize the hardware interleaved mode is only dual (e.g., ADC1/2 and ADC3/4). Since the documentation mentions dual mode can reach up to 9 MSPS at 12-bit, and there is no native quad-interleaved mode, I suspect one of two things:There is a way to manually coordinate the two dual pairs (using all 4 ADCs) to reach 18 MSPS at 12-bit.The 18 MSPS claim strictly refers to running a dual interleaved setup at a reduced 6-bit resolution.I would deeple appreciate some insight regarding if 18 MSPS at 12-bit is actually possible on this MCU, or if I am limited to the dual mode specs?Thanks in advance!
I am trying to use the microSD card on the STM32H753I-EVAL2 board with ThreadX and FileX.I generated the base project using CubeMX with the following configuration:Board: STM32H753I-EVAL2Peripheral: SDMMC1 enabledMiddleware: ThreadX + FileXOption "Is external transceiver present?" = Yes (since the board uses the IP4856CX35)Default CubeMX clock configurationHowever, the generated code fails during initialization at:HAL_SD_Init(&hsd1);inside:MX_SDMMC1_SD_Init()After debugging further, I found the failure occurs inside SD_PowerON() when sending CMD55 (APP_CMD).The error returned is:HAL_SD_ERROR_CMD_RSP_TIMEOUTFrom stepping through the code:SD_PowerON()-> SDMMC_CmdAppCommand()-> CMD55-> HAL_SD_ERROR_CMD_RSP_TIMEOUTSo the card never responds to CMD55.Additional observations: CubeMX configures the SDMMC1 kernel clock to 150 MHz. From the reference manual / datasheet, it seems the maximum SDMMC kernel clock should be around 125 MHz.I am not sure if this clock configurat
I've been able to get USB Host working on Nucleo F767I board, but I can seem to get it working on STM32WBA65RI part. I've tried the following two boards combinations:MB2130A on MB1801D (STM32WBA65I-DK1)MB21230A on MB2143A (Nucleo-WBA65RI) I've tried the following projects:STM32CubeWBA/Projects/NUCLEO-WBA65RI/Applications/USBX/Ux_Host_HIDSTM32CubeWBA/Projects/NUCLEO-WBA65RI/Applications/USBX/Ux_Host_HID_StandaloneMy own STM32CubeMX based project.I've done all my builds (both the working F767 and failing STM32WBA) using STM32CubeIDE. I've been able to build, flash, and debug into the executable in all cases. A fresh clone of STM32CubeWBA from github, I see the expected printed out:USB Host library started.Starting HID ApplicationConnect your HID Device**** USB OTG HS in HID Host ****However, plugging devices in CN9, does not result in them getting detected. Placing a breakpoint on _ux_hcd_stm32_interrupt_handler does n
Hello,I am trying to use the I3C interface between STM32H523 and DDR5 SPD. I have found a question would like to be answered: Is there any way to send the broadcase address (7'h7E) with SCL signal configured in I2C timing characteristics?According to MIPI I3C Basic specification v1.1.1, page 366, Table 86 I3C Open Drain Timing Parameters, note 9,The Controller uses this timing to send the first Broadcast Address after Bus initialization, in order to disable the I2C Spike Filter for applicable I3C Target Devices (see Section 5.1.2.2.2) (At least 200ns)I have selected the "Bus Characteristics" as "Mixed I3C and I2C" and "I2C Duty Cycle" to be 50% in stm32cubeIDE's "Pinout & Configuration -> Connectivity -> I3C1", It generates the code with "hi3c1.Init.CtrlBusCharacteristic.SCLI2CHighDuration = 0x7c;", which seens fine. But when I run the function "HAL_I3C_Ctrl_TransmitCCC", I found the waveform is different, the SCL high duration is actually controlled by th
Dear STM32CubeIDE Support Team,while analyzing the memory usage of my STM32 project, I noticed a potential inconsistency in how memory units are displayed in STM32CubeIDE.Both the Build Analyzer and the memory overview label the values as “KB”, but the reported numbers clearly correspond to KiB (1024 bytes) rather than kB (1000 bytes). This behavior matches the output of arm-none-eabi-size, which reports sizes in bytes.For example:arm-none-eabi-size reports Flash usage as:text + data = 64824 + 148 = 64972 bytesConverted to kB (1000 bytes), this would be:64.972 kBHowever, STM32CubeIDE displays:64972 / 1024 = 63.45 KiB, while labeling the unit as “KB”As a result, summing RAM and Flash values only produces consistent results when interpreting the displayed “KB” values as KiB. The current labeling can therefore be confusing, especially when documenting or comparing memory usage.I have attached two images that illustrate this behavior and show the comparison between arm-none-eabi-size and t
I'm reading RM0492 Rev 3 about I2C's controller transmitter. The original words on the page of 1185 areWhen RELOAD = 0 and the number of data bytes defined in NBYTES[7:0] is transferred: • In automatic end mode (AUTOEND = 1), a STOP condition is automatically sent. • In software end mode (AUTOEND = 0), the TC flag is set and the SCL line is stretched low, to perform software actions: – A RESTART condition can be requested by setting the START bit of the I2C_CR2 register with the proper target address configuration and the number of bytes to transfer. Setting the START bit clears the TC flag and sends the START condition on the bus. – A STOP condition can be requested by setting the STOP bit of the I2C_CR2 register. This clears the TC flag and sends a STOP condition on the bus. When a NACK is received, the TXIS flag is not set and a STOP condition is automatically sent. The NACKF flag of the I2C_ISR register is set. An interrupt is generated if the NACKIE bit is set. I'm co
Hi , I have developed a testcase where STM32H503 i3c is in target mode, requesting for controller role request that is going to controller (checked interrupt - Secondary Controller received Controller Role Request ) . After controller is sending GETACCCR command to target but in target side I3C_EVR.CCRUPDF bit is not set. Can you please guide me how to check CRR request.
Hello,the board type is STM32N647A0H3Q, and before creating the project it's already turn on the dev mode as shown below.To validate ST link work with my PC, the STM32 Cube Programmer successfully connected to the board.However, my Cube AI Studio unable to detect the board. Thanks and Regards.An5
This is looking for more info from this original post * https://community.st.com/t5/stm32-mcus-embedded-software/i-am-using-usb-pd-system-with-stm32g071rb76-processor-there-are/m-p/219760#M53483 With a stm32 chip with only one CC line could i connect both of the CC lines together. This is a DFP I don't need VCON support If i were to do this could i still figure out what the orientation is?
I’ve generated a project with Cube AI studio for a Nucleo N6 board, but , when I enable SAI2 peripheral in I2S mode, I notice from the oscilloscope that the bit clock line and FS line become corrupted/glitch when using NPU for inference, could somebody explain me why and how to solve it? I’ve used the same SAI configuration for another project without any AI algorithm and the signals from the pins are clean. I don’t know why, it’s a problem that I’ve been stuck for a month or so
Split from this post. Hello, Sorry to bother you again, but it seems that since yesterday (when I enabled the CAN bus), the UART on my Nucleo has stopped working, even though I haven’t touched anything since then. To be precise, I’m monitoring my UART signal and I’m only getting ‘framing errors’, obviously, I’ve checked and the baud rates are the same on both sides. Could activating the HSE clock have disrupted the operation of my UART ? Thank you in advance for your help,
Dear ST Community,I have successfully run the Object Detection Application on the STM32N6 Discovery Kit using the reference firmware from the STM32AI ModelZoo.As part of extending its functionality, I am looking to implement the following two features:Convert the captured RGB frame to JPEG formatStore the JPEG image onto the SD card available on the Discovery KitFor the RGB-to-JPEG conversion, I have referred to this JPEF Encoder example and integrated this JPEG encoding logic into the object detection firmware. Specifically, I am feeding the nn_in buffer (used as neural network input) to the JPEG encoder. However, during execution, the program gets stuck at this line:jpeg_encode_processing_end = JPEG_EncodeOutputHandler(&hjpeg);The jpeg_encode_processing_end flag is not being set to 1, indicating that the encoding process does not complete. I suspect either the JPEG input handling is not progressing, or the DMA isn't properly triggering the required callbacks.Could you kindly
Hi, I want to know when the C/C++ Indexer will be updated to the latest C standard, that is, C23? I want to use some new language features, like double square brackets for attributes, but it still shows a syntax error, even though the code compiles without problems.Also, I would like to know when GCC 15 will be available. Best regards,Artur
I've just installed the new STM32CubeIDE 2.1.0 and I came across some issues that didn't exist in previous versions.First, I noticed that the compiler always compiles all the source files even though only one source file was modified. I have large project with many source files and it takes about 2 minutes to compile all files. It's very annoying.Second, when launchinig debug session all the source files are compiled again. It didn't work that way in previous versions of STM32CubeIDE. If the files were compiled previously, the debug session was launched immediately.Is it possible to change this behavior but turning off some options or do I have to install older version of STM32CubeIDE ?
Hi, I’m trying to configure the FDCAN peripheral on a NUCLEO-STM32H72ZG board, but even though it works perfectly in loopback mode, it doesn’t work when I switch to normal mode. Even in external loopback, when I check with the oscilloscope I don’t see any activity on the TX pin (no signal transitions). The same issue occurs on this board also with GPIOs. I tried the same setup on a NUCLEO-STM32F303RE board (using CAN instead of FDCAN), and everything works perfectly there.
Dear all,I'm implementing Over-the-air firmware updates for a board using the STM32N657 MCU.In the Appli, I download the new firmware binary over Wifi and store it to RAM at a fixed location in AXISRAM5 and 6. In order to flash the new binary to the OctoSPI Flash I prepend a "magic" header to the new firmware binary (still in RAM) and then restart the MCU using `HAL_NVIC_SystemReset`. Then, after this reset the FSBL checks the fixed location in RAM for the "magic" header. If present, it should flash the OctoSPI Flash with the new firmware binary using the ExtMem Manager (I cannot just flash directly from Appli because I use XIP and hence the Appli is running from OctoSPI in memory-mapped mode, preventing writes). I've done similar things with other MCUs and it worked perfectly fine.However, it looks like on the STM32N6, the contents of AXISRAM5 and 6 are not preserved across software resets. At least, checking the "magic" header in FSBL always produces randomly looking results that are
A few days ago I updated STM32CubeIDE from version 2.0.0 to 2.1.0. (Build: 27993_20260219_1630 (UTC))Now there is a problem. There seems to be no longer any such thing as a "partial" build. Example: My project consists of about 50 ".c" and ".h" files. In the old version, if I edited one of the ".c" files and did a build, only the file that was edited got re-compiled, followed by (as expected) linker and hex file generator. Now, in this version, every build re-compiles ALL the files, even if nothing was touched since the last build. This is time-consuming. How can I stop this and get it to re-compile only the changed files? (If it matters, target CPU is STM32H753BIT6; using FreeRTOS and FATFS.)
HiI'm create a project that sending data from RFID reader (RS232) to PC (via USB HID) as a keyboard.I using RS232 to TTL for STM32 can read data and using USB HID to send it to PC.My code is working but a character sending is slow, but when i remove delay, character is missing. Ex: data from RFID: 4F002F144EWhen I have 15ms delay, my PC receive all characterBut when remove 15ms, some character is miss.So I want to ask have anyway to speedup ?This is my loop: while (RingBuffer_Availabel(&ring)) { uint8_t data; RingBuffer_Pop(&ring, &data); if(data == '\r'){ send_enter(); break; } keyboardhid.MODIFIER = (data >= 'A' && data <= 'Z') ? 0x02 : 0x00; keyboardhid.KEYCODE1 = ascii_to_hid((char) data); USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*) &keyboardhid,sizeof(keyboardhid)); HAL_Delay(15); usb_ready = 0; keyboardhid.MODIFIER = 0x00; keyboardhid.KEYCODE1 = 0x00; USBD_HID_SendReport(&hUsbDevic
Hello ST Community,We are working with STM32N657X0H3Q and configuring LTDC with internal AXI SRAM.Currently, we have configured the LTDC framebuffer at the following address:0x34200000First, we verified the LTDC functionality without using TouchGFX.Using the same framebuffer address (0x34200000), we manually filled the framebuffer with different colours and confirmed that the display works correctly. The panel turns on and displays the colour patterns properly. This confirms that the LTDC configuration and the memory region are functioning as expected.After enabling TouchGFX, the system starts initialization, but during debugging we observe that execution exits unexpectedly during the TouchGFX initialization phase.In TouchGFX, we have configured the framebuffer using the address method, pointing directly to the same memory location 0x34200000.The issue appears to occur around the following section of the TouchGFX initialization code:FrontendHeap& heap = FrontendHeap::getInsta
Heyho,I recently found that I'm not using ITCM RAM at all, then started to put heap and stack there.No problems so far.Then I copied some functions there, and all went well - until I found some strange behaviour:1..4 SAI RX DMA transfers running, circular modewhen all these transfers are complete for each SAI, a function is called to copy the complete DMA buffer from internal AXI SRAM into the big buffer in HyperRAMalso in this function a packet counter (a global u32 in DTCM) is incremented oncebut when this function is in ITCM, this packet counter increments for each SAI active, but there are no extra packets Further info:- instruction cache: in use- data cache: not used Is there any guideline what to put in ITCM, what are the limits, etcpp. ?
Hello everybody I'm building the device with power delivery sink function. I need the 21V (PPS). I done the configuration with STM32CubeMX and wrote some code in STM32CubeIDE. Unfortunately, after about 14 s of estabilishing connection, the source send hardware reset. What is the problem? In the attached file is the trase from STM32CubeMonitor-UCPD. I use STM32CubeIDE v. 2.1.1 and STM32CubeMX v. 6.17.0. void USBPD_DPM_SNK_EvaluateCapabilities(uint8_t PortNum, uint32_t *PtrRequestData, USBPD_CORE_PDO_Type_TypeDef *PtrPowerObjectType) { /* USER CODE BEGIN USBPD_DPM_SNK_EvaluateCapabilities */ //DPM_USER_DEBUG_TRACE(PortNum, "ADVICE: update USBPD_DPM_SNK_EvaluateCapabilities"); USBPD_SNKRDO_TypeDef rdo; rdo.d32=0U; rdo.ProgRDO.ObjectPosition=6U; rdo.ProgRDO.OutputVoltageIn20mV=1050U; //21V rdo.ProgRDO.OperatingCurrentIn50mAunits=60U; //3A rdo.ProgRDO.NoUSBSuspend=USBPD_ENABLE; rdo.ProgRDO.USBCommunicationsCapable=USBPD_ENABLE; *PtrPowerObjectType=USBPD_CORE_PDO_TYPE_APDO; *Ptr
Cube IDEIf i create / Import STM32 ProjectI only got these options to pick from and i have the feeling something is missing. So i select:- STM32CubeIDE Empty Project which leads me to this:So i select my MCU: STM32G474RETx (for example).This leads me to this:All i can really do is creating an empty Project.This is wrong? I have the feeling it completely ignores which STM Chip i select. I would expect a question if i would want to use CMSIS, LL or HAL drivers.What i am left with is this:Notice that there is no Drivers folder at all and that i cannot select any of the given Libraries.To me this doesnt make any reasonable sense. Its almost like an empty C/C++ Project.The only way to get the drivers folder into my project is to go the route via CubeMX.Which also has its twirks.I sort of always have to select only the MCU on my board instead of the board itself.When i select the Board (in this particular case the NUCLEO-G474RE) then CubeMX will always export also the FreeRTOS CMS
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.