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.

[参考译文] MSP430FR5994:LEARAM -神秘覆盖和锁定

Guru**** 664280 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1087171/msp430fr5994-learam---mysteriously-overwritten-and-locked

部件号:MSP430FR5994

我一直在使用 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很困惑。 你说你有一个500多分的哈明窗吗? 该数据集必须是巨大的。 比我想象的5994的尺寸大得多。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,您必须执行512点蜂鸣窗口乘以512点输入信号。  这两个组件都已加载到 LEA_RAM 中。  

    LEARAM:原点= 0x2C00,长度= 0x1000 - LEASTCK_SIZE
    LEASTCK:原点= 0x3C00 - LEASTCK_SIZE,长度= LEASTCK_SIZE

    长度0x1000 = 4096字节。   

    _Q15 = 2字节。  512点阵列*2字节=1024字节。  2个数组* 1024字节= 2048字节

    因为发生了一些奇怪的事情,我尝试将512点窗口存储在 FRAM 中。  FRAM 中的一个是好的,它只是 LEARAM 中受影响的区域。  从侧面看,我使用 FRAM2来存储更大的数据,当然,它在扩展的寻址范围内,因此我需要围绕扩展的地址内部函数(  例如    __data20_write_short (location_X,temp_reading);  )

    不幸的是,我在存储浮子或使用内部函数进行双倍处理时遇到了问题。  有一个很长的时间,但是? ? ?