TI论坛
直播中

王树林

8年用户 1751经验值
私信 关注
[问答]

TMP122读温度时序,单片机总是读不到值,为什么?


  • 我写的TMP122的读温度时序感觉有问题,单片机总是读不到值······
    #include"msp430x14x.h"
    #include"simple.h"
    int main(void)
    {
      uint i,temp=0,temph=0,templ=0;
      init();
      while(1)
      {
       _NOP();
       CS_L;
      for(i=0;i<8;i++)
      {
        SCK_H;
        _NOP();
        temph<<=1;
        if(SOI_IN&BIT0)
        {
          temph+=0X01;
        }
        //temph<<=1;
        SCK_L;
      }
      for(i=0;i<8;i++)
      {
        SCK_H;
        templ<<=1;
        _NOP();
        if(SOI_IN&BIT0)
        {
         templ+=0X01;
        }
       SCK_L;
      }
      CS_H;
      temp=(uint)temph;
      temp<<=8;
      temp+=(uint)(templ&0XF8);
      temp>>=7;
      show_1602(temp);
      }
    }

回帖(2)

文汝寒

2025-2-12 09:43:23
 附上TMP122命令的顺序,建议测个输出的波形图分析一下。CS , CLK, SO。每次传输16比特数据。
举报

时见栖鸦

2025-2-12 10:56:03
从您提供的代码片段来看,您正在尝试使用MSP430单片机读取TMP122温度传感器的数据。以下是一些可能导致单片机无法读取TMP122温度值的原因:

1. 硬件连接问题:请检查TMP122与MSP430单片机之间的硬件连接,确保所有引脚都正确连接,包括数据线、时钟线和片选线。

2. 片选信号(CS):在您的代码中,您使用了`CS_L`来激活TMP122。请确保在读取数据之前,片选信号已经正确设置为低电平(CS_L)。

3. 时钟信号(SCK):请检查您的时钟信号生成是否正确。在您的代码中,您使用了`SCK_H`来生成时钟信号。请确保时钟信号的频率和周期符合TMP122的要求。

4. 数据线(SOI):请检查您的数据线(SOI)是否正确连接,并且确保在读取数据时,数据线上的信号能够正确传递。

5. 代码逻辑问题:您的代码中使用了`temph`和`templ`来存储温度值的高位和低位。但是,您没有将这两个值组合起来,也没有将它们转换为实际的温度值。您需要将这两个值组合起来,并根据TMP122的数据手册将它们转换为实际的温度值。

6. 调试:您可以使用调试工具(如仿真器)来检查您的代码在运行过程中的行为,以便找到可能的问题所在。

综上所述,您需要检查硬件连接、时钟信号、数据线以及代码逻辑,以确保单片机能够正确读取TMP122的温度值。同时,使用调试工具可以帮助您更快地找到问题所在。
举报

更多回帖

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