This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DDC112问题求助

Other Parts Discussed in Thread: DDC112

我在使用AVR单片机+CPLD操作DDC112,DDC112工作在非连续状态,充电时间为TINT=200us,我将DDC112的二个输入电流通道都接地,测得20bit转换结果为0,而不是4096,请问可能错在啥地方?  我将一个2M和470K的电阻加上电压接到电流输入通道时,能测得数据 ,程序如下:

INT32 DDC112_GET_DATA(void)
{
INT8U  i;
INT32  data;
data = 0;
PORTB &= (~(1<<PB7)); //DCLK输出低电平
    for(i=20;i>0;i--) //
 {   data<<=1;//data右移1位
 
        PORTB |= (1<<PB7);    //DCLK
  
  if((PINB&(1<<6))) //如果输出为高电平
  data|=0x00000001;//按位或运算,置位最低位
  
  DelayUS(5);
  PORTB &= (~(1<<PB7)); //DCLK输出低电平
  DelayUS(5);
 }
 data&=0x0fffff;//清零高12位;
 return(data); //
}

//------------------------------------------------------------------- read_data
void DDC112_READ_DATA(void)      //Non Continuous modda datalar okunuyor.
{
 INT8U  i;
 for(i=0;i<2;i++)
 BUF[i] = 0;
 PORTB |= (1<<PB3);//CONV_C置高
 DelayUS(10);
 PORTB &= (~(1<<PB3));//CONV_C置低
 //DelayUS(100);
while((PIND & (0x01<<2))) ;//DVALID      PIND.2
PORTB &= (~(1<<PB4));//DXMIX=0 
 BUF[1] = DDC112_GET_DATA(); 
PORTB |= (1<<PB4);    //output_high(DXMIT);

while((PIND & (0x01<<2))) ;//DVALID      PIND.2
 PORTB &= (~(1<<PB4));//DXMIX=0 
 BUF[0] = DDC112_GET_DATA(); 
 PORTB |= (1<<PB4);    //output_high(DXMIT);
 
 
 DelayUS(1000);
}

其中CONV_C是通过单片机接到CPLD,通过CONV_C置高产生CONV信号,TINT=200US,通过示波器可以测得各个信号均能正常工作,就是通道接地,我读datasheet,觉得转换结果应该是4096,而测得是0,请专家给点建议,谢谢,邮箱:dandedong2006@163.com