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. 估计外部电路没处理好, 我用其它的采集板(用的是TLV2548),10次/秒的采样速度,采集样板上的TLC2543基准电压,是4.998V,而且很稳定。
这个问题真是头大了... 同样遇到这个问题,采样交流信号时,跳动较大!现在怀疑跟输入阻抗有关! 我把TLC2543的EOC引脚去掉,该为延时10us,终于正常了。测试结果在4.990V到4.998V之间,还比较满意。
不知道STC89LE516RD+的P35引脚要怎么设置,加上EOC引脚反而不好,还请高手解答,谢谢! 你采样慢点看看,应该可以稳定在4.997~4.999,然后就是电路的问题了 我选用的基准芯片是REF195,E级,最好的了,误差是2mV(即范围是:4.998V到5.002V之间),温漂:5 ppm/°C Max,最大输出电流:30mA。 这样的基准参考电压如果还是不稳定,那真是没办法了。
本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,10:12:51. 还要确定一下你的2543的基准是不是很稳定,万用表采样率才几HZ稳定性比2543高多了 5V基准电压用万用表测量,是很稳定的5.00V,一点跳动都没有。
我现在都有点怀疑是不是AD芯片的问题,因为这个TLC2543在样板上焊下来悍上去的,会不会出现问题。但还可以转换呀,只是不准而已。
以前我在学校用TLC2543,基准电压接的是7805的VCC电源,测试基准电压都很准,在4.99V左右,不会波动。这次真是奇怪了... 程序中调用TLC2543子程序部分如下:
read2543(0xd0); //测量5V基准电压
while(EOC == 0); //EOC引脚
read2543(0xd0); //第一次读数不准确,再读一次
while(EOC == 0); //EOC引脚。等待AD转换结束
本贴被 sztfgs 编辑过,最后修改时间:2008-11-25,08:35:09. 程序中加了很多_nop_(),是因为考虑到时钟频率很高(44.2368MHz),想降低IO CLOCK的速度。我试过如果_nop_()加的少,或者没加,测试的结果更不准,测试5V的高精度基准电压,结果在4.92V到4.94V之间,同样波动很厉害,数据显示不稳定,跳动。 在转换期间把CPU停止,用转换中断唤醒CPU继续工作。试试看? 今天换了块2543(也是旧的),情况有所好转,测基准在4.970V到4.982V之间,但还达不到要求。不知是不是芯片的问题...
还有一个问题,我用的STC单片机是3.3V的,而TLC2543是5V的,我是用IO口直接连接(因为STC资料说任何IO口最高可加5.5V),不知这样会不会有问题? 留个痕迹 这么大的波动啊,都8mV了。我用STC5410AD系列的内部ADC都没这么大跳动。
在程序里加过采样试试 本帖最后由 willzhang 于 2012-5-1 20:13 编辑
1、看看AD的参考电压正负端是否稳定
2、TLC2543是开关电容型AD,要求低阻源,你的满足吗 我弱弱的问一句 你怎么知道他在那段跳动的厉害? 是用液晶显示出来的吗? 还是在哪里观察的呢? 求指教···
页:
[1]