본문 바로가기

[AnalogDevice]/ADucM360

ADucM360 24bit ADC 테스트

ADucM360 24bit ADC 테스트





ADucM360 은 Cortex-M3코어에 24bit 정밀 ADC를 내장한 MCU이다.

가장 강점이 24비트 ADC테스트를 간단히 진행해 보았다.



ADucM360  ADC블록도

입력 임피던스를 위한 Rail-To-Rail 버퍼와 128 PGA 및 필터가 내장되어 있다.



ADucM360 ADC 레지스터

ADCxCON 레지스터가 가장 중점 적으로 봐야할 레지스터 인것 같다.

 ADC0CON (ADuCM360 Only)

 ADC1CON (ADuCM360 and ADuCM361)


레퍼런스 설정 및 채널 설정등을 할 수 있다.





레퍼런스 제어 레지스터

REFCTRL

REFPD


Power-down reference. This bit must be cleared for the ADCs to work, regardless of if an external 

reference is selected. 

 0: Enable internal reference block. 

 1: Power down internal reference block.

 

 

 ADucM360 ADC초기화 함수

void ADC1INIT(void)

{

    // 인터럽트 사용

    AdcMski(pADI_ADC1,ADCMSKI_RDY,1);


    // ADC filter set for 3.75Hz update rate with chop on enabled

    AdcFlt(pADI_ADC1,124,14,FLT_NORMAL|ADCFLT_NOTCH2|ADCFLT_CHOP); 

     // 내부레퍼런스 , Gain of 1, Signed integer output

    //AdcRng(pADI_ADC1,ADCCON_ADCREF_INTREF,ADCMDE_PGA_G1,ADCCON_ADCCODE_INT); 

    // AVDD레퍼런스 , Gain of 1, Unsigned integer output

   AdcRng(pADI_ADC1,ADCCON_ADCREF_AVDDREF,ADCMDE_PGA_G1,ADCCON_ADCCODE_UINT);

    // Turn off input buffers to ADC and external reference

    AdcBuf(pADI_ADC1,ADCCFG_EXTBUF_OFF,ADCCON_BUFBYPN|ADCCON_BUFBYPP|ADCCON_BUFPOWP|ADCCON_BUFPOWN); 


   // 채널 선택  AIN1 - negative input, AIN0 - postive input

   AdcPin(pADI_ADC1, ADCCON_ADCCN_AIN1, ADCCON_ADCCP_AIN0); 

}



ADC 인터럽트 핸들러 함수

void ADC1_Int_Handler ()

{

   // read ADC result register

   ulADC1Result = AdcRd(pADI_ADC1);

}




ADucM360 24bit ADC테스트 동영상




ADucM360 24bit ADC테스트 예제코드
int main (void)
{
    _SystemInit();
    U0_Init(BAUD_115200);
    U0_PutStr("ADucM360 24bit ADC Test\r\n");
    
    Led1Init();
    Led1On();
    
    // Place ADC1 in Idle mode        
    AdcGo(pADI_ADC1,ADCMDE_ADCMD_IDLE);
    ADC1INIT();
    
    // Start ADC1 for continuous conversions
    AdcGo(pADI_ADC1,ADCMDE_ADCMD_CONT);
    // Enable ADC1 and UART interrupt sources   
    NVIC_EnableIRQ(ADC1_IRQn);
    
    while (1)
    {
        DebugPrint("%d\r\n", ulADC1Result);
        Delay(100);      // Delay routine
    }
}



반응형