본문 바로가기

[DSP]/DSP28335

[DSP28335 EVM] ADC테스트 - 보드의 광센서 그래프 출력 예제

[DSP28335 EVM] 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;
}


채널별 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);
}



반응형