我一直在使用 LEARAM 与 DSPLIB 合作。 我已经使用 FFT 来分析谐波信号的振幅和频率,从而记录数据。 这是大约每秒进行10分钟的振幅测量的图片。
这里的所有东西都能正常工作7-8分钟,然后振幅神秘地下降到0。 这种情况每一次都在发生。 我进入调试器尝试跟踪问题。 我注意到我的“鸣声”窗口被覆盖。 这是我的鸣窗前后的照片。
我做了一些编码来尝试解决这个问题,但奇怪的是,在被覆盖后,我无法在 RAM 中的变量结构中写入任何内容。 我尝试将其另存为静态 const,我尝试将值存储在 FRAM 中,然后每隔几个周期复制到 LEARAM 中。 这是我的一些代码
静态 const _Q15 window_2 [样片]={2573,2558,2545,2534,2526,2516,2514,2518,2530,2540,2552,2567,2583,2602,2624,570773,2731,2761,2536,2516,2560,2530,2530,2554,2552,2567,2586,2670,
//DSPLIB_DATA (窗口,4)
DSPLIB_DATA (窗口,MSP_align_FFT_Q15 (样本))
_Q15窗口[样片]={0};
void initHamming()
{
内部 j = 0;
对于(j=0;j<样本;j++)
{
window[j]= window_2[j];
}
}
///// 三,工作安排
// Timer1A 采样和 FFT 函数
UINT16_t U16_测试(uint16_t U16_实例)
{
。
//采集样本
。
//获得的预定义样本数
IF(counter=samples)
{
内部 x=0;
//禁用 TimerA1
TA1CTL 和=~MC;
reset_counter = reset_counter +1;
如果(reset_counter > 3)
{
reset_counter = 0;
initHamming();
}
否则
{
/*将输入信号乘以生成的“鸣音窗口”*/
mpyParams.length =样本;
MSP_颠簸_Q15 (&mpyParams,Lea_FFT,Window,Lea_FFT);
...
//执行 FFT ....
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 我认为这让我知道我在做什么
这真的很令人困惑,我不知道为什么先覆盖 LEARAM,然后我甚至不能将正确的值重新写入其中。 它看起来完全被炸了。 可能有一个 POR,断电或重置导致 RAM 损坏? 是否有任何想法?为什么会像这样被覆盖? Oringinally 认为可能是缓冲区溢出或泄漏,但第一组值甚至没有被触及。 我已经多次运行此测试,它被覆盖的方式也是如此。 我先关闭设备,然后再打开设备,设备又能正常工作,所以我不需要完全上载新固件???? 无论如何,我们都需要解决此问题,因为我们希望设备能持续正确读取。 感谢你的帮助
~Mike