微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于AD转换的问题

关于AD转换的问题

时间:10-02 整理:3721RD 点击:
用的转换芯片为ADS1230。
要采集的信号为7mV时,转换数据为0x114左右,采集信号为14mV时,转换数据为0x1183左右。
为了方便,参考电压和供电电压都是3.3V的,根据芯片资料,AD转换范围是正负3.3/2/64=25.87mV。
这个芯片是20bit的AD转换。0----25.87mV对应的数字量应该是0----0x7FFFF。这是怎么回事?
附上程序:
//初始化ADS1230
void ADinit( void )
{
ADpdwn = 1;
Device_Clk_Delay( 40 );
ADpdwn = 0;
Device_Clk_Delay( 1000 );
ADpdwn = 1;
Device_Clk_Delay( 400 );

ADsclk = 0;
}

//读取ADS1230的转换结果
unsigned long ADconvert( void )
{
unsigned long ulResult = 0;
unsigned int uiTemp = 0;
unsigned char ucTemp = 0;
unsigned char i = 0;
unsigned char j = 0;

ADsclk = 0;

for( j = 0 ; j < 30 ; j++ );

while( 1 )
{
  PCA0CPH4 = 0;          //  喂狗
  
   if( ADdout == 0 )                                     //确认AD转换是否完成
    {
     for( j = 0 ; j < 180 ; j++ );
   
     for( i = 0 ; i < 12 ; i++ )                     //读高12位数据
     {
      ADsclk = 1;
   
      for( j = 0 ; j < 30 ; j++ );
   
      if( ADdout == 1 )
       {
        uiTemp = ( uiTemp << 1) | 0x0001;
       }
      else
       {
        uiTemp = uiTemp << 1;
       }
     
      ADsclk = 0;
   
      for( j = 0 ; j < 30 ; j++ );
     }
   
     for( i = 0 ; i < 8 ; i++ )                      //读低8位数据
     {
      ADsclk = 1;
   
      for( j = 0 ; j < 30 ; j++ );
   
      if( ADdout == 1 )
       {
        ucTemp = ( ucTemp << 1) | 0x01;
       }
      else
       {
        ucTemp = ucTemp << 1;
       }
     
      ADsclk = 0;
   
      for( j = 0 ; j < 30 ; j++ );
     }
   
     ADsclk = 1;                                     //发送第21个时钟脉冲,使ADS1230芯片的DOUT输出拉高
   
     for( j = 0 ; j < 30 ; j++ );
   
     ADsclk = 0;
   
     for( j = 0 ; j < 30 ; j++ );
   
     ADdout = 1;
   
     for( j = 0 ; j < 30 ; j++ );
     
     PCA0CPH4 = 0;
     
     break;
    }
  
}

ulResult = uiTemp;
ulResult = ulResult << 8;
ulResult = ulResult | ucTemp;
   
return ulResult;
  
}

顶上去啊,来人啊  

继续顶上去

有没有人给点建议?

周末人好少啊

看不懂

快被遗忘了

周一了,都应该上班了吧

7mV    对应0x114
14mV,对应0x1183
这种AD是线性的吧,你觉得能这么对应么?

就是因为觉得不能这么对应啊,不过又找不到问题。
AD是串行输出,对应了一下时序也没发现问题。
如果时序有问题,应该接收不到数据吧。
论坛有没有用过这个芯片的啊。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top