param.oversampleRatio = SD24_OVERSAMPLE_256; //过采样 32 64 128 256
Ch0results = (int32_t)SD24_getHighWordResults(SD24_BASE, SD24_CONVERTER_0);
给个恒定电压,采样出来的精度在10毫伏左右,请教下,如何完善精度问题
Susan Yang:
您是否是采用TI例程进行测试的?您的参考电压是什么?
note: 您需要确保切换SD24LSBACC位以捕获所有24位
另外需要注意的是当您超过特定GAIN的建议差分输入电压VID时,ADC可能没有指定的性能。例如,对于GAIN = 1,MSP430i2041的建议最大VID为+/- 928mV。您可以在数据表(www.ti.com/…/msp430i2041.pdf)的第24页上找到Table 5-21. SD24 Input Range。
user5322468:
回复 Susan Yang:
这是我的sd24的初始化。
这是我的sd24初始化。
void impr_SD24_init(void)
{SD24_init(SD24_BASE, SD24_REF_INTERNAL);//内部参考电平
//Group with Channel 0SD24_initConverterAdvancedParam param = { 0 };// Enable interruptparam.converter = SD24_CONVERTER_2;//通道//param.conversionMode = SD24_CONTINUOUS_MODE;//采样模式连续SD24_SINGLE_MODEparam.conversionMode = SD24_SINGLE_MODE;/*#define SD24_DATA_FORMAT_BINARY (0x00)#define SD24_DATA_FORMAT_2COMPLEMENT (SD24DF)*/param.groupEnable = SD24_NOT_GROUPED;/*#define SD24_NOT_GROUPED (0x00)#define SD24_GROUPED (SD24GRP)//分组*/param.inputChannel = SD24_INPUT_CH_TEMPERATURE;//param.inputChannel = SD24_INPUT_CH_ANALOG;// 输入类型模拟量/*#define SD24_INPUT_CH_ANALOG (SD24INCH_0)#define SD24_INPUT_CH_TEMPERATURE (SD24INCH_6)//温度*/param.dataFormat = SD24_DATA_FORMAT_2COMPLEMENT;/*#define SD24_DATA_FORMAT_BINARY (0x00)#define SD24_DATA_FORMAT_2COMPLEMENT (SD24DF)//数据显示*/param.interruptDelay = SD24_FOURTH_SAMPLE_INTERRUPT;//第三通道中断param.oversampleRatio = SD24_OVERSAMPLE_256;//过采样 32 64 128 256param.gain = SD24_GAIN_1;//PGA增益SD24_initConverterAdvanced(SD24_BASE, ¶m);param.converter = SD24_CONVERTER_0;param.conversionMode = SD24_SINGLE_MODE;param.groupEnable = SD24_NOT_GROUPED;param.inputChannel = SD24_INPUT_CH_ANALOG;param.dataFormat = SD24_DATA_FORMAT_2COMPLEMENT;param.interruptDelay = SD24_FOURTH_SAMPLE_INTERRUPT;param.oversampleRatio = SD24_OVERSAMPLE_256;param.gain = SD24_GAIN_1;SD24_initConverterAdvanced(SD24_BASE, ¶m);param.converter = SD24_CONVERTER_1;param.conversionMode = SD24_SINGLE_MODE;param.groupEnable = SD24_NOT_GROUPED;param.inputChannel = SD24_INPUT_CH_ANALOG;param.dataFormat = SD24_DATA_FORMAT_2COMPLEMENT;param.interruptDelay = SD24_FOURTH_SAMPLE_INTERRUPT;param.oversampleRatio = SD24_OVERSAMPLE_256;param.gain = SD24_GAIN_1;SD24_initConverterAdvanced(SD24_BASE, ¶m);SD24_enableInterrupt(SD24_BASE, SD24_CONVERTER_2, SD24_CONVERTER_INTERRUPT);///__delay_cycles(10);
}你上述所说的有点不明白,应该如何调整呀?
user5322468:
回复 Susan Yang:
你指的捕获是接收采样的值,需要用32位接收吗?这里的int是16位的,我给的恒定电压很小啊,16位的可以装下。但是精度不够
灰小子:
精度的问题,除了可能是寄存器配置问题,也有可能是硬件问题的。
建议同时提供下电路图。
TI中文支持网



