ADuC7060内部集成了两个24位的独立AD模块,Datasheet上写的AD的参考电压可以使用AVDD,但是我实验
电路的接线如下:AVDD=2.5V,REF+=2.5V,REF-=AGND,ADC0=GND,ADC1=1.24V(两个等值电阻通过AVDD到地分压得到),ADCON寄存器内的HIGHEXTREF0 和ADC0REF[1:0]都已经考虑了参考电压大于1.35V的情况,ADC0REF[1:0]设置成01或者11,即REF+,REF-作为参考电压或者AVDD和AGND作为参考电压,系统都不能够输入大于1.25V的电压。使用的初始化程序如下:
ADC0初始化程序:
ADCMSKI = BIT0; // Enable ADC0 result ready interrupt source
ADCFLT = 0x7; // Chop off, 1Khz samping rate, SF = 7. No averaging
ADCMDE = BIT0 + //Con
tinuous Conversion mode,
BIT7; // Normal mode, 4Mhz clock source to ADC.
ADC0CON = BIT4 + //extern reference inputs (REF+,REF-)
BIT6 +
BIT10 + // Unipolar ADC output
BIT12+ //extern reference exceed 1.35V
BIT15; // Gain = 1, Buffer on. Also, Int reference,
ADCCFG = 0;
IRQEN = BIT10; //open ADC irq interupt
IRQ中断程序:
__irq __arm void IRQ_Handler(void)
{
unsigned long IRQSTATUS="0";
IRQSTATUS = IRQSTA;
if((IRQSTATUS BIT10) == BIT10)
{
ulADC0Result = ADC0DAT;
}
}
ADC0转换结果是:ulADC0Result = 0x00F56F08;接近满量参考电压2.5V对应的电压值,但是我的输入电压是1.24V。
我的问题是:是否ADuC7060的最高参考电压并不能做到2.5V或者ADC存在问题,再或者我的程序有问题?如果ADuC7060的最高参考电压可以做到2.5V,应如何设置?