你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32U3 评测】2.U3C5开启FPU测试FFT

[复制链接]
jundao721 发布时间:2026-5-28 17:06
      为了和后续的HSP加速运算进行对比,先测试一下U3C5的FPU进行简单的正弦函数FFT计算的状况。! n* w6 p: W! P' J/ C; }
还是先从Cubemx这个工具开始。有两种方式使用DSP library。一种是下载库,然后移植到项目里,一种是在Cubemx里配置DSP library。如图1所示:
3 v+ y. D) A3 L2 ?' s2 G" ] 2-3.png # x! m& M: ^+ A: L4 f, D
图1, i3 k- S7 }3 H% ]* J7 {* o

, M( {7 \" m4 ^0 L0 W左边栏中X-CUBE-ALGOBUILD,选择,并勾选DSP library。生成项目。! A/ n+ e$ M+ U( z
然后使用VSCODE打开项目,编写FFT实现函数。主要代码如下所示:
5 _, C& m1 g8 t; p7 K
  1.   arm_rfft_fast_init_f32(&fft_handler, FFT_SIZE);
    + R! x) ^2 C/ U1 i6 C7 }, F
  2.   GenerateSineWave();
    $ b- {0 m$ m1 X/ i7 v+ F4 ~' z( F. L7 N, F
  3.   uint32_t start = DWT->CYCCNT;$ m- x. X" Z$ ^6 ?
  4.   arm_rfft_fast_f32(&fft_handler, input, fft_output, 0);
    9 x6 t) }" s, M) e: p
  5.   arm_cmplx_mag_f32(fft_output, magnitude, FFT_SIZE / 2);
    9 M3 b' [/ g$ K, J
  6.   uint32_t end = DWT->CYCCNT;; g/ N" w9 m6 R; y
  7.   volatile uint32_t cycles = end - start;
    7 A: |' {1 ]2 e9 E. H: _% p
  8.   printf("FFT computation took %lu cycles\r\n", cycles);
复制代码

* @) f3 [" X2 l1 M2 o2 u. r在gcc-arm-none-eabi.cmake 中有
% A* z8 C4 [+ ~3 ~
  o8 ~/ u/ e& j/ `# Z8 [- a2 [
4 j! B! o$ H- ?- K, P! M# M: e
set(TARGET_FLAGS "-mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard "); i9 e" J+ E. {4 x& `
0 f0 g7 s0 j1 W: q1 E, e

; W! s3 Q" ~* o  b0 K' t% }表示编译器已经按硬件FPU方式生成浮点指令。
  n$ e3 K$ b, P" k/ G/ s6 i( x编译,Debug,观察左边Variables 中时间变量circles 的时间数值,包括观察FFT后峰值是否在bin 10的位置。测试结果如图2所示:' W2 U) g5 r; K: n7 E; c
2-1.png $ V  o% ?( U5 u, k3 z
图2$ ]# T1 o0 U* U
从测试结果看和预期相同。 6 j- M+ N- c: u+ I4 D
: ?6 f6 T1 b/ i3 Q+ g" {
收藏 评论0 发布时间:2026-5-28 17:06

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版