打印

TLC2543问题不解

[复制链接]
2881|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 dita1983 于 2013-2-23 17:22 编辑

小弟最近在利用ATmega16L和TLC2543做模拟量数据采集问题。遇到TLC2543读数(dataout,以下简写SDO)不稳定的问题,在最近一周想尽了各种办法,问题仍是存在。初步断定是时序问题,可以就是无法解决,我把示波器的波形截图及代码粘贴如下,还望各位高人不吝指教。
1.      硬件连接
除SDO引脚外,TLC2543各引脚直接接单片机,中间没有任何电路。单片机电源和2543电源接12VDC经过7805转换后的5V。tlc2543的REF+、REF-与单片机电源接在一次(暂时没有基准电源芯片,个人觉得这个应该不会是影响后面数据不准的原因,因为数据不是不稳定,而且有点诡异,具体怎么诡异详见第3条)
2.      时序
小弟示波器只有两路,所以分别接入观察,SDI为1011,读取测试Vref/2的值。下图为片选信号。2543最大4Mhz,测试时特意降低clk频率。
3.      数据SDO问题。
问题描述:
【测试方法】我在AI0和AI1通道上分别接了1.6V和3.3V的电压监测点(通过电阻分压,即5V通过3个电阻,这两个监测点取电阻上的信号)。然后我程序首先读取通道0的数据三次(第一次读出的抛弃,是上一个通道的值),每次间隔约500ms。然后延迟1S左右同样读取通道1的数据三次,每次间隔约500ms。全部读取完后发送给串口(串口程序已经在产品上应用过,没有任何问题),串口发送完毕后再开始循环读取这两个通道的值一次,读完后再通过串口发送,如此循环。
【诡异现象】
通过串口监测发现,有时通道0和1的值基本相同,通过其他电压测试发现,目前得出如下结论:
AI测试电压在0~2.5V之间时SDO读数为0x000~FFF之间变换,电压在2.5V~5V之间读数又从0x000~FFF之间变换。但并不是每次都这样,偶尔有几次又会正常,即2.5V以下为0~0x800之间,2.5V以上为0x800到0xFFF。
我把TLC的datasheet(英文)和时序图看了多几遍,也没有发现问题。在网上搜下,发现也有人出现这种情况,说是时序问题,不过没有说解决方法。还恳请高人不吝指点,我都快疯了,这一个星期就在不停的试试试试试试试试试试~~下图为3某次1.6V的测试电压时SDO波形图。


程序部分代码如下:
unsigned intread2543(unsigned char ch)
{
   unsigned int ad;
   unsigned char i;
   unsigned char j;
   unsigned char port;

    port=ch; //ch为10进制通道号
        ad=0;
   //Tlc_clk_low;//clk置为低电平
   //delay(3);
   Tlc_cs_low;//cs置为低电平

       port<<=4;
         for(i=0;i<12;i++)
    {
        delay(3);
         If(Tlc_sdo==0)
        {
        }
        else
        {
        ad|=0x01;
        }

              if((port&0x80)==0)//load SDI
       {Tlc_sdi_low;}
     else
       {Tlc_sdi_hi;}
       delay(10);


        Tlc_clk_hi;
        delay(30);
     Tlc_clk_low;
      port<<=1;   
     ad<<=1;
        delay(30);
    }
       delay(1);
        Tlc_cs_hi;

   delay(3);
  // Tlc_cs_hi;
  ad>>=1;
   return(ad);
}

tlc2543诡异问题.rar

19.67 KB

相关帖子

沙发
dita1983|  楼主 | 2013-2-23 12:24 | 只看该作者
本帖最后由 dita1983 于 2013-2-23 17:24 编辑

附件内是以word格式整理的资料,请高人指点。一直很奇怪,仿真没有任何问题,但是读出就不知道怎么回事了。芯片都已经调换过了,问题还是同样

使用特权

评论回复
板凳
dita1983|  楼主 | 2013-2-23 17:11 | 只看该作者
本帖最后由 dita1983 于 2013-2-23 17:28 编辑

补充说明:这样做通过proteus仿真一点问题都没有,非常稳定可靠。电路应该也不会有问题,已经检查过。除了我没有用基准电压之外,其他都是参考datasheet的。个人估计不会是基准源的问题,因为根据说明,基准源不准最多也就是读数跳动的厉害。个人主要怀疑两个问题:一个是时序,这个我实在是看不出来时序问题,但就是有这种感觉。另一个就是电源的问题,DC电源出来后经过7805转换成5V,电路就是书上那种经典电路,下周准备换个电源实施,把tlc2543的基准源独立出来看看。

使用特权

评论回复
地板
yulunna| | 2013-2-24 13:28 | 只看该作者
以前也用过这种ADC,出现过这种问题,最后换块IC就好了

使用特权

评论回复
5
coody| | 2013-2-24 18:19 | 只看该作者
TI的东西,贵,但是质量肯定好,LZ检查自己的应用,包括软件和硬件

使用特权

评论回复
6
dita1983|  楼主 | 2013-2-26 14:26 | 只看该作者
TI的东西是不便宜,呵呵,所以才选用,没有想到出现这个问题。我估计不是芯片的问题。昨天把CLK频率提高以后,反而正常了~~,但在30000次读取中,有500多次跳动超过0.1V,就是最大最小偏差超过0.2V

使用特权

评论回复
7
dita1983|  楼主 | 2013-2-26 14:27 | 只看该作者
今天继续努力,看看能不能再进一步

使用特权

评论回复
8
phoenix-l| | 2013-4-8 21:10 | 只看该作者
帮不了你啊,我最近在做照度计,也是被搞的焦头烂额,加油吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝