Lpc1768內(nèi)置有一個ad外設(shè),該外設(shè)有八路復(fù)用輸入,所以,可以同時接八路ad設(shè)備,同時還支持觸發(fā)轉(zhuǎn)換模式,由外部端口進(jìn)行ad觸發(fā),ad轉(zhuǎn)換完成之后可以產(chǎn)生中斷
Lpc1768支持的轉(zhuǎn)換模式有兩種,分別會連續(xù)轉(zhuǎn)換模式和軟件單次轉(zhuǎn)換模式,連續(xù)轉(zhuǎn)換模式可以自動的按照我們選擇的轉(zhuǎn)換位進(jìn)行ad的依次轉(zhuǎn)換,單次轉(zhuǎn)換模式是軟件轉(zhuǎn)換,只能一次轉(zhuǎn)換一個ad值
使用AD分為以下幾步
打開ADC時鐘,注意,順帶gpio的時鐘也要打開
設(shè)置gpio的功能為ad
設(shè)置轉(zhuǎn)換模式和轉(zhuǎn)換引腳
設(shè)置轉(zhuǎn)換時鐘,設(shè)置轉(zhuǎn)換器正常工作模式都是在cr中完整
設(shè)置轉(zhuǎn)換完成中斷
在轉(zhuǎn)換完成之后提取轉(zhuǎn)換結(jié)果
代碼例程如下
void adc_init(u8 div)//最大時鐘不得大于13M
{
//打開ADC和IO口時鐘
LPC_SC->PCONP"=(1<<15)|(1<<12);
LPC_PINCON->PINSEL0&=~(3<<14);
LPC_PINCON->PINSEL0|=1<<14;//選擇adc功能
LPC_ADC->ADCR=0X00;
LPC_ADC->ADCR|=(1< LPC_ADC->ADINTEN=0x00;//禁用全部中斷 } u16 adc_cover(u8 ch) { u16 temp; LPC_ADC->ADCR&=~(0x000000ff); LPC_ADC->ADCR|=(1< LPC_ADC->ADCR|=1<<24;//啟動轉(zhuǎn)換 while(!(LPC_ADC->ADGDR&(1u<<31)));//等待轉(zhuǎn)換結(jié)束 temp=(u16)((LPC_ADC->ADGDR&0x00000fff0)>>4); returntemp; }