工程师们你们好,我这里遇到了一个关于MPY32硬件乘法器的问题。
相关环境:
1. 使用了EnergyMeasurementDesignCenter-1.40.00.03生成的代码。
2. 使用了MSP DSP Lib:DSPLib_1_30_00_02
3. 在程序中有4K采样频率的ADC SD24采集中断,在中断中有调用emSwLib库中的算法函数,分析里面有用到MPY32。
4. 从ADC采集的数据中取256个数据进行fft使用的函数为msp_fft_iq31在中断外执行。
现象:
使用一组测试数据进行fft,发现每次变换后的结果都不一样。在进行fft前使用__disable_interrupt关闭中断后fft出来的结果就是每次都一样的并且和其他fft算法跑出来的结果一样。
经过逐步调试分析判断应该是msp_fft_iq31在使用MPY32的过程中被ADC中断并且使用了MPY32,导致MPY32原来的数据被破坏了,从而导致每次fft出来的结果都不一样。
我尝试过在进入中断计算时将MPY32相关的寄存器备份,在退出中断时将MPY32相关寄存器恢复之前的值,但是并没什么效果。

请问可以通过恢复MPY32的寄存器来解决这个问题吗?或者有什么方法可以解决这个问题吗?
PS:因为ADC中断中进行一些比较重要的操作,因此不能使用关闭中断来做。



