历时七天终于用28335鼓捣出了FFT和FIR
[复制链接]
楼主苦逼大二学生一枚,接触dsp已经一年的了,中间有一段时间去玩arm6410了,就把dsp丢了很长一段时间。大一51玩完了就搞了个28335的板子。以前都是用它来玩玩电机,完全当个单片机使。这个暑假想把dsp重拾起来,决定从数字滤波方面下手。自己找了些资料,开始的时候用的是C代码写的,DA输出用的也是一个串行的片子TLV5636,结果和现象是有了,但是频率一致上不去,很是头疼。后来发现TI官方有计算FIR滤波器的库函数,人家高手写的东西,效率会高一些吧,DA输出的片子也换成了并行的TLV5639,。
有了这个想法第一件事就是上网查资料,可惜楼主找遍各大论坛,各大网站,各种书籍也没发现什么有用的这方面的资料。最终只找到一个ti官方给的文档《C28x-FPU-LIB-UG》,对于英语渣的我来说头疼死了,没办法就只有这个东西将就着看呗。看到这个东西,说实话TI一点都不同情弱者,文档给的毛毛躁躁的,完全就是随手写出来的东西。没办法只能就这文档和楼主的理解一点一点的试验。
由于自己搞得时候十分头疼,所以决定把自己学到的东西记录下来,并帮助一下后来想要学习该方面知识的同学。
主要是分析一下dsp28335的C28x_FPU_LIB.lib这个库,这个库十分强大,首先可以计算复数域的CFFT(Complex Fast Fourier Transform
),其中函数为void CFFT_f32 (CFFT_F32_STRUCT *) 。其中CFFT_F32_STRUCT为官方定义的一个结构体成员有
typedef struct
{ float32 *InPtr;
float32 *OutPtr;
float32 *CoefPtr;
float32 *CurrentInPtr;
float32 *CurrentOutPtr;
Uint16 Stages;
Uint16 FFTSize;
} CFFT_F32_STRUCT;
|