搜索
查看: 4733|回复: 9

[STM32L4+] Nucleo-L4R5ZI评测4 浮点运算能力

[复制链接]

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2018-1-2 20:44:39 | 显示全部楼层 |阅读模式
Nucleo-L4R5ZI评测4 浮点运算能力

    STM32L4R5具有浮点运算和DSP指令运算能力的芯片,本次评测就让STM32L4R5进行1024点的傅里叶运算。模拟一个采样信号的直流分量为100,外加2个正弦信号和一个余弦信号的波形。

  1、在STM32CubeMX中配置芯片时钟,生成MDK5工程,主频120MHZ。

sysclk.png


2、MDK5工程中加载DSP库

DSP.png

project.png

  3、使能浮点运算

C  .png

  4、FFT函数代码
  1. static void FFT_read(void)
  2. {uint16_t i;
  3. arm_cfft_radix4_instance_f32 scfft;
  4. arm_cfft_radix4_init_f32(&scfft,BUFFER_SIZE,0,1);        
  5.      for(i=0;i<BUFFER_SIZE;i++)                                                        
  6.      {  
  7.      inputbuf[2*i]=100+10*arm_sin_f32(2*PI*i/BUFFER_SIZE)+30*arm_sin_f32(2*PI*i*40/BUFFER_SIZE)+50*arm_cos_f32(2*PI*i*80/BUFFER_SIZE);
  8.           inputbuf[2*i+1]=0;                                                                        
  9.              }
  10.    arm_cfft_radix4_f32(&scfft,inputbuf);                     
  11.    arm_cmplx_mag_f32(inputbuf,outputbuf,BUFFER_SIZE);
  12. }

  13. int main(void)
  14. {
  15.   HAL_Init();
  16.   SystemClock_Config();
  17.   MX_GPIO_Init();
  18.   while (1)
  19.   {
  20.                 FFT_read();
  21.                 GPIOC->ODR ^=0x0100;

  22.   }
复制代码

  6、GPIO预先配置PC8为输出,每完成1次FFT运算改变PC8输出状态,在示波器上观察PC8高低电平就能得到FFT运算时间。

无标题.png

测试结果:
STM32L4R5每作一次1024点的傅里叶运算大概需要24mS。
笔者之前曾经对不同芯片进行同样的测试:
STM32F412:18mS
STM32F446:4mS
STM32F767:1.5mS

可见:虽然STM32L4R5是一款主推低功耗的芯片,但是其浮点运算能力还是非常优秀的。

stm32l4r5-FFT(HEX).rar (43.46 KB, 下载次数: 16)
回复

使用道具 举报

该用户从未签到

2

主题

137

帖子

0

蝴蝶豆

金牌会员

最后登录
2020-12-7
发表于 2018-1-2 21:51:37 | 显示全部楼层
学习了,有理有据 感谢分享啊!
回复 支持 反对

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
 楼主| 发表于 2018-1-2 21:59:11 | 显示全部楼层
ALTIUM2 发表于 2018-1-2 21:51
学习了,有理有据 感谢分享啊!

多谢支持
回复 支持 反对

使用道具 举报

该用户从未签到

82

主题

718

帖子

121

蝴蝶豆

版主

最后登录
2021-1-2
发表于 2018-1-3 06:56:17 | 显示全部楼层
不错不错,学习了。实验设计的很有意思。
回复 支持 反对

使用道具 举报

该用户从未签到

29

主题

322

帖子

15

蝴蝶豆

论坛元老

最后登录
2021-4-23
发表于 2018-1-3 08:58:30 | 显示全部楼层
包括计算波形的时间啊,真正一次FFT时间要短的多吧?
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

185

帖子

8

蝴蝶豆

金牌会员

最后登录
2021-12-10
发表于 2018-1-3 09:29:03 | 显示全部楼层
M4核是单精度浮点单元,所以进行运算时候数据是要转换为单精度的。我不知道楼主的数据是否是单精度,f4和f7的fft差那么多,我觉得原因是F767是双精度的浮点单元,数据有可能也是双精度的。希望楼主继续深入测试
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2018-1-3 09:45:34 | 显示全部楼层
    观摩学习
    回复

    使用道具 举报

    该用户从未签到

    74

    主题

    3420

    帖子

    82

    蝴蝶豆

    社区小助手

    最后登录
    2023-11-12
     楼主| 发表于 2018-1-3 09:52:44 | 显示全部楼层
    本帖最后由 wenyangzeng 于 2018-1-3 09:56 编辑
    whtt 发表于 2018-1-3 09:29
    M4核是单精度浮点单元,所以进行运算时候数据是要转换为单精度的。我不知道楼主的数据是否是单精度,f4和f7 ...

    应该只是单精度的。F7本身运行的速度快多了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    74

    主题

    3420

    帖子

    82

    蝴蝶豆

    社区小助手

    最后登录
    2023-11-12
     楼主| 发表于 2018-1-3 09:53:37 | 显示全部楼层
    pythonworld 发表于 2018-1-3 08:58
    包括计算波形的时间啊,真正一次FFT时间要短的多吧?

    FFT_read()函数的耗时。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    456

    帖子

    2

    蝴蝶豆

    金牌会员

    最后登录
    2019-5-7
    发表于 2019-1-30 01:32:13 | 显示全部楼层
    好测评,谢谢分享!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-26 13:16 , Processed in 0.189375 second(s), 46 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表