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.
通过配置好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;
}
数字倒很稳定,VCC与GND之间的电压是3.28V,VDDC是单独接了3.3V的LDO,电压也在3.28V左右,我查了电压,都符合芯片手册里面的使用要求范围。我一开始以为是查询方式造成的,结果用中断方式,结果是一样的。