打印

奇怪了!tlc2543.

[复制链接]
2797|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
孤星119|  楼主 | 2009-7-14 16:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我今天从库房找了片AD转换芯片TLC2543(从没用过).搭好外围电路,写好驱动,开始上电使用,转换读出的数据还算稳定,但数据跟我想象的不一样,如下:
当模拟输入电压变化范围为0~2.5V时,采样转换的数据竟然为0~0X0FFF(0X0FFF为满值).当模拟电压变为为2.5~5V时,采样数据又从新为0~0X0FFF.我的基准电压直接接VCC(5V).按我的理解应该是:模拟电压输入为0~5V时,采样数据为0~0X0FFF啊.怎么回事,望各位老师帮我指导指导啊,谢谢.

相关帖子

沙发
tjjack| | 2009-7-14 17:18 | 只看该作者

是不是芯片坏了

还有可能是程序的问题

使用特权

评论回复
板凳
孤星119|  楼主 | 2009-7-15 08:37 | 只看该作者

谢谢楼上的关注

正常情况下是不是为模拟输入范围为0~VCC(VCC=5)时,转换输出为0~0X0FFF啊.我也感觉可能是程序的问题.以下是我的驱动程序,各位帮我看看,哪里有比较明显的错误.谢谢.
//--------------------------------------------------
//             函数名称:   AD_Conver
//             函数功能:   AD转换
//             入口参数:    地址命令字
//             出口参数:    AD值
//--------------------------------------------------
unsigned int AD_Conver(unsigned char channel)
{
     unsigned int i; 
     unsigned int ad_value = 0;
     CLK = 0;
     CS = 1;
     delayAD();
     delayAD();
     delayAD();
     CS = 0;
     channel <<=4;
     for (i = 0; i < 12; i++)         
     {                                
         
         if(DOUT) 
         ad_value|=0x01; 
         DIN =(bit)(channel &0x80); 
         CLK = 1;       
         _nop_();
        _nop_();
        _nop_();
        CLK=0; 
        _nop_();
        _nop_();
        _nop_(); 
        channel   <<=1; 
        ad_value <<=1; 
     }
     CLK =1;
     CS = 1;
     ad_value >>=1; 
     return (ad_value);
}

使用特权

评论回复
地板
孤星119|  楼主 | 2009-7-15 09:43 | 只看该作者

各位:留意一下我啊.感激啊.

我刚才使用了芯片自测试功能,发现现象一样的:测试Vref+时数据为0X0FFF;测试Vref-时为0X0000;测试(Vref+ -Vref-)/2时,数据又为0x0FFF;真是怪了.

使用特权

评论回复
5
孤星119|  楼主 | 2009-7-15 14:56 | 只看该作者

终于搞定了,谢谢各位的关注.

只需将我上面贴出来的程序中的倒数第5行的"CLK =1;"删除.就能正常工作了.感觉自己太粗心了,时序都看了几边,也没发现这个问题(关键是现象诱惑了我的大脑).

使用特权

评论回复
6
pengjianxue| | 2009-7-16 11:52 | 只看该作者

时序

时序问题

彭建学 上海

使用特权

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

本版积分规则

33

主题

689

帖子

0

粉丝