我们在使用端口WFP 1.4 测量低于5mV的低电压时遇到问题。 对WFP 1.4 的输入进行缓冲。 当输入为2mV时,我们 必须在 'ADC12CTL0 |= ADC12ENC | ADC12SC'语句后添加30秒延迟,否则,测量结果为0或1计数。 有人知道这是什么原因吗? 感谢您的参与。
//打开电源
Power_Port_DIR || Ac_on;
Power_Port_Out || Ac_on;
//配置ADC
ADC_PORT_SEL1 || RMS_ADC;
ADC_PORT_SEL0 |= RMS_ADC;
ADC12CTL0 &=~ADC12ENC; //启用修改
ADC12CTL0 = ADC12SHT0_2 + ADC12ON + ADC12MSC; // ADC12ON,S&H=64 ADC CLKS;5M/(64+15)=65.8KHz
ADC12CTL1 = ADC12SSEL_0 + ADC12SHS_0 + ADC12SHP + ADC12DIV_5 + ADC12CONSEQ_2; // ADCCLK = MODOSC = 5MHz
//ADC12SC位,采样保持源选择
//SAMPCON信号来自采样计时器//除以6=83.3333万
//重复单通道
ADC12CTL2 = ADC12RES_2; // 12位转换结果
ADC12MCTL0 = ADC12INCH_4 +ADC12VRSEL_1;
while (REFCTL0 & REFGENBUSY); //如果ref发生器忙,请等待
REFCTL0 || REFVSEL_1+REFON; //选择内部参考= 2.0V
ADC12CTL0 || ADC12ENC | ADC12SC; //开始转换
配置Timer_B0(150);//150* 0.2 =30秒
while (!timed_outB0)__bis_sr_register (LPM3_BITS + GIE);
TB0CTL = MC_0 ; //MC=00已停止
timed_outB0 = 0;
用于(i=0;i<tSample;i++)
{
// 移动AVG = 0;
// ADCresult = 0;
//用于(j=0;j<256;j++)
//{
同时(!(ADC12IFGR0和BIT0));
// movingAVG += ADC12MEM0;
//}
// ADCresult =移动AVG >> 4;
// ADCresult =移动AVG/10;
// __delay_cycles (100万);
*FRAM_WRITE_PTR++= ADC12MEM0;
}
ADC12CTL0 &=~ADC12SC;