This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3200板子温度传感器如何使用

Other Parts Discussed in Thread: CC3200SDK, TMP006

我想找一个例程  看如何对温度传感器进行配置使用 
通过WIFI发给PC的服务器端显示
  • 请下载CC3200SDK,温度传感器的例程在C:\ti\CC3200SDK_1.3.0\cc3200-sdk\example\out_of_box

  • 您好,我参考了out of box这个例程

    我自己修改了部分程序如下:

    我把tmp006移植到 tcp_socket例程中的BsdTcpClient函数中

     

    显示不出温度数据       请问下如何更改

  • 参考I2C例程

    void main()
    {
    int iRetVal;
    // char acCmdStore[512];
    //---------------------------------Test------------------------------
    unsigned char ucData[2]; //测试读取TMP006 温度数据
    unsigned char ucData_BMA[6];
    ucData[0]=1;
    ucData_BMA[0]=2;
    //-------------------------------------------------------------------
    //
    // Initialize board configurations
    //
    BoardInit();

    //
    // Configure the pinmux settings for the peripherals exercised
    //
    PinMuxConfig();

    //
    // Configuring UART
    //
    InitTerm();

    //
    // I2C Init
    //
    I2C_IF_Open(I2C_MASTER_MODE_FST);

    //
    // Display the banner followed by the usage description
    //
    DisplayBanner(APP_NAME);
    // DisplayUsage();

    // I2C_IF_Write(0x41,&ucData[0],1,0); //地址指向温度寄存器
    I2C_IF_Write(0x41,ucData,1,0); //或者直接用 均可 地址指向温度寄存器
    I2C_IF_Write(0x18,&ucData_BMA[0],1,0);

    while(FOREVER)
    {
    //-------------------------------------Test TMP006-IIC--OK-----------------------------------------------
    // TMP006 Infrared Thermopile Sensor 红外非接触温度传感器 –40°C to +125°C
    // TMP006的温度值用14位(15:2)补码表示,第15位为符号位-0正 1负 + 14:7位是8位整数部分 + 6:2位是5位小数部分
    // 最小分辨率为2^-5=0.03125
    iRetVal = I2C_IF_Read(0x41,&ucData[0],2); //读取温度数据,数据为2个
    if(!iRetVal) //读取成功,处理温度值
    {
    unsigned short usTemp = (ucData[0]<<8) + ucData[1];
    if(!(usTemp & 0x8000)) //处理正温度 1000 0000 0000 0000
    {
    Report("当前温度是:%d." , usTemp>>7); //显示整数部分 6 : 2 位
    // Report("%02d℃\n\r" ,((usTemp&0x7f)*25)>>5); //显示小数部分(02d-两位) ---0111 11-11(0x7f)--- 先右移2位再除以2^5相当于*2^-5=0.03125 最后在*100取两位小数点数据
    Report("%03d℃\n\r" ,((usTemp&0x7f)*250)>>5); //OK 显示小数点3位
    // Report("%03d℃\n\r" ,(((usTemp&0x7f)>>2)>>5)*1000); //no OK 显示小数点3位 ((usTemp&0x7f)>>2)>>5)*100=(usTemp&0x7f)*25)>>5 化简后相等
    }
    }
    MAP_UtilsDelay(8000000); //延时0.5s
    //-------------------------------------------------------------------------------------------------------
    //-------------------------------------Test BMA222-IIC--OK-----------------------------------------------
    iRetVal = I2C_IF_Read(0x18,&ucData_BMA[0],6); //读取温度数据,数据为6个
    if(!iRetVal) //读取成功,处理数据
    {
    Report("x: %03d ", ucData_BMA[1]); //显示x轴加速度
    Report("y: %03d ", ucData_BMA[3]); //显示y轴加速度
    Report("z: %03d\n\r", ucData_BMA[5]); //显示z轴加速度
    }
    MAP_UtilsDelay(8000000);

  • 非常改写您的回答 我已解决获取温度的问题。但是我仍有一些疑问需要解答

    1.在TMP006.c文件中提供的GetRegisterValue(unsigned char ucRegAddr, unsigned short *pusRegValue)中的

    I2C_IF_ReadFrom(TMP006_DEV_ADDR, &ucRegAddr,1, &ucRegData[0], 2)  不是很明白这个函数的作用

    2.用你的代码I2C_IF_Write(0x41,ucData,1,0);   为什么要写数据进去再读呢     

  • 地址指向温度寄存器

  • 您好,请问你问题解决了吗,能通过TCP把温度数据发送给服务端了吗?能否分享一下源码?