掲示板


[記事リスト] [返信する] [新着記事] [過去ログ] [ワード検索] [留意事項] [管理用]

記事No 1194
タイトル dsPICを使ったFFT関数
投稿日 : 2018/08/07(Tue) 15:20:08
投稿者 su-
参照先
初めまして。
このサイトを参考にdsPIC33FJ64GP804を使ったFFT変換をやっています。

#define LOG2N 7
#define FFT_SIZE 128 //=2^7
#define NUM_TAPS 13
unsigned int Index;
unsigned int flag;
fractional SigIn[FFT_SIZE];
fractional FilterOut[FFT_SIZE];
fractcomplex fftBuffer[ FFT_SIZE ] __attribute__ ((space(ymemory), aligned (FFT_SIZE * 2 * 2))); // Place fftBuffer in Y-memory aligned to the size the array in bytes
fractional window[FFT_SIZE]; // Hamming window
fractional powerspec[FFT_SIZE]; // Power Spectrum
fractcomplex twiddleFactors[ FFT_SIZE/2 ]__attribute__((space(xmemory)));
fractional _YBSS(128) delay[FFT_SIZE];
/*const fractional hpfCoeffs[NUM_TAPS] __attribute__ ((space(auto_psv), aligned (FFT_SIZE * 2 * 2))) ={
3,21,30,5,-61,-119,-76,99,296,292,-49,-560,-771,-262,856,1756,1305,-1093,-4854,-8327,23029,-8327,-4854,-1093,1305,1756,856,-262,-771,-560,-49,292,296,99,-76,-119,-61,5,30,21,3,0
}; //filter coefficient
FIRStruct HPF; //HPF fc1=1000 fc2=2000 */
const fractional lpfCoeffs[NUM_TAPS] __attribute__ ((space(auto_psv), aligned (FFT_SIZE * 2 * 2))) ={
1424,-2012,-1898,131,4372,8848,10772,8848,4372,131,-1898,-2012,1424
}; //filter coefficient
FIRStruct LPF; //LPF fc1=1000 fc2=2000


TwidFactorInit(LOG2N, twiddleFactors, 0);
HammingInit (FFT_SIZE, window);
FIRStructInit( &LPF, NUM_TAPS, (fractional *)lpfCoeffs, PSVPAG, delay );
FIRDelayInit (&LPF);

DISICNT = 0x0000; //enable interruput
while(1)
{
//while(!flag);
//flag = 0;
for(j = 0; j < FFT_SIZE; j++)
FIR (1, &FilterOut[j], &SigIn[j], &LPF);
VectorWindow(FFT_SIZE, FilterOut, FilterOut, window);
for(i = 0; i < FFT_SIZE; i++) {
fftBuffer[i].real = FilterOut[i];
fftBuffer[i].imag = 0;
}

FFTComplexIP(LOG2N, fftBuffer, twiddleFactors, COEFFS_IN_DATA);
BitReverseComplex(LOG2N, fftBuffer );
SquareMagnitudeCplx( FFT_SIZE , fftBuffer, powerspec);


以上のようなプログラミングを組みました。変数bufferとpowerspecをdsPICworksを用いてFFTの結果を確認しています。fftbufferまではうまくいくのですが、パワースペクトルであるpowerspecがうまくいかず、値がすべて0になってしまいます。引数が間違っているのでしょうか。

是非ご教授ください。
よろしくお願いいたします。

- 関連一覧ツリー (▼ をクリックするとツリーを一括表示します)


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー


- 投稿記事修正/削除フォーム -
処理 No 暗証キー

- WebForum -