工具/软件:
您好:
MCU:MSP430FR6043
我想读取 USS ADC 原始数据以确定输出信号的最小值和最大值。 我pCapturesBuffermaxCapture从下面的结构中检索了数据(和)。
__persistent USS_Capture_Configuration ussCaptureConfig = {
.overSampleRate = USS_OVER_SAMPLE_RATE,
.sampleSize = USS_USER_CONFIG_NUMBER_OF_SAMPLES_PER_CAPTURE,
.gainRange = USS_GAIN_RANGE,
.enableWindowHiComp = USS_ENABLE_WINDOW_HI_COMP,
.enableWindowLoComp = USS_ENABLE_WINDOW_LO_COMP,
.windowHighThreshold = USS_WINDOW_HIGH_THRESHOLD,
.windowLowThreshold = USS_WINDOW_LOW_THRESHOLD,
.agcConstant = USS_AGC_CONSTANT,
.pCapturesBuffer = &gUSSLEATempMemBlock[0],
.maxCapture = (sizeof(gUSSLEATempMemBlock) / sizeof(int16_t)),
.isCapAccumulationEnabled = USS_SW_LIB_ENABLE_ACCUMULATION,
#if USS_SW_LIB_APP_MAX_ACC_BLOCK
.pAccCaptureBuffer = &gUSSLEARAMReservedAccMemBlock[0],
#endif
};
在代码(见下文)中、我创建了一个新指针来引用pCapturesBuffer地址、并使用它来计算最小值和最大值。
waterQualitydata.dataLength=gUssSWConfig.captureConfig->maxCapture;
waterQualitydata.TemppCapturesBuffer=ussCaptureConfig.pCapturesBuffer;
waterQualitydata.adcMin=*waterQualitydata.TemppCapturesBuffer;
waterQualitydata.adcMax=*waterQualitydata.TemppCapturesBuffer;
for(i=0;i<waterQualitydata.dataLength;i++)
{
if(waterQualitydata.adcMax<*waterQualitydata.TemppCapturesBuffer)
{
waterQualitydata.adcMax=*waterQualitydata.TemppCapturesBuffer;
}
if(waterQualitydata.adcMin>*waterQualitydata.TemppCapturesBuffer)
{
waterQualitydata.adcMin=*waterQualitydata.TemppCapturesBuffer;
}
waterQualitydata.TemppCapturesBuffer++;
}
实施后、 仅由于上述代码更改、FRAM 消耗增加了 6.4KB。
请帮助我分析一下。
此致、
SaKhan