微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > tlv2545的数据SDO端输出都是高电平

tlv2545的数据SDO端输出都是高电平

时间:10-02 整理:3721RD 点击:

我参考电压和供电电压都是3.3V,AIN+接2V,AIN-接地,CS线和SLK接STM32端口,电路图和datasheet给的是一样的,对照时序图写的程序,但是我SDO端输出的全部是高电平。不知道是时序还是有问题还是芯片有问题呢

UINT16 AD_Read_Data(void){
 int i;
 UINT16 data = 0x0000;
       
        SCLK_High;
        CS_High;
        SCLK_Low;
        SCLK_High;
        CS_Low;
        delay_5us(2);//延迟10us

 for(i=0;i<12;i++)
 {
           SCLK_Low;
           data <<= 1;
           data = data|SDO;
           SCLK_High;
 }
              
        for(i=0;i<5;i++){
          SCLK_Low;
          SCLK_High;
        }
       
        delay_5us(2);//延迟10us
 
        CS_High;
        data&=0x0fff; 
 return data;
}

1.判定程序对不对最简单的方法是用示波器测试CS, SCLK,FS,SDO的波形,然后与datasheet提供的波形做比较,符合时序要求即可。(建议您用波形对照,因为TI在ADC控制上,是没有程序参考的)

2. 关于芯片方面,市面上的ADC芯片假货并不多,如果不放心,可以在TI网站上申请:

申请网站: www.ti.com.cn/.../buy.tsp

申请方法:www.ti.com.cn/.../gencontent.tsp

我用示波器比对过了,时序图和datasheet的差不多,但是还是出不来波形,您有没有碰到这样的情况呢,我最近又申请了两片,换个新的试试再说吧,谢了先~~

调出来了,还是程序的问题,换了一种思维。

UINT16 AD_Read_Data(void){

int i=0;

UINT16 data = 0x0000;

       CS_High;

       for(i=0;i<20;i++)

       {

         SCLK_High;

         if(i>7)

           {

             CS_Low;

             data <<= 1;

             if(SDO&0x01)

             data|=0x01;

           }

         SCLK_Low;

       }

       CS_High;

       data&=0x0fff;

       return data;

}

这个可以用~~~给后面的人吧,避免也出现我这样的情况。

调出来了,还是程序的问题,换了一种思维。

UINT16 AD_Read_Data(void){

int i=0;

UINT16 data = 0x0000;

       CS_High;

       for(i=0;i<20;i++)

       {

         SCLK_High;

         if(i>7)

           {

             CS_Low;

             data <<= 1;

             if(SDO&0x01)

             data|=0x01;

           }

         SCLK_Low;

       }

       CS_High;

       data&=0x0fff;

       return data;

}

这个可以用~~~给后面的人吧,避免也出现我这样的情况。

上一篇:DAC5682寄存器设置问题
下一篇:msc1210

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top