sztfgs 发表于 2008-11-25 08:07:47

TLC2543测量5V基准电压,数据在4.92V到4.98V之间跳动很厉害,不稳定,请教是什么原因?谢谢!

   大家好!

最近项目用到了12位AD芯片TLC2543,用的是STC单片机,晶振是22.1184MHz,双倍速后是44.2368MHz。

在调试TLC2543时,发现测试数据不准,而且波动很厉害。例如,测量5V基准电压(REF195高精度参考电压),数据在4.92V到4.98V之间跳动很厉害,不稳定,请教是什么原因?谢谢!

   程序如下:

/*******************************************************************/

/*  

/*   tlc2543驱动程序

/*                                                             

/*******************************************************************/

//TLC2543接口定义

//sbit P25   = P2^5;        //时钟口线

//sbit P24   = P2^4;        //地址输入口线

//sbit P23   = P2^3;        //数据输出口线

//sbit CS    = P1^3;        //片选口线

//sbit EOC   = P3^5;        //EOC转换完成口线



//由于测量数据为上一次转换的数据,故第一次测量的数据是不准确的



void read2543(uchar port)          //port:模拟通道号

{

  uchar i;        

        

  CS = 0;                          //设置片选为低. CS下降沿开始转换和传送过程                

  

  EA = 0;        

  ad = 0;                          //ad:uint全局变量,转换的结果

  ah = 0;                          //ah:uchar全局变量,转换结果的高4位

  al = 0;                          //al:uchar全局变量,转换结果的低8位

  delay_10us(1);

  

  P25 = 0;                         //清I/O时钟

  

  for(i = 0;i < 4;i++)

  {

    ah <<= 1;                      //ah装的是12位AD数据的高4位

    if(P23)                        //P23:数据输出口线。在第一个输出数据位之后的每个后续位由后续的CLOCK时钟下降沿输出 

    ah |= 0x01;                    //在使用CS时钟的传送,第一个输出数据位发生在CS的下降沿 

    P24 = (bit)(port & 0x80);      //P24:地址输入口线. DATA INPUT在前8个时钟的上升沿被移入器件.在前8个时钟之后,DATA INPUT便无效

    P25 = 1;                       //P25:时钟口线,以产生时钟上升沿

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();             

    P25 = 0;                       //P25:时钟口线

    port <<= 1;

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();             

  }

 

  for(i = 0;i < 8;i++)

  {

    al <<= 1;        

    if(P23)                        //P23:数据输出口线

    al |= 0x01;

    P24 = 0;                       //P24:地址输入口线. DATA INPUT在前8个时钟的上升沿被移入器件.在前8个时钟之后,DATA INPUT便无效

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();            

    P25 = 1;                       //P25:时钟口线,以产生时钟上升沿

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();              

    P25 = 0;                       //P25:时钟口线

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();  

    _nop_();

    _nop_(); 

    _nop_();

    _nop_();             

  }

  

  ad = ah;

  ad = (ad << 8) | al;

  CS = 1;

  

  EA = 1;               

}

本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,08:36:55.

h572 发表于 2008-11-26 21:36:19

估计外部电路没处理好,

sztfgs 发表于 2008-11-25 12:02:04

我用其它的采集板(用的是TLV2548),10次/秒的采样速度,采集样板上的TLC2543基准电压,是4.998V,而且很稳定。



这个问题真是头大了...

lljyes 发表于 2008-11-28 18:36:54

同样遇到这个问题,采样交流信号时,跳动较大!现在怀疑跟输入阻抗有关!

sztfgs 发表于 2008-11-28 17:27:11

我把TLC2543的EOC引脚去掉,该为延时10us,终于正常了。测试结果在4.990V到4.998V之间,还比较满意。



不知道STC89LE516RD+的P35引脚要怎么设置,加上EOC引脚反而不好,还请高手解答,谢谢!

eaglelpx 发表于 2008-11-25 11:20:54

你采样慢点看看,应该可以稳定在4.997~4.999,然后就是电路的问题了

sztfgs 发表于 2008-11-25 10:12:13

我选用的基准芯片是REF195,E级,最好的了,误差是2mV(即范围是:4.998V到5.002V之间),温漂:5 ppm/°C Max,最大输出电流:30mA。 这样的基准参考电压如果还是不稳定,那真是没办法了。

本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,10:12:51.

kdtcf 发表于 2008-11-25 09:16:12

还要确定一下你的2543的基准是不是很稳定,万用表采样率才几HZ稳定性比2543高多了

sztfgs 发表于 2008-11-25 08:50:33

5V基准电压用万用表测量,是很稳定的5.00V,一点跳动都没有。



我现在都有点怀疑是不是AD芯片的问题,因为这个TLC2543在样板上焊下来悍上去的,会不会出现问题。但还可以转换呀,只是不准而已。



以前我在学校用TLC2543,基准电压接的是7805的VCC电源,测试基准电压都很准,在4.99V左右,不会波动。这次真是奇怪了...

sztfgs 发表于 2008-11-25 08:15:30

程序中调用TLC2543子程序部分如下:



        read2543(0xd0);        //测量5V基准电压

        while(EOC == 0);      //EOC引脚

        read2543(0xd0);        //第一次读数不准确,再读一次

        while(EOC == 0);      //EOC引脚。等待AD转换结束

本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,08:35:09.

sztfgs 发表于 2008-11-25 08:11:22

   程序中加了很多_nop_(),是因为考虑到时钟频率很高(44.2368MHz),想降低IO CLOCK的速度。我试过如果_nop_()加的少,或者没加,测试的结果更不准,测试5V的高精度基准电压,结果在4.92V到4.94V之间,同样波动很厉害,数据显示不稳定,跳动。

bbsbbs 发表于 2008-11-26 23:54:29

在转换期间把CPU停止,用转换中断唤醒CPU继续工作。试试看?

sztfgs 发表于 2008-11-26 09:48:23

今天换了块2543(也是旧的),情况有所好转,测基准在4.970V到4.982V之间,但还达不到要求。不知是不是芯片的问题...



还有一个问题,我用的STC单片机是3.3V的,而TLC2543是5V的,我是用IO口直接连接(因为STC资料说任何IO口最高可加5.5V),不知这样会不会有问题?

haolele 发表于 2009-5-24 19:09:20

留个痕迹

v8se 发表于 2009-6-12 19:00:49

这么大的波动啊,都8mV了。我用STC5410AD系列的内部ADC都没这么大跳动。

在程序里加过采样试试

willzhang 发表于 2012-5-1 20:09:25

本帖最后由 willzhang 于 2012-5-1 20:13 编辑

1、看看AD的参考电压正负端是否稳定
2、TLC2543是开关电容型AD,要求低阻源,你的满足吗

小滑头520 发表于 2012-8-23 23:49:34

我弱弱的问一句 你怎么知道他在那段跳动的厉害? 是用液晶显示出来的吗? 还是在哪里观察的呢? 求指教···
页: [1]
查看完整版本: TLC2543测量5V基准电压,数据在4.92V到4.98V之间跳动很厉害,不稳定,请教是什么原因?谢谢!