TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C1294中ADC接口采样问题

通过配置好ADC接口后,用查询或中断方式进行采样,但是采样的值跟实际的值相差大概1.2倍左右。是初始化程序问题还是哪里需要做进一步设置?

初始化代码:

void ADC0Init(void)
{
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2 | GPIO_PIN_3);
ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);
ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);
ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_CH0);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END);
ADCSequenceEnable(ADC0_BASE, 1);
// ADCIntEnable(ADC0_BASE,1);
//// IntEnable(INT_ADC0SS1);
ADCIntClear(ADC0_BASE, 1);
}

查询采样代码:

uint32_t *GetSampleADc(void)
{
uint32_t pui32ADC0Value[2] = {0};
uint32_t *ADC0Value = &pui32ADC0Value[0]; ADCProcessorTrigger(ADC0_BASE, 1);
while(!ADCIntStatus(ADC0_BASE, 1, false))
{
}
ADCIntClear(ADC0_BASE, 1);
ADCSequenceDataGet(ADC0_BASE, 1, pui32ADC0Value);
SysCtlDelay(g_ui32SysClock / 12);
return ADC0Value;}

xyz549040622:

只要数字不跳动,就默认是采集结果正确。至于和实际差1.2倍,你可以采集下GND和VCC电压,看看是怎么回事,GND和VCC是否准确呢?

Jafy Chan:

回复 xyz549040622:

数字倒很稳定,VCC与GND之间的电压是3.28V,VDDC是单独接了3.3V的LDO,电压也在3.28V左右,我查了电压,都符合芯片手册里面的使用要求范围。我一开始以为是查询方式造成的,结果用中断方式,结果是一样的。

Jafy Chan:

回复 xyz549040622:

我试了直接接VCC,读取的值与实际的值也差不多是成1.2倍的关系,这时我配置的问题还是存在bug?

xyz549040622:

回复 Jafy Chan:

这个问题就不好说了,接VCC的话,最大读数是AD满值的话,就认为是没有问题的。你接VCC时候的读数是多少呢?AD最大值/1.2么?

赞(0)
未经允许不得转载:TI中文支持网 » TM4C1294中ADC接口采样问题
分享到: 更多 (0)