搜索
bottom↓
回复: 5

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

[复制链接]

出0入135汤圆

发表于 2009-12-24 08:34:56 | 显示全部楼层 |阅读模式
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原版的技术手册和我翻译的内容都贴出来,大家帮忙找找问题。

(原文件名:circuit diagram.jpg)

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入135汤圆

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

出0入0汤圆

发表于 2010-4-20 14:41:32 | 显示全部楼层
楼主的问题解决了吗,请教一下tlc4541采购价格是多少,谢谢

出0入0汤圆

发表于 2010-6-2 10:14:52 | 显示全部楼层
和楼主一样的问题啊!求教!

出0入0汤圆

发表于 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脚吗?

出0入0汤圆

发表于 2012-4-30 22:40:55 | 显示全部楼层
前辈,我也遇到这问题,没人用这款芯片吗,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 00:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表