<<ADC의 구조도>>
<<동영상>>
<<예제 소스>>
#include "DSP28x_Project.h"
Uint16 ADC_value;
void main(void)
{
DINT;
InitSysCtrl();
EALLOW;
SysCtrlRegs.HISPCP.bit.HSPCLK = 1; // HSPCLK = SYSCLKOUT/(HISPCP*2)
// HSPCLK = 150MHz/(1*2) = 75MHz
GpioCtrlRegs.GPAMUX1.all = 0;
GpioCtrlRegs.GPADIR.all = 0x00003F;
EDIS;
GpioDataRegs.GPADAT.all = 0x00003F;
InitAdc();
AdcRegs.ADCTRL3.bit.ADCCLKPS = 3; // ADCCLK = HSPCLK/(ADCCLKPS*2)/(CPS+1)
AdcRegs.ADCTRL1.bit.CPS = 1; // ADCCLK = 75MHz/(3*2)/(1+1) = 6.25MHz
AdcRegs.ADCTRL1.bit.ACQ_PS = 3; // 샘플/홀드 사이클 = ACQ_PS + 1 = 4 (ADCCLK기준)
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 시퀀스 모드 설정: 직렬 시퀀스 모드 (0:병렬 모드, 1:직렬 모드)
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0; // ADC 채널수 설정: 1개(=MAX_CONV+1)채널을 ADC
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // ADC 순서 설정: 첫번째로 ADCINA0 채널을 ADC
ADC_value = 0;
GpioDataRegs.GPADAT.all = 0x00003F;
EINT;
ERTM;
for(;;)
{
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; // ADC 시퀀스 시작
DELAY_US(1.72L); // ADC 시퀀스 변환시간(약1.72usec)만큼 지연
ADC_value = AdcRegs.ADCRESULT0; // ADC 결과 저장
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // ADC 시퀀서 리셋
DELAY_US(0.64L); // ADC 시퀀서 리셋시간(약0.64usec)만큼 지연
if(ADC_value < 10000) GpioDataRegs.GPASET.bit.GPIO0 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
if(ADC_value < 20000) GpioDataRegs.GPASET.bit.GPIO1 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO1 = 1;
if(ADC_value < 30000) GpioDataRegs.GPASET.bit.GPIO2 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO2 = 1;
if(ADC_value < 40000) GpioDataRegs.GPASET.bit.GPIO3 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO3 = 1;
if(ADC_value < 50000) GpioDataRegs.GPASET.bit.GPIO4 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO4 = 1;
if(ADC_value < 60000) GpioDataRegs.GPASET.bit.GPIO5 = 1; else GpioDataRegs.GPACLEAR.bit.GPIO5 = 1;
}
}
'DSP(28335) > 기초다치기..' 카테고리의 다른 글
TR28335 SW1, SW2 LED 기능 (0) | 2014.07.08 |
---|---|
LED ON, OFF 및 Shift (0) | 2014.07.05 |
Code Composer Studio4 설치방법 (0) | 2014.07.02 |
TR28335 트레이닝 키트 (0) | 2014.07.01 |
DSP320F28335를 이용한 GPS 파싱. (0) | 2013.07.27 |