LM3S8962 ADC 테스트
Sample rate of 500 thousand samples/second
Converter uses an internal 3-V reference
LM3S8962 ADC블록도
LM3S8962 ADC초기화 함수
//ADC Initialize
void AdcInit(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); //ADC enable
//ADCProcessorTrigger()에서 ADC 시작. 프로세서 트리거가 일어날때 작동한다.
ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);
//ADC0의 sequence를 구성한다.sequence number 0인 ADC를 single ended mode로 setting
ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH0);
//ADC를 사용 가능하게 해준다.
ADCSequenceEnable(ADC_BASE, 0);
}
LM3S8962 ADC Read 함수
//Read ADC Value
unsigned int AdcRead(unsigned char port)
{
unsigned long cnt;
unsigned long adc_result = 0;
ADCProcessorTrigger(ADC_BASE, 0);
//sample sequence 가 완료될때 까지 대기한다.
while(!ADCIntStatus(ADC_BASE, 0, false)){}
ADCSequenceDataGet(ADC_BASE, port, &adc_result);
return adc_result;
}
LM3S8962 ADC Test 예제 소스코드
//-----------------------------------------------------------------------------
int main(void)
{
unsigned long adc_result;
//시스템 초기화
SystemInit();
//LED포트 초기화
Led1Init();
Led1On();
DebugInit(BAUD_115200);
DebugPrint("LM3S8962 EVM ADC Test Program.\r\n");
//ADC 초기화
AdcInit();
while(1)
{
adc_result = AdcRead(0);
DebugPrint("%ld\r\n", adc_result);
Delay(100);
}
}
//-----------------------------------------------------------------------------
LM3S8962 Internal Temperature Sensor
SENSO = 2.7 - ((T + 55) / 75)