我们一直在 使用TI的FPU库"C28x_FPU_DSP_library" 1.5 on TMS320F2.8377万 DSP。
下面是与“CFFT_F32”函数相关的库用户指南图片。
突出显示的注释是什么意思?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们一直在 使用TI的FPU库"C28x_FPU_DSP_library" 1.5 on TMS320F2.8377万 DSP。
下面是与“CFFT_F32”函数相关的库用户指南图片。
突出显示的注释是什么意思?
全局变量是什么意思?
据我所知,这些变量如下所示。
typedef struct
{
float32 *InPtr; //!<指向输入缓冲
区float32 *OutPtr; //!<指向输出缓冲
区float32 *CoefPtr; //!<指向twiddle因子
float32 *CurrentInPtr; //!<指向每个FFT阶段
float32 *OutPtr; //!<指向每个FFT阶段
的输出缓冲区uint16_t阶段; //!< FFT阶段数
uint16_t FFTSize; //!< FFT大小(复杂数据点数)
} CFFT_F32_fut;
float32 CFFT_futft1Bufft[CFFT_futft_ft_fut32_fft_futft_futft_ft_futft_ft_f3ft_ft_ft_ft_futf3ft_f32_ft_futft_ft_futft_ft_futft_ft_f3f3ft_ft_ft_ftft_ftft_ftf
CFFT_F32函数是否使用了任何其他全局变量?
我们正面临一个问题。 您可以参考此线程以供参考
实际上,CFFT_F32() 函数不是基于中断调用的,而是每隔20mSec在后台进行调用。
CFFT_F32() 函数执行时间:
禁用所有中断时为180 usec。
324 usec,仅禁用timer0 (启用中断组1)。
我们执行了三种不同的测试逻辑,如下所示:
测试1:
我们一直启用timer0中断,没有在ISR中写入代码,如下所示:
GpioDataRegs.GPESET.BIT.GPIO133 = 1; CpuTimer0Regs.TCR.Bit.TIF = 1; PieCtrlRegs.PIEACK/bit.ACK1 = 1; //Timer0_ISR_ROUT(); GpioDataRegs.GPECLEAR.Bit.GPIO133 = 1;
但问题仍然存在。
测试2:
我们在调用 CFFT_F32()函数之前,通过保持中断group1启用,但禁用timer0中断进行了测试,如下所示。
CpuTimer0Regs.tcr.bit.tie =0; //定时器中断禁用。 GpioDataRegs.GPBSET.Bit.GPIO45 = 1; HND_CFFT->InPtr = CFFTin1Buff; HND_CFFT->OutPtr = CFFToutBuff; CFFT_F32 (HND_CFFT); GpioDataRegs.GPBCLEAR.Bit.GPIO45 = 1; CpuTimer0Regs.tcr.bit.tie = 1;
此后,我们未发现问题发生。
测试3:
然后,我们禁用了timer0中断和它的时钟,并将EPWM10_INT_ISR(group 3)用于我们的200 usec中断,如下所示:
UINT16 Prev_IER = IER; GpioDataRegs.GPETOGLE.bit.GPIO133 = 1; //Timer0_ISR_rout (); EPwm10Regs.ETCLR.bit.INT = 1; PieCtrlRegs.PIEACK/bit.ACK3 = 1; Prev_IER |= IER_Group3; IER = Prev_IER;
但问题仍然存在。
这个问题已经耗费了很多时间,而且非常紧迫,因此请尽快提供指导。
感谢您的回复。
您可以参考附加代码CPU-1和CPU-2。 我们在CFFT_F32函数的输出中遇到了问题。
在定期调用CFFT_F32函数时,大多数时间它给出给定的第5次和第7次谐波顺序的正确数量。
但在某些随机情况下,它给出了错误的第五和第七级。
您可以在"C1_N_FFT.c"文件的DO _CFFT()函数中观察到它,如下所示。
//注:
//根据虚拟数据x24.IH_5_LOAD应为2358.74 ,
// x24.IH_7_load应为1710.125。
IF (FFT.ph_fftcalc ==&FFT.r)
{
x24.IH_5_LOAD = MAG_BUF[5];
x24.IH_7_LOAD = AGG_GOV5.1= 2300.0
<1.BIF;}{gpi_gf+2.24_gf_gf.gf.gf_gf.24
我们已经检查了通过“C2000 CGT 16.9 .6.LTS”与您共享的代码,我们没有遇到任何问题。
“C2000 CGT 16.9 .6.LTS”和“C2000 CGT 6.4 .10”版本有何区别?
是不是因为我们在库的文档中没有找到任何这样的注释,所以这个库"C28x_FPU_DSP_library" 1.5 没有得到诸如"C2000 CGT 6.4 .10"这样的旧版本的正确支持。
您是否可以使用版本“C2000 _CGT 6.4 .10”检查代码?
此致,
Shashank.