PIC16位單片機(jī)CAN(6)外部AD
AD7170是一款低功耗ADC,片內(nèi)集成精密12位Σ-Δ調(diào)制器和數(shù)字濾波器,用于測(cè)量寬動(dòng)態(tài)范圍、低頻信號(hào)。該器件具有一個(gè)內(nèi)部時(shí)鐘和一路差分輸入,輸出數(shù)據(jù)速率為125 Hz,增益為1。雙線式接口可簡(jiǎn)化從AD7170獲取數(shù)據(jù)的過程。
簡(jiǎn)單一句話。一個(gè)時(shí)鐘輸入,一個(gè)串行轉(zhuǎn)換輸出。模擬輸入為雙極性輸入。
時(shí)鐘和串行數(shù)據(jù)輸出就不多說了,看看時(shí)序就知道了。重點(diǎn)看一下什么叫做雙極性輸入。
AD7170支持雙極性輸入范圍。雙極性輸入范圍不代表器件可以耐受相對(duì)于系統(tǒng)GND的負(fù)電壓。AIN(+)輸入端的信號(hào)以AIN(?)輸入端的電壓為基準(zhǔn)。例如,當(dāng)使用2.5 V基準(zhǔn)電壓時(shí),如果AIN(?)為2.5 V,則AIN(+)輸入的模擬輸入范圍為0 V至5 V。
重點(diǎn)是數(shù)據(jù)輸出編碼!!!
當(dāng)ADC的輸入設(shè)為單極性輸入時(shí),ADC的輸出碼是直接二進(jìn)制形式。以16位ADC為例,當(dāng)輸入為0V時(shí),輸出碼是0x0000;當(dāng)輸入是一半量程時(shí),輸出碼為0x8000;當(dāng)輸入為滿量程時(shí),輸出為0xFFFF。
如果ADC的輸入是雙極性的,那么ADC的輸出碼為偏移二進(jìn)制形式,以16位ADC為例,當(dāng)輸入為負(fù)的滿量程,輸出碼為0x0000;當(dāng)輸入為0V,輸出碼為0x8000;當(dāng)輸入為正的滿量程,輸出為0xFFFF。
具體的編碼輸出可以看datasheet說明。提倡看英文版的,因?yàn)橹形陌娴囊壮鲥e(cuò)!
根據(jù)datasheet,我使用引腳電平變化中斷來確定什么時(shí)候AD轉(zhuǎn)換完成。
void __attribute__((__interrupt__,no_auto_psv)) _CNInterrupt(void)
{
IFS1bits.CNIF=0;//輸入電平變化通知中斷標(biāo)志狀態(tài)位
IEC1bits.CNIE=0;//輸入電平變化通知中斷允許位
if(PORTAbits.RA1==1)
{
Nop();
}
else
{
AD_Data=AD_ReadData()/2;
}
IEC1bits.CNIE=1;//輸入電平變化通知中斷允許位
}
評(píng)論