본문 바로가기

Cortex-M/NUVOTON

M052LBN EVM - NUVOTON 12bit ADC 테스트

M052LBN EVM - NUVOTON  12bit ADC 테스트



NUVOTON M051 시리즈 ADC는 최대 12비트해상도 이고 특이사항으로 5V까지 측정 가능하다.


- 입력레인지 : 0~5V

- 10bit 12bit, 해상도

- 8채널 싱글, 4채널 differenctial

- 760kSPS (16Mhz)




M052LBN ADC 블록도




M052LBN ADC 초기화 코드

void ADCInit( void)

{

    SYS_UnlockReg();

    /* Enable ADC module clock */

    CLK_EnableModuleClock(ADC_MODULE);

    /* ADC clock source is 22.1184MHz, set divider to 7, ADC clock is 22.1184/7 MHz */

    CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_CLKDIV_ADC(7));

    

 

    //ADC 포트 설정

    GPIO_DISABLE_DIGITAL_PATH(P1, BIT0);


    SYS->P1_MFP &= ~(SYS_MFP_P10_Msk);

    SYS->P1_MFP |= SYS_MFP_P10_AIN0;

    SYS_LockReg();

}



M052LBN ADC Read 코드

nsigned int ADCRead( unsigned int channelNum )

{

    ADC_Open(ADC, ADC_ADCR_DIFFEN_SINGLE_END, ADC_ADCR_ADMD_SINGLE_CYCLE, BIT0<<channelNum);


    /* Power on ADC module */

    ADC_POWER_ON(ADC);


    /* clear the A/D interrupt flag for safe */

    ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);


    /* start A/D conversion */

    ADC_START_CONV(ADC);


    /* Wait conversion done */

    while(!ADC_GET_INT_FLAG(ADC, ADC_ADF_INT));


    return ADC_GET_CONVERSION_DATA(ADC, channelNum);    

}




M052LBN ADC 테스트 코드

int main(void)

{

    _SystemInit();

    

    Led1Init();

    Led1On();


    Led2Init();

    Led2On();

    

    //Serial Init

    DebugInit(BAUD_115200);

    DebugPrint("NUVOTON ADC Test Program.\r\n");

    

    //ADC 초기화

    ADCInit();


    while(1)

    {

        DebugPrint("adc=%d\r\n", ADCRead(0));

        Led1Toggle();

        Delay(300);

    }

}




M052LBN ADC 테스트 동영상

NUVOTON M052LBM 의 ADC Ch0에 연결되어 있는 VR의 전압값을 TFT-LCD 그래프로 표시하는 테스트


반응형