/*TLV2542转换*/
void tlv2542()
{
unsigned char n;
unsigned char i;
//sclk_1;
cs_1;
nop();
cs_0;
for(i=0;i<6;i++) //复位
{
sclk_1; //1
nop();
sclk_0 ;
nop(); }
cs_1;
nop();
cs_0;
nop();
nop();
nop();
nop();
sclk_1;
sclk_0;
sclk_1;
h_byte=0;
for(n=0;n<8;n++)
{ sclk_0;
if(sdo_read)
h_byte|=0x01;
sclk_1;
if(n!=7)
h_byte<<=1; }
l_byte=0;
for(n=0;n<4;n++)
{ sclk_0;
if(sdo_read)
l_byte|=0x01;
sclk_1;
if(n!=3)
l_byte<<=1; }
for(n=0;n<4;n++)
{ sclk_0;
sclk_1; }
nop();
nop();
cs_1; } 用单片机进行读取的,一直读不正确,显示的总是最大值4095,求解答,最后能给个程序或者时序分析图,,,谢谢
Johnsin Tao:
Hi
建议确认如下:
1. 电路, 可参考TI的EVM板: http://www.ti.com.cn/cn/lit/ug/slau103/slau103.pdf 第二十二页。当然输入可以不要运放,参考电源可以选用其他高精度电压源)
2. 控制时序,建议你参考datasheet: http://www.ti.com.cn/cn/lit/ds/symlink/tlv2542.pdf 第五、六页的时序(或其他),对你ADC的控制时序进行确认,然后依据这个修改程序,注意TLV2542是下降沿数据输出,以及你单片机的接口配置。
Yalong Fei:
回复 Johnsin Tao:
现在调试TLV2542也出现问题了,请问这个时序是复位是怎么一回事。有可行的程序吗。