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 그래프로 표시하는 테스트