Nucleo-L4R5ZI评测4 浮点运算能力
STM32L4R5具有浮点运算和DSP指令运算能力的芯片,本次评测就让STM32L4R5进行1024点的傅里叶运算。模拟一个采样信号的直流分量为100,外加2个正弦信号和一个余弦信号的波形。
1、在STM32CubeMX中配置芯片时钟,生成MDK5工程,主频120MHZ。
2、MDK5工程中加载DSP库
3、使能浮点运算
4、FFT函数代码
- static void FFT_read(void)
- {uint16_t i;
- arm_cfft_radix4_instance_f32 scfft;
- arm_cfft_radix4_init_f32(&scfft,BUFFER_SIZE,0,1);
- for(i=0;i<BUFFER_SIZE;i++)
- {
- 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);
- inputbuf[2*i+1]=0;
- }
- arm_cfft_radix4_f32(&scfft,inputbuf);
- arm_cmplx_mag_f32(inputbuf,outputbuf,BUFFER_SIZE);
- }
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- while (1)
- {
- FFT_read();
- GPIOC->ODR ^=0x0100;
- }
复制代码
6、GPIO预先配置PC8为输出,每完成1次FFT运算改变PC8输出状态,在示波器上观察PC8高低电平就能得到FFT运算时间。
测试结果:
STM32L4R5每作一次1024点的傅里叶运算大概需要24mS。
笔者之前曾经对不同芯片进行同样的测试:
STM32F412:18mS
STM32F446:4mS
STM32F767:1.5mS
可见:虽然STM32L4R5是一款主推低功耗的芯片,但是其浮点运算能力还是非常优秀的。
stm32l4r5-FFT(HEX).rar
(43.46 KB, 下载次数: 17)
|
多谢支持
应该只是单精度的。F7本身运行的速度快多了。
FFT_read()函数的耗时。