[DSP28335 EVM] ADC테스트 - 보드의 광센서 그래프 출력 예제
[DSP28335 EVM] 보드에는 ADC를 테스트 하기 위한 CdS 센서가 있고, ADCA1에 연결되어 있다
CdS센서를 사용하지 않는다면 R157을 제거하면 된다.
TMS320F28335 ADC테스트용 PC프로그램
TMS320F28335 ADC테스트 동영상
TMS320F28335 ADC초기화 함수
채널별 ADC 값 읽기 함수
[DSP28335 EVM] 보드에는 ADC를 테스트 하기 위한 CdS 센서가 있고, ADCA1에 연결되어 있다
CdS센서를 사용하지 않는다면 R157을 제거하면 된다.
TMS320F28335 ADC테스트용 PC프로그램
TMS320F28335 ADC테스트 동영상
TMS320F28335 ADC초기화 함수
//ADC Initialize
void AdcInit(void)
{
EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK
EDIS;
InitAdc(); // For this example, init the ADC
// Specific ADC setup for this example:
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
// Start SEQ1
AdcRegs.ADCTRL2.all = 0x2000;
}
void AdcInit(void)
{
EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK
EDIS;
InitAdc(); // For this example, init the ADC
// Specific ADC setup for this example:
AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
// Start SEQ1
AdcRegs.ADCTRL2.all = 0x2000;
}
채널별 ADC 값 읽기 함수
//Read ADC Value
unsigned int AdcRead(unsigned char Channel)
{
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = Channel;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt
// Software wait = (HISPCP*2) * (ADCCLKPS*2) * (CPS+1) cycles
// = (3*2) * (1*2) * (0+1) = 12 cycles
asm(" RPT #11 || NOP");
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
return (AdcRegs.ADCRESULT0>>4);
}
unsigned int AdcRead(unsigned char Channel)
{
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = Channel;
AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt
// Software wait = (HISPCP*2) * (ADCCLKPS*2) * (CPS+1) cycles
// = (3*2) * (1*2) * (0+1) = 12 cycles
asm(" RPT #11 || NOP");
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
return (AdcRegs.ADCRESULT0>>4);
}
반응형