よくある質問

常见问答

如何使用NuMicro® M4的DSP功能做频谱分析?  日期:2017-02-02

  •  详细范例程序可以参考以下链接: http://www.nuvoton.com/hq/resource-download.jsp?tp_GUID=EC0120160922110158
  • 开启DSP功能:
1. 进入Keil后选择Target Options,切换至C/C++窗口,Define输入ARM_MATH_CM4=1。
 
 

2. 在Library部分需要加入arm_cortexM4lf_math.lib,其位置为\Library\CMSIS\Lib\ARM。
 

3.  在主程序里面include arm_math.h文件,完成后即可在主程序里面调用DSP函数库。
 

  • 首先欲计算的数据格式偶数项为实数,奇数项为虚数,例如1+0.5i, 2+4i, 3+2i=>testinput={1, 0.5, 2, 4, 3, 2},FFTsize=3。
  • 再来调用函数arm_cfft_radix4_init_f32(&S, fftSize, ifftFlag, doBitReverse)对快速傅立叶运算做初始设定,包括运算的数值个数,要进行快速傅立叶或反快速傅立叶变换。
  • 调用函数arm_cfft_radix4_f32(&S, testinput)进行快速傅立叶变换运算,并把运算结果存在数组testinput,其运算结果为复数。
  • 对复数取绝对值得到各频率强度大小,并输出结果到Output,由于结果为左右对称,因此计算量为fftSize/2, arm_cmplx_mag_f32(testinput, Output, fftSize/2)。
  • 得到各频率强度后即为y轴数据,再来计算x轴各频率方程式为:
    频率=(第几个数×取样频率)/FFT样本数 。
  • 把计算结果值作图如下,即可得到此信号最高频率约为1 kHz。

 

产品: 微控制器 ,Arm Cortex-M4 微控制器 ,M451 Base 系列 ,M451M 系列 ,M452 USB 系列 ,M453 CAN 系列 ,M4TK 触摸 IC 系列 ,NUC442 / 472 系列 ,NUC505 系列
应用:
功能: Peripherals,ARM,DSP,FPU,Connectivity,I2C