主题中讨论的其他器件:MSP430FR6047
您好!
我按照 DSP 库示例"transform_ex1_FFT_fixed_Q15"来实现代码中快速傅里叶变换的使用、该变换应进行测量并计算 FFT (目标是通过希尔伯特变换获得包络)。
到目前为止、所有操作都正常、但样本大小仅为128。 刷写后、显示"430 mm:flash/FRAM 的使用量为40180字节。 RAM 的使用是4958字节。'
但样本大小为256时、会出现以下错误:"../lnk_msp430fr6047.cmd"、第257行:错误#10099-D:程序将无法放入可用内存中。 对齐方式对".leaRAM"大小为0xea0的运行放置失败。 可用存储器范围: LEARAM 大小:0xec8 未使用:0xec8 最大空洞:0xec8
但是、应该不会留下足够的内存? MSP430-FR6047具有8KB RAM、LEA 和 CPU 共享4KB RAM。 我是否能俯瞰明显的事物?
相关的代码片段为:
全局:
#define FFTsamples 256
DSPLIB_DATA (输入、MSP_ALIGIN_FFT_Q15 (FFTSAples))_Q15 INPUT [FFTSamples];
在主流程中:
//使用 ADC 波形填充输入数组
uint16_t* pUPSCap16 =(uint16_t*)(USS_getUPSPtr (&gUssSWConfig));
uint16_t c = 0;
while (c < FFTsamples){
input[c]=*pUPSCap16;
pUPSCap16++;
C++;
}
// FFT
MSP_FFT_Q15_params FFtParams;
fftParams.length = FFTsamples;
fftParams.bitReverse = true;
MSP_FFT_FIXED_Q15 (&fftParams、输入);
另一个问题:我想知道、FFT 样本大小为128、例如只有160个可用的 ADC 样本、该代码如何能够生成128个有效的 FFT 值。 实数矢量的 FFT 不会导致大小相同的矢量、而是镜像的、因此应该只有一半可用吗? 是否涉及某种内插或任何其他内容?
此致
Daniel