Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and find answers on how to deploy, debug, and optimize AI models on ST microcontrollers, microprocessors, and smart sensors.
Most recent activity
I am evaluating AI with the STM32N6570-DK. I can create a starting project with the new project wizard (cubeMX inside cubeIDE) by targeting that dev kit. It produces FSBL and APPLI projects that build fine. When I add in the X-CUBE-AI middleware via the .ioc gui and feed it a ONNX model it seems to work great analyzing the model, showing the graph, then creating code to initialize and run it. However the resultant project code will not compile (either in FSBL or APPLI, I tried both). It seems like it is failing to include some HAL and/or LL functions when it generates the code. The specific errors I get are all "undefined reference to `LL_ATON_..." and undefined reference to "mcu_cache_clean_range" In the middleware I am including X-CUBE-AI v10.0.0 core and application (ApplicationTemplate). Do I need to include something else for dependencies? What am I missing here?
Hello everyone! :raising_hands:I’m currently working with the N6 Discovery Board and would like to systematically understand the available CubeAI API functions related to AI features. Does anyone know if there is a comprehensive reference or documentation listing all the functions that can be used?Additionally, I’m looking for learning materials or technical documentation on N6’s display and camera usage (e.g., display drivers, camera interfacing). Does anyone know where to find these resources?Any help or guidance would be greatly appreciated. Thanks in advance! :rocket::folded_hands:
Hi everyone,I'm working on deploying an object detection model on the STM32N6570-DK board. While I have successfully deployed it, I noticed a significant drop in accuracy during live testing compared to the floating-point YOLOv8 model.I'm now considering using INT16 quantization instead of INT8. My question is: How can I quantize the model to INT16? The tutorial I’m following states that quantization is only available for UINT8 and INT8.Additionally, is it possible to deploy an object detection model using X-CUBE-AI in STM32CubeMX? I haven’t been able to find any tutorials on object detection with X-CUBE-AI.Any guidance or resources would be greatly appreciated!Thanks!
Can the STM32N6 be connected to a 12MP image sensor for use solely in taking photos?In Section 3.25 of the datasheet, it is mentioned:"The DCMIPP path offers the following summarized maximum features:• Target sensors: 5 MPixel at 30 fps max" AND"Some over-target use cases are possible, but with specific constraints:• sensors with resolution above 5 Mpixels• sensors with pixel rate above 150 Mpixel/s• double sensors in parallel" I know that STM32N6 can only support video of 5MP@ 30fps. However, if I only use it for taking still images, can the input pixel resolution be greater than 5 MP?Like 12MP (IMX681) In Section 3.31 of the datasheet, it is mentioned:" Still-image encode:– codecs: JPEG (baseline interleaved)– performance: 300 Mpixel/s for JPEG" From my understanding, from the VENC perspective, it should be able to support higher pixel resolutions for still images as well. However, there is no explicit mention of this in the datasheet. Could ever
Hello,I am facing a serious issue in my STM32 project related to the neai_classification function. Here's the context of my code: float output_class_buffer[CLASS_NUMBER] __attribute__((aligned(4))); uint16_t id_class = 0;When calling the function neai_classification(inst_current, output_class_buffer, &id_class);, I observe that the output_class_buffer contains very strange values (such as 0.72333524e-24), which don't make sense. More troubling, however, is that not only does output_class_buffer contain these weird values, but adjacent variables and registers are also being corrupted in the process.In particular, variables that are adjacent to output_class_buffer are getting overwritten with unexpected values. This corruption extends to other variables in the program, causing them to hold invalid data, which in turn disrupts the application’s logic.Details:The output_class_buffer is aligned with __attribute__((aligned(4))), to ensure proper memory alignment.The issue seem
Can NanoEdge AI Studio make an option to support graphics card training? The current CPU training efficiency is too low, and there is no function that can directly throw input into online verification.
This is the error i get when trying to clone the git.C:\Users\Zhun>git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.gitCloning into 'stm32ai-modelzoo'...remote: Enumerating objects: 8704, done.remote: Counting objects: 100% (348/348), done.remote: Compressing objects: 100% (82/82), done.error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)error: 5254 bytes of body are still expectedfetch-pack: unexpected disconnect while reading sideband packetfatal: early EOFfatal: fetch-pack: invalid index-pack output
I am a new user of the STM32MP257F-EV1 board and am not very familiar with the ST Edge AI tool. I am currently trying to extract the TensorFlow Whisper encoder, convert it to an INT8 .tflite model using post-training quantization (PTQ), and then use the ST Edge AI tool to convert it into the .nb format for NPU acceleration.I followed this procedure to perform the quantization: model = TFWhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny")config = model.get_config()encoder = model.get_encoder()# Define a Keras model that takes input features and outputs encoder embeddings input_features = tf.keras.Input(shape=(config['num_mel_bins'], 2*config['max_source_positions']), dtype=tf.float32)encoder_output = encoder(input_features)encoder_model = tf.keras.Model(inputs=input_features, outputs=encoder_output) encoder_model.save("whisper_encoder_saved_model", save_format="tf")def representative_data_gen(): for _ in range(10:( &nb
It is fine until validation on validation on desktop... but when it comes to validation on target, it is showing the above error...can anyone please address my issue... I am trying this since 3 months..
I need help with a project. I need to deploy a sound detection AI model to my B-U585I-IOT02A board. I want to test the model using live audio playback, im using Mimii valve dataset to train the AI. Im planning to play back the audio and test inference and see if the AI detects anomalous or normal sounds. I have trained the AI and compressed it to tflite file. But i have no idea how to use STM32. It is so confusing Im using AI chatbot to help me but i cant do it. I think i need to configure USART, MDF (for microphone) and x-cube-ai. but i dont know how to do it. Need help please.
Hi, I followed the steps to install the Model Zoo, giving all attention to the Proxy settings. there is no chance i was able to install the requitements. issues with proxy. Are the username and password in those settings should be my developer account? if yes what is the proxy address to continue? and the port? if this is not the case, I am not behind a proxy and this should work. any idea could be wrong? I tried the Miniconda, the anaconda shell, Windows power shell, Cmd, no luck. Please advise! Thank you.
Why its not letting me to erase the memory, what happened ? -------------------------------------------------------------------STM32CubeProgrammer v2.19.0------------------------------------------------------------------- ST-LINK SN : 0029002A3033510335393935ST-LINK FW : V3J13M4Board : STM32N6570-DKVoltage : 3.29VSWD freq : 8000 KHzConnect mode: Hot PlugReset mode : Software resetDevice ID : 0x486Revision ID : Rev ZRevision ID : Rev ZDevice name : STM32N6xxDevice type : MCUDevice CPU : Cortex-M55BL Version : -- Opening and parsing file: fsbl_cut_2_0_sign.bin Memory Programming ...File : fsbl_cut_2_0_sign.binSize : 46.69 KBAddress : 0x70000000 Erasing memory corresponding to sector 0:Erasing external memory sector 0Error: failed to erase memory Error: failed to erase memory-------------------------------------------------------------------STM32CubeProgrammer v2.19.0---------------------------------------------------------
Hello everyone,For a personal motion recognition project using artificial intelligence and NanoEdge AI, I am looking to purchase components. I am hesitating between two architectures and would like to know if both are viable options and, if so, which one is the best and what the differences are.The first option: STEVAL-MKI109D with STEVAL-MKI229AThe second option: STEVAL-MKI233KA + STEVAL-MKIGIBV5 + STEVAL-MKI109V3 or STEVAL-MKI109DThank you in advance for your feedback!
Hi,I am working on stm32h747i-Disco board, I was in using FP-VISION (person detection) for the ai model to work on my board.And that's fine, it works well but now i need to connect and esp01 or Pico W with UART or with SPI.i just modified the code to do so but it did not worked, I just tested my code with another file and the code worked well. so can you clear me whether the UART or SPI is connectable or not when the FP-VISION is running ?(i used UART8 or SPI5,And i mainly in UART code when i initialize the uart8 it stops with the menu display which usually comes when started)
#undef __FPU_PRESENT #include "stm32h7xx.h" #include "main.h" #include "crc.h" #include "memorymap.h" #include "gpio.h" #include "app_x-cube-ai.h" #include "network.h" #include "ai_platform.h" #include "network_data.h" #include <stdlib.h> #include <stdio.h> #include "network_data.h" // 确保包含权重数据声明 /* 手动定义缺失的宏(必须与network.c中的实际值一致) */ #ifndef AI_NETWORK_WEIGHTS_SIZE #define AI_NETWORK_WEIGHTS_SIZE 794136 // 根据network.c中的值填写 #endif #ifndef AI_NETWORK_ACTIVATIONS_SIZE #define AI_NETWORK_ACTIVATIONS_SIZE 45572 // 根据network.c中的值填写 #endif /* 输入输出缓冲区定义 */ AI_ALIGNED(32) static float input_data[90 * 3 * 1 * 1] = {0}; // 严格匹配network.c输入形状 AI_ALIGNED(32) static float output_data[1 * 1 * 6 * 1] = {0}; // 匹配输出形状 static ai_handle network_handle = AI_HANDLE_NULL; /* 函数原型声明 -------------------------------------------------------------*/ void SystemClock_Config(void); static void MPU_Config(void); static int argmax(const float *arr, int size); void Error_Handler(void);
Hello everyone,I'm currently working on a project involving condition monitoring, anomaly detection, and predictive maintenance using sensors that only provide a voltage measurement (e.g., a speed sensor which outputs a proportional voltage). I wanted to ask if anyone has any experience or has worked on similar projects involving such sensors, particularly when it comes to using them in these areas of predictive maintenance and anomaly detection.If you have any advice, examples, or ideas on how to handle this type of sensor data effectively, I would be very grateful. I'm especially interested in learning about any techniques or algorithms that can be used to detect anomalies or predict failures based on voltage signals alone.Any tips or insights on the topic would be highly appreciated!Thank you in advance for your help!Best regards
I would like to deploy a model on a microcontroller but would like to have an idea of what the inference times would be on different ST microcontrollers before getting one.Is it possible to emulate how a model would run on a specific microcontroller using CubeAI by "validating on desktop"? There is an inference time per sample metric in the generated Cube AI report when I validate on desktop, but I am guessing this is inference time on my computer's CPU and not an emulated microcontroller.
Hello!I've been tasked to use the STEVAL-PROTEUS1 board with the ISM330DHCX to detect anomalous motor behavior. I've confirmed the board works fine when using other firmware and works as a WCID & MSC with datapro. However, when I try to flash the auto generated datalogger firmware from Nanoedge AI for serial data collection (via FUOTA), it does not create a COM port I can point the serial monitor at. I'd be grateful if someone could advise me of mistakes I might've made along the way, or if flashing via FUOTA does not work because there is a second flash bank or something similar. While I do currently have access to a STLINK V3-MINIE, I would prefer if flashing via FUOTA was an option, as it makes for an easier showcase.Thanks in advanceHaze
Hi everyone,I am trying to capture monochrome video using the MB1854B camera module on the STM32N6570-DK board. I am following this tutorial .My task is to obtain monochrome video at a resolution of 320 × 320 pixels at 60fpsCurrently, I am able to capture RGB video at 2592 × 1944 pixels. After checking the imx335.c file, I found only one available resolution (2592 × 1944) at 30fps and a pixel format set to IMX335_RAW_RGGB10.Is there any way to obtain my desired image resolution without any processing, just by changing register values? If so, where can I find those values? I was able to find the datasheet for the IMX335LQN, in which it was written that it can work at 60fps but it did not contain any details about the registers.
Hello, First off, I'd like to preface that I'm still quite new to the STM32 environment as a whole, and being a student my experience in embedded systems is quite limited, so please feel free to correct me. I'm currently working on a Nucleo-F446RE board and wish to implement a real-time (using CMSIS-RTOS) anomaly detection method using the following, simulated (random numbers essentially, generated via a Python code, data separated by tabulations) time series data : Abnormal temperature data (randomly generated)Normal dataAfter which I benchmarked different models on NanoEdge, and selected the suggested model. Following the documentation in order to implement said detection model under STM32CubeIDE, I chose to use the knowledge used while benchmarking the different models, as I don't have a way to get real data yet : Model initialization with knowledge No errors up till here. In order to correctly determine whether my model is functionnal or not, I chose t
Hello! I trained a neural network in MATLAB that requires an input instance of 30 features and exported it in ONNX v7 format. I am performing post-training quantization on the ST Edge AI Developer Cloud, but I am encountering issues when trying to load the dataset to check the accuracy obtained after quantization. To save this dataset in .npz format, I am using this Python script:_____________________________________________________________import numpy as npimport scipy.iox_test = scipy.io.loadmat(r'C:\Users\maria\Desktop\x_test.mat')y_test = scipy.io.loadmat(r'C:\Users\maria\Desktop\y_test.mat')x_test = x_test['x_test']y_test = y_test['y_test']x_test = x_test.astype(np.float32)np.savez("mydata.npz", x_test=x_test, y_test=y_test)_________________________________________________________________x_test is a matrix that contains 102 rows (number of instances) and 30 columns, while y_test is an array of 102 rows that contains the labels of the instances.When I try to launch the quantization
Hello! I have a MIMXRT1064 and I have a project in which I want to upload the library obtained with NanoEdge for a n-classification problem. I am able to correctly download the library, link it to the project and call the classification function with the data that it wants. The problem is that the class is always 0 (unrecognized state), it never changes. Can this library run in micro that are not produced by STM32?
It is fine until validation on desktop... But when it comes to validation on target, the above shown error is displaying...Can anyone please help me with this error... I am trying this since 3 months...
Good afternoon! Would it be possible to transfer the STWINKT1B library that uses NanoEdge to the Tile Sensor (STEVAL-STLKT01V1) I was able to use dual-tone multi-frequency classifier using NanoEdge AI Studio on the STWINKT1B board I can already read the microphone on the Sensor Tile, but I'm trying to implement the NanoEdge library with the knowledge.h files NanoEdgeAI.h and libneai.a but I'm not having success, I also didn't find the NanoEdgeAI.c file, I believe it is essential to get the result similarity output and make the classification
I am using the STEVAL-C34KAT2 with the STEVAL-STWINBX1 which is running the software FP-SNSDATALOG2 V3.0.0.Do I need to change anything in the FP-SNSDATALOG2 V3.0.0 software ?Or does the software automatically detect the STEVAL-C34KAT2 board ?Does anything need to be added to the device_config.json file ?I have read the user manual for the STEVAL-C34KAT2, it explains how to connect the board but there's no explanation on how to use it in terms of software. Is it just plug and play or are there extra steps required ?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.