TI论坛
直播中

刘军

7年用户 1426经验值
私信 关注
[问答]

TLV2542用单片机进行读取的,一直读不正确,为什么?


  • /*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,求解答,最后能给个程序或者时序分析图,,,谢谢

回帖(1)

李燕

6 天前
在您提供的代码片段中,您正在尝试使用单片机读取TLV2542 ADC的数据。如果读取结果不正确,可能有以下几个原因:

1. 硬件连接问题:请检查TLV2542与单片机之间的连接是否正确。确保数据线、时钟线和控制线都已正确连接。

2. 时序问题:TLV2542的时序要求非常严格。请确保您的代码中的时序与TLV2542的数据手册中的时序要求相匹配。特别是SCLK和CS的时序。

3. 初始化问题:在读取数据之前,您需要确保TLV2542已经正确初始化。根据您的代码,您已经进行了复位操作,但请确保复位操作正确。

4. 代码问题:您的代码片段不完整,无法确定是否存在代码错误。请检查您的代码,确保所有必要的操作都已经实现。

5. 电源问题:请确保TLV2542的电源电压和电流满足其规格要求。

6. 干扰问题:在某些情况下,电磁干扰可能会影响TLV2542的读取结果。请检查您的电路是否存在干扰源,并采取相应的抗干扰措施。

建议您按照以下步骤进行排查:

1. 检查硬件连接,确保所有连接都正确。
2. 检查代码时序,确保与TLV2542的数据手册中的时序要求相匹配。
3. 检查TLV2542的初始化过程,确保已经正确初始化。
4. 检查代码,确保所有必要的操作都已经实现。
5. 检查电源,确保TLV2542的电源电压和电流满足其规格要求。
6. 检查电路,确保不存在干扰源,并采取相应的抗干扰措施。

希望这些建议能帮助您解决问题。如果您需要进一步的帮助,请提供更详细的代码和硬件连接信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分