TI中文支持网
TI专业的中文技术问题搜集分享网站

TMP102读取的数据不正确 且不怎么变化

工程师 你们好!

  最近在使用stm32单片机驱动tmp102温度传感器芯片,使用模拟I2C进行通信,获取的数据不对。以下是我的操作,请工程师们帮忙看下 我哪里配置不对。

1、主函数中1s循环获取温度数据

while(1)

{

       tmp102_val = ReadTemp();
        tmp102 = tmp102_val * 0.0625;
//        tmp102_val = TMP112_CHANGE(tmp102_val);
        
        printf("adc value: 0x%x\r\n",tmp102_val);
        printf("tmprature: %.2f\r\n",tmp102);
        WriteTmp102(0xE1);           //触发温度采集中断
        delay_ms(1000);

}

2、温度读写函数

#define  TMP102_ADDR            0x90
#define  TMP102_READ            0x00
#define  TMP102_WRITE            0x01
#define  TMP102_T_LOW            0x02
#define  TMP102_T_HIGH        0x03

uint16_t ReadTemp(void)
{
  uint8_t  valh=0;
  uint8_t  vall=0;
  uint16_t sum=0;
   IIC_Start();          //启动I2C总线  
  IIC_Send_Byte(TMP102_ADDR);   //发送器件从地址(写)    
    delay_us(1);
  IIC_Send_Byte(TMP102_READ);   //发送器件温度寄存器子地址    
    delay_us(1);    
    IIC_Stop();  
  IIC_Start();
  IIC_Send_Byte(TMP102_ADDR+1);   //发送器件从地址(读)  
  valh = IIC_Read_Byte(1); //读温度高位    
  vall = IIC_Read_Byte(0);  //读温度低位
   IIC_Stop();
   sum |= valh;
  sum <<=  8;
  sum |= vall;
//  sum >>=  4;

  return sum;
}

//config:配置参数   0x61-常规       0xE1-唤醒单次转换
uint8_t WriteTmp102(unsigned char config)
{
  IIC_Start();
   IIC_Send_Byte(TMP102_ADDR);     //发送器件从地址(写)

  IIC_Send_Byte(TMP102_WRITE);     //发送器件寄存器(配置)地址

  IIC_Send_Byte(config);     //配置寄存器的值 OS(0) R1(1) R0(1) F1(0) F0(0) POL(0) TM(0) SD(1)
                          // 比较模式,低保持
  IIC_Send_Byte(0xA0);     // CR1(1) CR0(0) AL(1) EM(0)  0  0  0  0    //4Hz
                    
   IIC_Stop();
   return 0;
}

3、串口打印的数据   【此数据为原始数据,没有经过右移】

[22:17:44.496] tmprature: 223.94

[22:17:44.496]

[22:17:45.499] adc value: 0xdff    

[22:17:45.499] tmprature: 223.94

[22:17:45.499]

[22:17:46.504] adc value: 0xdff

[22:17:46.504] tmprature: 223.94

[22:17:46.504]

[22:17:47.509] adc value: 0xdff

[22:17:47.509] tmprature: 223.94

[22:17:47.509]

[22:17:48.513] adc value: 0xdff

[22:17:48.513] tmprature: 223.94

[22:17:48.513]

[22:17:49.518] adc value: 0xdff

[22:17:49.518] tmprature: 223.94

[22:17:49.518]

Amy Luo:

回复 Dany W:

您好,

很高兴您的问题已经解决。

赞(0)
未经允许不得转载:TI中文支持网 » TMP102读取的数据不正确 且不怎么变化
分享到: 更多 (0)