問題如下面敘述:
使用MSP430F1611,給定電壓範圍0~3V,AD採樣範圍為0~4095
我有一個PCB板,板子上的MSP接上信號產生器的1.5V、1kHz方波,取最大值,得到的AD採樣為2200,但是理論上AD採樣值應該會接近2048;
我用示波器量AD採樣的腳位,示波器上電壓顯示是1.5V沒錯,為什麼量測出來的AD值卻不正確?
另一個測試是使用MSP開發板,同樣接1.5V、1kHz方波,取AD最大值,結果是很接近理論值2048的
附上AD設置:單通道採樣4000點
------------------------------
void ADC_Init(void)
{
ADC12CTL0 &= ~ENC;
ADC12CTL0 = SHT0_2 + ADC12ON; // Turn on ADC12, set sampling time
ADC12CTL1 = CSTARTADD_0 + SHS_0 + SHP + ADC12DIV_0 + ADC12SSEL_0 + CONSEQ_0;
//ADC12CTL0 = SHT1_4 + SHT0_4 + ADC12ON;
//ADC12CTL1 = SHS_0 + SHP + CONSEQ_0;
ADC12MCTL0 |= SREF_0 + INCH_0; // A0 goes to MEM0
ADC12IE = 0x0001; // Enable ADC12IFG.7 for ADC12MEM7
ADC12CTL0 |= ENC; // Enable & start conversions
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
//while((ADC12CTL1 & ADC12BUSY) == 0);
if(adc_index < 4000)
{
adc_index++;
Voltage_Buffer = ADC12MEM0;
if(Vmax < Voltage_Buffer) Vmax = Voltage_Buffer;
}
if(adc_index == 4000)
{
m = 2;
//_BIC_SR_IRQ(CPUOFF);
}
}
----------------------------------------------
PCB板上的MSP在AD採樣前有先接Buffer,有用示波器量AD採樣腳位電壓也是對的,結果採樣的數值會偏大,偏大的量也非固定值,請問這是什麼原因呢??
任何可能的原因都可以提出來參考,請教各位了
此帖出自
小平头技术问答
一周热门 更多>