[STM32U3] 【NUCLEO-U3C5ZI 测评】HSP FFT和CMSIS DSP FFT速度对比
·
这款单片机新增了外设HSP,下图是官方的宣传

2026-8-24 14:05 上传
目前还没有太多这个外设的使用教程,开发板没有例程。所以结合一些网友和AI的梳理做个测试
取1024点用ARM CMSIS-DSP的软件FFT和HSP的硬件FFT进行对比,测试代码大体如下
复制
printf("\r\n===== HSP U3C5 FFT Test =====\r\n");arm_cfft_instance_f32 arm_fft_inst;arm_cfft_init_f32(&arm_fft_inst, FFT_COMPLEX_POINTS);for(uint32_t i=0; i < FFT_COMPLEX_POINTS; i++){float val = 0.5f * sinf( 2.0f * 3.14159265f * 8.0f * i / FFT_COMPLEX_POINTS );hsp_cplx_buf[2*i + 0] = val;hsp_cplx_buf[2*i + 1] = 0.0f;arm_cplx_buf[2*i + 0] = val;arm_cplx_buf[2*i + 1] = 0.0f;}uint32_t t_hsp_start = DWT_GetCycle();HSP_ACC_Fft_f32(phmw, // HSP上下文句柄hsp_cplx_buf,LOG2_FFT_POINTS, // log2(N)枚举0U, // ifftFlag:0正向FFT1U // bitrev:1开启位反转);uint32_t t_hsp_end = DWT_GetCycle();uint32_t hsp_cycles = t_hsp_end - t_hsp_start;float hsp_us = (float)hsp_cycles / 96.0f;uint32_t t_arm_start = DWT_GetCycle();arm_cfft_f32(&arm_fft_inst, arm_cplx_buf, 0, 1);uint32_t t_arm_end = DWT_GetCycle();uint32_t arm_cycles = t_arm_end - t_arm_start;float arm_us = (float)arm_cycles / 96.0f;printf("\r\n---------- Result ----------\r\n");printf("HSP Hardware FFT: cycles=%6u , time=%7.2f us\r\n", hsp_cycles, hsp_us);printf("CMSIS‑DSP SW FFT: cycles=%6u , time=%7.2f us\r\n", arm_cycles, arm_us);printf("Speedup ratio(SW/HW): %.2fx\r\n", (float)arm_cycles / (float)hsp_cycles);
运行结果如下
复制
===== HSP U3C5 FFT Test =====---------- Result ----------HSP Hardware FFT: cycles= 6516 , time= 67.88 usCMSIS鈥慏SP SW FFT: cycles=101609 , time=1058.43 usSpeedup ratio(SW/HW): 15.59x
HSP15倍于软件FFT,显著提升啊,结合低功耗优势,那就是常说的能效比突出。

---------------------
作者:BinWin
链接:https://bbs.21ic.com/icview-3530703-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
更多推荐


所有评论(0)