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

查看: 3374|回复: 9

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

[复制链接]

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

最后登录
2020-12-9
发表于 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, 下载次数: 14)
<
回复

使用道具 举报

2

主题

135

回帖

0

蝴蝶豆

金牌会员

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

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

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

多谢支持
回复 支持 反对

使用道具 举报

82

主题

636

回帖

121

蝴蝶豆

版主

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

使用道具 举报

29

主题

290

回帖

15

蝴蝶豆

论坛元老

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

使用道具 举报

5

主题

180

回帖

8

蝴蝶豆

金牌会员

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

使用道具 举报

48

主题

3559

回帖

429

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2018-1-3 09:45:34 | 显示全部楼层
观摩学习
回复 支持 反对

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

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

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

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

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

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

使用道具 举报

1

主题

455

回帖

2

蝴蝶豆

金牌会员

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

使用道具 举报

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