yelong98 发表于 2009-12-24 08:34:56

请教16位tlc4541的AD输出转换值恒定的问题,请前辈指点

TI的数据手册提到关于引脚FS的处理问题,手册对FS的引脚描述中提到Tie this pin to VDD if not used。如果不使用,要连接到VDD。
但是在后面的介绍中,关于芯片上电初始化的问题中又提到:
The TLC4541 has separate CS and FS pins. In this case, it is also possible to initiate the RESET cycle by asserting FS low if CS is already low. The RESET cycle can be terminated by either asserting CS high (as shown in the first RESET cycle in Figure 14), or by asserting FS high ( as shown in the second RESET cycle in Figure 14), whichever happens first.
TLC4541把CS和FS区分开来,在这种情况下,需要在CS置低的情况下拉低FS来进行初始化。任意拉高FS或者CS都可以终止初始化进程。

我现在的做法是把FS连接到VDD上,现在没办法判断是否初始化成功,因为初始化成功和转换数据失败,SDO都是输出FF00数据(根据数据手册,初始化成功和转换不成功都会输出FF00)。我目前读取AD转换的结果不正常,输出值总是恒定在某几个值上面,例如,输入电压从2V变化到2.5V时,输出数据都一样,可能要一直等到输入电压大于4v后才改变输出数据,我把电路草图放在附件里,请大虾们帮忙查看一下是不是硬件连接不符合ti的要求。
初始化子程序
/******************************************************************************
* 函数名称    :initiAD()   初始化AD芯片
* 功能描述    :初始化AD芯片
******************************************************************************/
initiAD()
{
char x;
ADcs=0;
ADtemp=0x0000;
for (x=0;x<6;x++)
   {
    ADclk=0;
    ADclk=1;
   }
   ADcs=1;
   delay(5);
   ADcs=0;
for (x=0;x<16;x++)
    {
   ADout=1;
   ADclk=0;
   ADtemp=(ADtemp<<1)|ADout;
   ADclk=1;
   }
ADcs=1;
return (ADtemp);
}
读取AD转换值子程序
/******************************************************************************
* 函数名称    :ReadAD   读ad子程序
* 功能描述    :读取一次ad转换值
******************************************************************************/
ReadAD()
{
char x;
ADtemp=0x0000;
ADcs=0;
for (x=0;x<24;x++)
{
ADclk=0;
ADclk=1;
}
ADcs=1;
delay(10);
ADcs=0;
for(x=0;x<16;x++)
    {
   ADout=1;
   ADclk=0;
   ADtemp=(ADtemp<<1)|ADout;
   ADclk=1;
   }
ADcs=1;
return(ADtemp);
}


      我的问题是:一。在和51单片机进行连接进行模拟spi通信时,FS引脚要怎么处理?接到VDD上还是接到单片机的某一个IO口上?

               二。我目前这种连接方式是否会导致初始化不成功?

               三。初始化是在通电后进行一次,以后都不需要再进行了,还是在每次AD转换之前都要进行一次?

               四。如果初始化不成功,是不是会出现我目前遇到的输出数据不变化的现象?
我把ti原版的技术手册和我翻译的内容都贴出来,大家帮忙找找问题。
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_518087.jpg
(原文件名:circuit diagram.jpg)

点击此处下载 ourdev_518088.pdf(文件大小:666K) (原文件名:tlc4541.pdf)
点击此处下载 ourdev_518089.doc(文件大小:266K) (原文件名:16位ad转换器TLC4541(4545,3541,3545)中文资料.doc)

yelong98 发表于 2009-12-24 08:37:56

我个人感觉像是AD的采样根本没采进去才导致输出数据没变化,但是这个片子采样频率是200ksps,足够快了,这么简单的电路实在不知道问题出在哪里,搞了一个星期了还没搞定,害得我现在晚上睡觉做梦都在想这个问题,早上起床累死了!各位高人帮忙找找问题,小弟先谢谢了!

youpeng 发表于 2010-4-20 14:41:32

楼主的问题解决了吗,请教一下tlc4541采购价格是多少,谢谢

jxhcumt727 发表于 2010-6-2 10:14:52

和楼主一样的问题啊!求教!

jxhcumt727 发表于 2010-6-2 15:52:18

for(x=0;x<16;x++)
    {
   ADout=1;
   ADclk=0;
   ADtemp=(ADtemp<<1)|ADout;
   ADclk=1;
   }
请教:LZ程序中ADout=1是为啥?你这个ADout定义的不是TLC4541的SDO脚吗?

iwxg 发表于 2012-4-30 22:40:55

前辈,我也遇到这问题,没人用这款芯片吗,
页: [1]
查看完整版本: 请教16位tlc4541的AD输出转换值恒定的问题,请前辈指点