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)
一周热门 更多>