工具/软件:Code Composer Studio
您好!
在 CCS v5.3 (DSK6713)中使用 DSPLIB (dsp67x.lib)中的 DSPF_sp_cfftr2_dit 函数时遇到一些问题。 如果代码中包含以下行:
dspf_sp_cfftr2_dit (FFT_in、coeffs、wlen);
我始终从编解码器输出中获得噪声信号(即使 FFT 结果不是定向到耳机输出-请参阅下面的代码)。
我在构建项目时没有收到任何错误或警告。 我的配置为:
链接器搜索路径:
- DSPLIB/lib/dsp67x.lib 的路径
- rts670.lib 的路径
包含选项:
- DSPLib/Include 的路径
#define CHIP_6713 1
#include
#include
#include
#include
#include
#include
#include "dsk6713.h"
#include "dsk6713_AIC23.h"
#include "DSPF_sp_cfftr2_dit.h"
#include "utility.h"
DSK6713_AIC23_CodecHandle hCodec;//编解码器句柄
DSK6713_AIC23_Config 配置= DSK6713_AIC23_DEFAULTCONFIG;//编解码器配置具有默认设置
#define M_PI 3.141592658979323846
#define wINT1024
#define hoplid 2 256
#define hopeffma
data_align (FFT_in、8
);volatilefloat translid translat #v0_translation_reatile rulations=8);/volatile fatile float translate=uatile rfloat rulatile rlag #v0_translid rulatile rule_translid rf_translag #v0_translate=0_translate=uatile rf_translate=0_
void main()
{DSK6713_init()
;//初始化电路板支持库,必须首先调用
hCodec = DSK6713_AIC23_openCodec (0、&CONFIG);//打开编解码器并获取句柄
//配置缓冲串行端口以实现32位操作
//这允许在一个读取/写入 McBSP_FSETS
(SPCR1、RINTM、FRM)中传输左右通道
;McBSP_FSETS (SPR1、XPCR1、XINTM、FRM) FRM);
McBSP_FSETS (RCR1、RWDLEN1、32位);
McBSP_FSETS (XCR1、 XWDLEN1、32位);
//设置编解码器采样频率
DSK6713_AIC23_setFreq (hCodec、DSK6713_AIC23_FREQ_44KHZ);
//中断设置
IRQ_globalDisable ();//全局禁用中断
IRQ_nmiEnable();//启用 NMI 中断
IRQ_MAP (IRQ_EVT_RINT1、15);//将事件映射到物理中断
IRQ_ENABLE (IRQ_EVT_RINT1);//启用事件
IRQ_globalEnable ();//全局启用中断
UINT8 frame_status = 0;
UINT16 pin=0、pout=0;
Uint16
(uefftw); wlen);
bit_rev (codest_flag、wlen>1);
//等待第一个帧准备好处理
,while (frame_status!= 4){
frame_status += frame_ready_flag;
frame_ready_flag = 0;
}while (1)
{
if (frame_read_flag = 1){
frame_ready =
1);fft_i+ i = 1280* in
(f_in_I = 1)
;fft_in_i+= 1);fft_ift_in_in_i+(in = 1)
bit_rev (FFT_IN、wlen);
引脚+= 256;
}
}
中断空 serialPortRcvISR ()
{
union{uint32 combo;short channel[2];}temp;
temp.combo = McBSP_read (DSK6713_AIC23_DATAHANDLE);
buffer_in[j]=(float) temp.channel[0];
j+;
//如果(
j%256 == 0){
frame_ready_flag = 1、则将 frame_ready_flag 设置为1;
}
//如果
(j = 1280){
j = 0、则清除循环缓冲区索引;
}
McBSP_write (DSK6713_AIC23_DATAHANDLE、temp.combo);
}
请您向我指出原因是什么?