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.

用户试用分享篇-【Ti SimpleLink SensorTag试用体验】+ SensorTag TMP007红外温度传感器服务加入BLE协议栈

Other Parts Discussed in Thread: TMP007

TMP007 - 带集成数学引擎的红外热电堆传感器,非接触式红外线温度传感

TMP007 是一款红外 (IR) 热电堆传感器,此传感器在无需接触物体的情况下测量这个物体的温度。 集成热电堆吸收物体在传感器感测范围内发出的红外能量。 热电堆电压被数字化,并且作为输入,连同芯片温度 (TDIE) 一起提供给集成数学引擎。 然后,数学引擎计算相应的物体温度。

缺省校准和热瞬态系数被存储在内置非易失性 ERPOM 存储器中。 可存储应用特定值来提升准确度。 可提供一个警报功能,并且此功能可在比较器或中断模式下设定。

TMP007 与 I2C 和 SMBus 接口兼容,并且可在一条总线上支持多达 8 个器件。 低功耗连同低运行电压是电池供电应用的理想选择。

TMP007 提供便捷的、非接触式热解决方案来测量经厂家校准的温度。 这款器件还适用于具有用户定制系统校准的工业和消费类应用。

TMP007特性:

 

数据表地址:

www.ti.com/.../tmp007.pdf

在原理图中的电路图

与处理器之间采用IIC接口通信。

芯片内部框图:

Pin脚定义:

SCL和SDA使用开漏输出,必须接上拉,典型值为10K。ALERT报警输出,也是采用开漏输出,比较接上拉。

IIC接口描述:

TMP007只能作为从机。

TMP007确定地址:

 

 

我们的电路上ADR1为1,ADR0为0;所以地址为1000100.

在程序就中就是对寄存器操作了。

在协议栈中添加TMP007服务,使用了TI-RTOS。直接加一个进程就可以了。

 

 

SensorTagTmp_createTask()就是为TMP007添加的任务的入口。

 

 

回调sensorTaskFxn函数是TMP007的任务处理函数。

 

 

ICall_registerApp()注册到BLE协议栈。sensorTaskInit()初始化任务。

 

 

IRTemp_addService()在协议栈中添加TMP007服务。

 

 

GATTServApp_RegisterService函数中的sensorAttrTable参数是一个数组,定义参照下表:

 

 

 

 

接着说sensorTaskInit()中的SensorTagTmp_reset(),这个初始化TMP007传感器。

然后回到任务函数中sensorTaskFxn

 

 

这里就是读取温度值,并传送到客户端。

sensorTmp007Enable是使能或禁止传感器。看寄存器02h的第12位。

 

 

sensorTmp007Read是读取传感器值。

 

首先读取状态,看是否转换完成。没有完成置一个错误的数据。转换完成,读取温度值。

 

 

读取后 sensorTmp007Enable(false);休眠传感器,节省功耗。

最后到我们最关键的一步,就是把读取的值上传到客户端。

IRTemp_setParameter上传函数。调用GATTServApp_ProcessCharCfg这个函数把数据发送出去。

读取值乘以0.03125 就是实际温度值。